Что это простыми словами
Navigation Component — это дорожная карта внутри мобильного приложения. Она указывает, куда ведут кнопки и какие экраны следуют друг за другом.
Аналогия: представьте музей с десятками залов. Посетитель нажимает кнопку «Далее» — и ему нужно попасть в следующий зал, причём с правильными данными на табличке. Navigation Component — это схема музея, где прописано, из какого зала в какой ведёт дверь, что показывать на входе и как вернуться обратно. Без такой схемы разработчик вручную прописывает каждый переход, и это быстро превращается в путаницу.
Эта библиотека — часть набора инструментов Android Jetpack, который Google рекомендует для разработки Android-приложений.
Официальное определение
Теперь, когда суть понятна, вот как это описывают в вакансиях и документации. Эту формулировку вы будете встречать у заказчика, в резюме и в речи разработчиков — теперь вы понимаете, что за ней стоит.
«Navigation Component — библиотека для управления навигацией между destinations в Android-приложении, обеспечивающая type-safe передачу аргументов и централизованное описание navigation graph».
Разберём по словам. «Destinations» (дестинации) — это экраны или их части, между которыми перемещается пользователь. «Type-safe передача аргументов» значит, что данные из одного экрана на другой передаются с проверкой типа на этапе написания кода, а не в момент запуска — это ловит ошибки раньше. «Navigation graph» — визуальная схема всех экранов и связей между ними, которую можно посмотреть в редакторе, а не искать по коду.
Какую задачу решает
Когда в приложении два-три экрана, переходы можно прописать вручную. Но чем больше экранов, тем сложнее держать в голове, кто куда ведёт. Navigation Component убирает эту боль: вся навигация в одном месте, в виде схемы.
Ещё одна задача — передача данных между экранами. Например, пользователь выбрал товар, нажал «Купить», и на следующий экран нужно передать ID этого товара. Navigation Component делает это безопасно: если разработчик попытается передать не тот тип данных, код просто не скомпилируется, и ошибка не доберётся до пользователя.
Третья польза — поддержка deep links, то есть возможность открыть конкретный экран приложения по ссылке извне, например из уведомления или email.
К какой экосистеме относится
Язык — Kotlin (также может использоваться с Java, но Kotlin — стандарт для Android).
Фреймворк — Android Jetpack. Это набор библиотек от Google, которые помогают писать Android-приложения. Navigation Component — одна из ключевых библиотек этого набора.
Специальность — Android-разработчик (мобильная разработка под Android).
Рядом с Navigation Component в резюме часто встречаются другие библиотеки Jetpack: ViewModel (управление данными на экране), LiveData (отслеживание изменений данных), Room (локальная база данных), Hilt (внедрение зависимостей). Это признак того, что разработчик работает с современным Android-стеком.
Чем заменяется
Прямых аналогов у Navigation Component почти нет — это официальное решение от Google, и в новых проектах обычно используют именно его.
Альтернативы, которые встречаются реже:
Ручная навигация — разработчик сам вызывает переходы между экранами в коде, без схемы. Так делали до появления Navigation Component, и это до сих пор встречается в старых проектах или очень простых приложениях.
Сторонние библиотеки типа Cicerone (популярна в русскоязычном сообществе) — они решают ту же задачу, но по-своему. В новых проектах их почти не берут, потому что Navigation Component стал стандартом.
Переход между способами навигации дешёвый: если разработчик работал с ручной навигацией или с Cicerone, он освоит Navigation Component за несколько дней. Задача одна, меняется только подход.
Что не путать
Navigation Component ≠ Jetpack Compose Navigation. Jetpack Compose — это новый способ строить интерфейсы на Android, и у него своя реализация навигации. Они связаны по идее, но технически это разные вещи. Если в резюме указано «Jetpack Compose Navigation», человек работал с Compose, а не с классической Navigation Component.
Navigation Component ≠ маршрутизация на бэкенде. Навигация в приложении — это переключение экранов на стороне пользователя, а маршрутизация на сервере — это обработка запросов. Это разные задачи.
Navigation Component ≠ Jetpack как целое. Jetpack — это большой набор библиотек, а Navigation Component — лишь одна из них.
Насколько это важно при отборе
Короткий ответ: обычно это НЕ повод отбраковывать кандидата.
Navigation Component — это библиотека, а не фундаментальный навык. Если у кандидата есть опыт Android-разработки, но в резюме не указан Navigation Component, это не значит, что он не подходит. Возможно, он работал с более старыми проектами, где навигация была ручной, или использовал другие подходы. Освоить Navigation Component он сможет за считаные дни.
Правильный подход: смотрите на опыт с Android в целом. Если кандидат писал приложения и управлял переходами между экранами — неважно, каким способом, — он справится и с Navigation Component.
Когда всё же стоит обратить внимание: если вакансия требует работы с большим современным Android-проектом на Jetpack, а у кандидата вообще нет опыта с библиотеками Jetpack (ни Navigation Component, ни ViewModel, ни Room) — это повод спросить, с каким стеком он работал. Но отсутствие одной конкретной библиотеки — не причина отказывать.
Это общий ориентир. В разных компаниях требования отличаются, поэтому всегда сверяйтесь с текстом конкретной вакансии.