- 8 языков программирования для Android-разработчика
- Авторизуйтесь
- 8 языков программирования для Android-разработчика
- Kotlin
- Python
- JavaScript
- Стоит ли становиться Android-разработчиком?
- Выводы
- 12 часов в шкуре Android разработчика глазами JS разработчика
- Постановка задачи
- Форма «Поиск»
- Форма «Результат»
- Разработка
- Awesome
- Резюме
- Что выбрать: мобильную или веб-разработку?
- Что сложнее?
- Что прибыльнее?
- Вопрос предпочтений
- Стоит только начать
8 языков программирования для Android-разработчика
Авторизуйтесь
8 языков программирования для Android-разработчика
Android-разработчики пишут не только на Java и Kotlin: в этой статье разберём 8 популярных языков программирования, которые подходят для разработки Андроид-приложений, расскажем, насколько востребована профессия и где её освоить.
Это официальный язык для разработки под Android, который поддерживается Android Studio и является основой для изучения Kotlin.
Вообще, когда начинаются споры о том, что лучше, Java или Kotlin, следует помнить, что Kotlin — это обёртка над Java. Чтобы понять документацию Kotlin и получить помощь в процессе разработки мобильных Android приложений, следует знать именно Java.
- Основные преимущества языка:
- больше материалов и легче найти информацию;
- большое комьюнити;
- среда Android Studio изначально заточена под работу с Java;
- зная Java, легко изучить Kotlin.
Kotlin
Ещё один официальный и не менее популярный язык. Также поддерживается Android Studio, характеризуется синтаксическим сахаром и предоставляет корутины, что упрощает асинхронную работу.
Синтаксис Java заочно предполагает более громоздкий код, чем в случае с Kotlin. Например, так Android-разработчик будет присваивать текст полю на этих двух языках программирования:
Java
Kotlin
helloTextView.text = «Hello world»
Как видим, Kotlin позволяет написать то же самое, но гораздо быстрее, с использованием меньшего количества строк.
Главные преимущества Kotlin в разработке под Android:
- лаконичный код;
- поддерживается Android Studio;
- предоставляет корутины;
- востребован из-за нехватки Kotlin-разработчиков.
Примечание Следующие языки рекомендуем рассматривать как альтернативные варианты, а не базу для Android разработки.
Python
Да, энтузиастам удалось приспособить один из самых популярных языков программирования под Андроид разработку. Реализовано это с помощью Kivy и BeeWare:
- Kivy — это open source библиотека для создания кроссплатформенных приложений, в том числе под Android и iOS.
- BeeWare — это набор UI-инструментов для создания нативных Android-приложений.
Будем откровенны, Android-разработчик, который пишет мобильные приложения на языке программирования Python, — большая редкость. В основном это что-то для себя или проекты молодых амбициозных фирм.
Если вы знаете Python, попробовать определённо стоит.
C-языки позиционируются как высокопроизводительные, и это важно, особенно если мы говорим о чём-то тяжеловесном вроде мобильной 3D-игры.
Но стоит сразу оговориться, что прибегнуть к Java всё-таки придётся: без этого языка вам не создать полноценное мобильное приложение. Android NDK позволит написать на C/C++ только часть приложения, например библиотеку, которую через Java можно подключить к программе.
JavaScript
А вот Android-разработка на JS более жизнеспособна.
С фреймворком React Native вы можете создавать мобильные приложения с многофункциональным мобильным UI. При этом такие программы полностью нативны, то есть не являются мобильными веб-приложениями. Всё потому, что React Native использует те же компоненты, что и простые приложения для Android.
- сборка быстрее, чем в Android Studio;
- для создания качественного UI есть flexbox;
- простая передача данных по сети с использованием API.
Flutter — относительно новая технология от Google, полноценный SDK, выпущенный в 2018 году.
По ряду параметров считается более удачным решением, чем React Native. Позволяет писать кроссплатформенные приложения, поэтому эффективен в разработке приложений для Android с общей базой кода на языке Dart.
Dart позиционируется как альтернатива JavaScript. Он компилируется в бинарный код, за счёт чего достигается высокая скорость выполнения операций. Вместо XML Dart использует так называемые деревья макетов.
Основные преимущества Dart:
- легко освоить, зная Java;
- высокая производительность программ;
- Hot Reload во Flutter — быстрая перезагрузка с сохранением состояния.
Программирование на Андроид с использованием C# подразумевает платформу Xamarin. С её помощью можно создавать одну логику приложения на C# для Android и iOS.
Схематическое представление работы Xamarin:
Как видно, пользовательский интерфейс разрабатывается индивидуально для обеих платформ, при этом бизнес-логика остаётся общей.
Но, как и в случае с языком программирования Python, Андроид разработчик, пишущий на C#, — это, скорее, исключение, чем правило. Такое решение подойдёт тем, кто знает язык и хочет попробовать себя в мобильной разработке.
Стоит ли становиться Android-разработчиком?
По данным IDC за конец 2020 года, доля ОС Android на рынке смартфонов составила 85%:
По всему миру насчитывается почти 3 миллиарда устройств на этой системе. Можно смело заявить, что Android-разработчик — профессия востребованная.
По данным hh.ru, в России насчитывается порядка 7000 соответствующих вакансий, а в США — 12 000, согласно LinkedIn.
На портале Glassdoor средняя зарплата Android-разработчика в России составляет 170 000 руб. в месяц, а в США — 96 000 $ годовых.
Кроме того, мобильная разработка позволяет также зарабатывать на собственных приложениях. Для наглядности: выручка маркета Google Play в 2020 году составила около 38,6 млрд долларов.
Выводы
Несмотря на весь спектр языков, обучение Android-программированию должно начинаться с Java и Kotlin, как двух официальных языков.
Начинающим Android-разработчикам и просто новичкам в программировании отлично подойдут онлайн-курсы Android, в ходе которых можно и теорию освоить, и поучаствовать в реальных проектах.
Источник
12 часов в шкуре Android разработчика глазами JS разработчика
Все началось с Kotlin. Случайно попалась статья про новый язык, что на нем можно писать под Android. Соприкоснувшись с темой, узнал что изначально приложения под Android пишутся на JAVA. Решил узнать на сколько трудоемко писать приложения под Android, в чем преимущества платформы на практике. Ведь по сути приложения JS и приложения Android выполняют одну и туже функцию. Заодно решил провести эксперимент. Что можно сделать за 12 часов, не зная что такое JAVA и тонкости разработки под Android, используя как помощник только Google. Пришла идея, которую развил в постановку задачи.
Постановка задачи
Взять из внешнего сервиса список всех Аэропортов мира и по коду Аэропорта получить от внешнего сервиса он-лайн табло с информацией о статусах рейсов. В 100% приложений, которые лежат в google play и реализуют такую функцию, нужно проходить цепочку действий, искать внутри приложения. Я лично, не нашел агрегатор, который позволял бы на первой странице ввести любой Аэропорт и получить его он-лайн табло. Идея и приложение само по себе простое, но это функция которой пользуется любой кто совершает перелет. Доступ к такой информации должен быть мгновенным.
Нашел потрясающий сервис, который открывает много возможности в части разработки под Авиацию. developer.flightstats.com Зарегистрировался получил на месяц бесплатный аккаунт.
Действовал интуитивно, полагаясь на свой опыт разработки в JavaScript. Набросал скетчи экранов в Photoshop. Составил требования к приложению.
Форма «Поиск»
Форма «Результат»
- Вывод данных в виде таблицы
- Сортировка по времени Прилет\Вылет
Разработка
Дальше был Я, Google и Android Studio.
Из опыта понимаю что код нужно организовывать. Интуитивно определил структуру проекта. Выделил следующие группы(Models, Stores, Views, Fields, API, Adapters) Двигало мной в этот момент бессознательное, вернее опыт. Дальше начал развлекаться с Layouts. Android Studio очень интуитивный редактор, это одна из причин которая подвигла попробовать написать Android приложение. Если kind of intellij idea – значит все комфортно. Плюс редактор лежит в бесплатном доступе, никаких ограничений, развивается и обновляется регулярно. Layouts сложились на раз два. Ни одного глюка за весь период работы, все на своих местах.
Момент который меня насторожил в самом начале, в 90% источниках, поиск и работа ведется по ID компонента. Обще принято, работа с ID это bad practice, в Android оказалось нормальной практикой. Погуглил, одно из лекарств DataBinding, отличная вещь, позволяет уйти от findViewById. Но, принцип в начальной стадии и еще год назад связь работала в одну сторону. Звучит странно, DataBinding но в одну сторону. Нужно было писать свою реализацию чтобы DataBinding был полноценный. Опираясь на реализации в JS, удивил концепт, который на текущий момент предлагает Data Binding Library(можно увидеть в большинстве случаев в сети), в ViewModel размещается логика по обработке handlers от визуальных компонент, которые в свою очередь могут иметь прямой доступ к данным которые лежат в ViewModel. С виду какой то гибрид контроллера и ViewModel.
Далее пошли вопросы коммуникации, то что нагуглилось с первого раза повергло в шок. Чтобы сделать обычный AJAX запрос нужно было тянуть строк 70 кода. Создавать фоновый процесс и там уже творить магию соединения, а потом через буфер собирать ответ. «Не может быть, чтобы было так сложно!» и продолжил поиск. В одном из результатов попалась статья про Retrofit2. С Retrofit стало все веселее и в целом жить можно в части коммуникаций. Определился с интерфейсами взаимодействия с сервером и начал сопрягать данные с визуальными компонентами.
С фильтром spinner(он же combobox) пришлось повозиться, возможно из-за неопытности. По ходу возникала куча вопросов от конвертации одного типа в другой до как реализован ООП в JAVA, но все элементарно находилось в stack overflow с ответами и примерами, плюс интуиция. В целом все шло как по маслу, кроме некоторых моментов. Чего не ожидал, что получу головную боль с датой. Почему то JAVA(или может быть это у меня так вышло) по defaul выдавала все в UTC.
В целом каких то совсем непреодолимых моментов не было из-за которых возникал полный стопор. Что не понял(зачем это сделали как dafault поведение?!) При изменении ориентации экрана(или конфигурации), ваша View которая присутствует на экране уничтожается и в новом повернутом экране заново пересоздается(фоном идет масштабная работа). Что порождает головную боль если у Вас в классе View(она же «Активность») есть динамические данные, они просто теряются при уничтожении View и с этим что-то надо делать. Дайте эту возможность, но опционально, для тех кто хочет подменять экраны при повороте. Интересно услышать мнение Android разработчика по этому поводу, возможно я не вижу всей картинки в целом.
Awesome
Потрясла производительность интерфейсов при большой нагрузке. Для теста сделал 8 spinner, в каждый забросил 4000 записей(в каждой записи еще набор свойств) и приложение даже не крякнуло. При такой ситуации, JS приложение напряглось бы, и если бы еще нужно было отображать все записи сразу, и иметь доступ работы с ними, то большая вероятность поймать зависание экрана или вообще «Опаньки». Пришлось бы тащить буферизацию вывода или решать как то алгоритмически. Но есть задачи когда нужен весь объем и сразу.
Многопоточность и фоновые процессы, на лету. Что в JS нужно можно делать с помощью webworkers, но там свои трудности, которые при разработке под Android решаются на раз, два. Причем фоном можно тягать действительно весомые объемы. Это огромное value для разработки off line приложений с сложными инженерными расчетами.
Приложение под браузер имеет свой потолок по производительности, если речь идет о высоко нагруженных интерфейсах(вывод одновременно большого объема данных) или когда фоном нужно делать объемные вычисления. Здесь перед Android приложениями снимаю шляпу. Но если Вам нужно делать что-то средне статистическое, то javascript возьмет свое скоростью разработки.
Резюме
Признаю, трудоемко писать под Android и требует в разы больше времени чем написание приложений на JS, но google интенсивно развивает и наращивает платформу. Неделя сидения за книгами и теорией Android разработки скорее всего убило бы идею попробовать сделать Android приложение и не дала бы навыков и опыта полученного за эти 12 часов. Реально столкнуться с проблемами и увидеть мир изнутри, получить первую оценку возможностей Android приложений и в будущем, столкнувшись с задачами трудно реализуемыми в JS, иметь в запасе знания куда можно еще бросить свой взгляд. Практика — быстрый путь к достижению навыков и опыта.
Что получилось: Android-приложение для просмотра он-лайн табло любого аэропорта мира.
Источник
Что выбрать: мобильную или веб-разработку?
Когда встает вопрос о начале карьеры разработчика, перед студентами открывается выбор: попытаться найти себя в вебе, либо начать создавать приложения для платформ iOS и Android. Оба направления имеют свои достоинства и недостатки, и порой запутаться в этом многообразии очень легко. Попробуем выяснить, какое из них актуальнее и открывает больше возможностей.
Несмотря на то, что популярностью пользуются оба направления, есть небольшой перевес в сторону веб-разработки: количество вакансий для создателей приложений на Android и iOS немного уступает таковым для веб-разработчиков, согласно данным Stack Overflow. В то же время заработная плата веб-разработчика ниже, чем у мобильных разработчиков, о чем свидетельствует статистика сервиса «Яндекс.Работа». Это обусловлено тем, что в веб-разработке доступно больше языков программирования: Java, C#, Go и многие другие, тогда как для той же iOS создание приложений в основном осуществляется с помощью Swift.
Что сложнее?
Мобильная разработка — это создание приложений для смартфонов и планшетов. И когда код становится сложнее, разработчику могут потребоваться расширенные математические знания в области алгоритмов, одного лишь языка программирования здесь будет недостаточно. В случае с веб-разработкой с упомянутыми трудностями можно не столкнуться: конечно, это направление не проще, однако за счет множества областей здесь может найти свое призвание даже новичок без опыта программирования. Вот только некоторые языки программирования, доступные веб-разработчику:
Что прибыльнее?
Если средний оклад веб-разработчика составляет около 100 000 рублей, то Android-разработчик запросто может получать и 115 000 рублей в месяц, а создатель приложений для iOS — около 130 000 рублей. Разница не слишком большая, но стоит учитывать, что это средние показатели по рынку. В отдельных стартапах заработная плата iOS-разработчика может превышать 200 000 рублей.
Вопрос предпочтений
Многие разработчики скептически относятся к мобильным гаджетам из-за небольшого экрана и отсутствия элементов управления вроде «мыши», поэтому когда встает выбор, отдают предпочтение десктопу. Другие не любят разрабатывать приложения для смартфонов на Android ввиду необходимости тестировать программы для нескольких групп устройств. С iOS в этом плане попроще, но разработка программ при этом все равно может вызвать трудности.
Стоит только начать
Заняться изучением мобильной или веб-разработки можно как самостоятельно или в университете, так и с помощью портала GeekBrains. Отличие в том, что последний поможет стать профи в выбранном направлении всего за год. Для этого сервис разработал два расширенных курса — веб-разработчик и mobile-разработчик. Курсы отличаются только длительностью и наполнением: в обоих случаях по итогам обучения выдается свидетельство установленного образца, а в процессе студенты проходят гарантированную стажировку длительностью два месяца. Курс мобильной разработки на месяц меньше — за это время проходит изучение двух уровней Java, Swift, Android.
- Общение с другими студентами и обратная связь
- Домашние задания
- Тестирования
- Гарантированная стажировка
- Участие в реальных проектах
Портал предоставляет как платные курсы, так и бесплатные. Платные курсы позволяют получить больше учебного материала и практики, тем более инвестиции в себя всегда окупаются лучше всех. Но если вы еще сомневаетесь, попробуйте бесплатные курсы, чтобы понять, нужно ли вам учиться программированию.
Источник