Еще 10 лет назад смартфоны были далеко не у всех, а сегодня даже младшие школьники ходят с флагманскими моделями, и мы не представляем свою жизнь без этих «умных устройств». Между тем их основной функционал заключен в мобильных приложениях, которые выполняют множество разных функций. Приложения «Калькулятор», «Будильник», «Камера», «Заметки» и т.д. заменили сразу несколько самостоятельных устройств. Чтобы зайти в соцсети, не нужно включать компьютер, а чтобы оплатить покупку в магазине – открывать кошелек или доставать банковскую карту. Приложения брендов открывают доступ к персональным скидкам, позволяют копить бонусы или участвовать в закрытых распродажах и конкурсах. А мобильные игры помогают скоротать время в транспорте или в очереди. Все это дает гарантию, что профессия разработчика мобильных приложений востребована сегодня и останется таковой в ближайшей перспективе. 

Мобильные разработчики делятся на тех, кто пишет код под Android, и тех, кто программирует под iOS. Соответственно, они используют разные языки программирования и работают в соответствии с разными системными требованиями. В этом материале мы расскажем только о первой ОС и выясним, на каком языке пишут приложения для Android, которыми пользуются миллионы людей по всему миру, и которые обязательно должен знать каждый разработчик.

Краткая история мобильной разработки

Первый смартфон появился в далеком 1993 году благодаря компании IBM. Он уже имел книгу контактов, калькулятор, календарь и приложение, отображающее мировое время. Второй умный телефон был выпущен только в 2002 году и увековечил имя компании-разработчика Blackberry. Первые приложения для смартфонов разрабатывались на Java: это были уже упомянутые калькуляторы и календари, а также несложные игры. 

В октябре 2008 года Google выпустила свой первый коммерческий Android-смартфон. Изначально функционал новой операционной системы предполагал удобный доступ к сервисам Google (почте, поиску, картам и YouTube), и этим выгодно отличался от первых iPhone. 

Всего через 1,5 года количество загрузок приложений через Android Market (сегодня – Play Маркет) превысило 1 миллиард, и этот показатель предопределил будущий успех. «Красивые виджеты» в 2011 году стали первым платным приложением, которое пользователи скачали миллиард раз. Instagram вскоре после своего запуска в 2012 году получил 38 миллионов скачиваний за 3 месяца.

Сегодня увеличилось не только количество мобильных приложений, но и языков программирования, которые используются для их создания. Далее разберемся, при написании на каком языке приложения на Андроид будут работать корректно и правильно: что выбрать, чтобы программировать игры или написать свой «Калькулятор». 

Мобильная разработка сегодня: на каких языках программирования пишут игры и приложения

Современный пользователь взаимодействует со своим смартфоном в среднем чуть больше 4,5 часов ежедневно. При этом 86% поисковых запросов вводятся с портативного устройства, и этот показатель будет расти. Ассортимент мобильных приложений поражает воображение: чем бы вы ни захотели заняться, под ваши потребности в Play Маркет уже есть для вас несколько десятков предложений. 

Игры

Мобильные игры сегодня переживают эпоху своего расцвета. В смартфоны перекочевали карточные пасьянсы, десктопные шутеры и гонки со сложной графикой и другие развлекательные проекты. Кроме того, появились игровые проекты, изначально разработанные под Android и iOS (первой была Angry Birds). В зависимости от сложности и функционала мобильные игры создаются разными способами.

Отвечая на вопрос, на каком языке пишут игры для Андроид, рассмотрим несколько движков, без которых процесс программирования невозможен.

Unity

Самый популярный игровой движок Unity позволяет создать игру, которая одинаково хорошо «пойдет» на Android и десктопе, а также на PlayStation или Xbox – всего поддерживаются больше 20 платформ. Его интерфейс состоит из нескольких окон, поэтому можно проводить отладку будущей игры непосредственно в редакторе. Движок работает на C# и поддерживает модификацию JavaScript. Возможностей бесплатной версии достаточно, чтобы собрать свою игру для некоммерческого использования.

Unreal Engine

Мощный движок для работы над играми со сложной графикой. Правда, профессиональная версия обойдется в немалую сумму, но ее инструментарий стоит того. Unreal Engine работает на C++ и позволяет создавать красивые сцены с качественным рендерингом.

Corona SDK

Еще один кроссплатформенный движок для мобильных 2D-игр. Работать с ним достаточно просто и комфортно, поэтому подходит для новичков. Платформа использует язык программирования Lua, который старше Java, но менее известный. У него есть преимущества (несложный синтаксис, динамическая типизация и удобство создания программной прослойки между движком и оболочкой). Последнее, кстати, и предопределило его востребованность в мобильной разработке.

Cocos2d-x

Еще один движок, используемый крупными игровыми студиями. Работает на основе контейнеров (спрайтов), управление которыми происходит с помощью программного кода на C++, Lua или JavaScript.

libGDX

Кроссплатформенный фреймворк поддерживает как двухмерные, так и трехмерные игры. Он написан на Java и предлагает создавать проекты тоже на этом языке. Но, по большому счету, можно работать с любым языком программирования, который запускается на Java-машине (например, Groovy, Scala или Python). 

Если вы хотите посвятить себя разработке мобильных игр для Android, выбирайте между C# и C++, можно также добавить Lua или JavaScript. Но отталкивайтесь от платформы, на которой будете работать. В следующем разделе обратимся к вопросу, на каком языке Android-приложения пишутся в крупных студиях, и на какой SDK (Android Studio и т.д.) ведется разработка.

Языки программирования для приложений на Android

Разработчики мобильных приложений делятся на тех, кто хочет помогать брендам, и тех, кто реализует собственный проект. Вне зависимости от цели такие специалисты должны знать языки программирования. Какие из них обязательны для изучения – разбираемся далее.

Java долгое время был первым и единственным языком для Android-программирования. Все официальные курсы и обучающие документы основаны на нем, притом, что Google признал официальным языком разработки Kotlin. Это красивый и мощный инструмент для создания разноплановых приложений, поэтому он до сих пор обязателен для изучения. Но Java – не самый простой язык программирования, и этот факт нужно учитывать.

Kotlin во многом похож на Java и разрабатывался как его более простая и доступная альтернатива. У этого языка практически нет недостатков, зато огромные перспективы. При этом знатоков Kotlin пока не так много, и можно успеть занять эту нишу.

C++ – неспециализированный язык для Android-разработки, тем не менее, Android Studio поддерживает его, если использовать специальную среду NDK. С его помощью можно создавать высокоскоростные приложения, потребляющие небольшое количество ресурсов. Учитывая нагруженность современных смартфонов, эти качества могут стать конкурентными преимуществами. На C++ вряд ли получится написать приложение полностью, часто его используют в связке с Java.

C# мы уже упоминали, когда речь шла о разработке мобильных игр. Но и для Android-приложений у него есть много возможностей. C# вобрал в себя все преимущества Java, избавившись от многих недостатков. Под Android созданы многофункциональные и удобные среды программирования Xamarin Studio и Visual.

Связка HTML+CSS+JavaScript, казалось бы, относится к веб-программированию. Но если ваш проект – не узкоспециализированное приложение, а дополнение к сайту, например, то стоит освоить среду разработки PhoneGap. Она позволяет создать мобильное приложение на JavaScript с использованием HTML и CSS для разметки так же просто, как обычный сайт. 

Кстати, на чистом JavaScript можно писать гибридные приложения: для этого создают веб-приложение и «привязывают» его к движку браузера, который будет работать как мобильное приложение. 

Фреймворк React Native работает на JavaScript и позволяет создавать нативные приложения для Android быстрее, чем в Android Studio. Для работы с ним не нужно знать другие языки, кроме JS, а flexbox будет полезен для создания качественного UI.

SDK Flutter – отличный вариант для Android-разработки, так как с ее помощью легко создать кроссплатформенные приложения. Он отличается высокой производительностью, графическим движком и множеством инструментов, которые ускоряют разработку. Написанный код компилируется под нужную вам платформу, чем экономит время и ресурсы на разработку приложений. Flutter работает на языке программирования Dart, на который легко перейти, если вы знаете Java или JavaScript. 

Теперь вы знаете, на каком языке пишутся приложения для Android, и какие программы использует среднестатистический разработчик, чтобы написать идеальный код. Далее попытаемся заглянуть в будущее и узнать, что ждет рынок мобильной разработки в будущем.

Будущее и перспективы мобильной разработки

Еще 5 лет назад мобильным приложениям предрекали скорую смерть: считалось, что пользователи будут проводить больше времени в браузерах. Но этого не произошло, поэтому сфера продолжает развиваться. Что ждет мобильную разработку в ближайшем будущем? Естественно, на долгосрочную перспективу загадывать бессмысленно, так как эта область чрезвычайно динамична.

Распространение 5G

Возможность интернет-серфинга в 5G-сетях в 2022 году будет у каждого второго смартфона. Это значит, что пользователям будет доступна очень высокая скорость интернет-соединения. Она даст возможность воспроизводить качественное потоковое видео, упростит взаимодействие с VR и AR. Применение этой технологии наверняка найдут разработчики приложений для беспилотников (передача изображения с камеры дрона), облачных вычислений (скорость обработки данных), медицинских услуг (диагностика и консультирование по видеосвязи) и, конечно, в game-индустрии.

Искусственный интеллект и Machine Learning

Технологии машинного обучения и ИИ уже активно используются в повседневной жизни, и этот процесс продолжится. В частности, интеллектуальные камеры позволят создавать качественные снимки и видео, голосовые помощники освоят новые способности и т.д. Приложения смогут обрабатывать данные о пользователях и предлагать им рекомендации (например, о покупке или необходимости пройти медицинское обследование).

Технологии VR и AR

Виртуальная и дополненная реальность несколько лет назад была не более, чем развлечением, а сегодня эти технологии используются в самых разных сферах. Они помогают проводить обучение и знакомить пользователя со сложными устройствами, дают ощущение присутствия на концертах и фестивалях (что особенно актуально в коронавирусную эпоху) и т.д. 

Корпоративные мобильные приложения

Крупные корпорации уделяют огромное внимание развитию корпоративной культуры, чтобы их сотрудники с удовольствием приходили в офис и чувствовали себя частью единого целого. Мобильные приложения для внутреннего использования упрощают коммуникацию между коллегами (особенно представителями поколения Y, которые как раз начинают выходить на рынок труда)

Мгновенные мобильные приложения

Классические приложения занимают много памяти смартфона, а понять целесообразность их скачивания по скриншотам в Play Маркет бывает проблематично. Мгновенные приложения не тратят ресурсы устройства, но открывают доступ к полному функционалу. 

Носимые устройства

Умные браслеты, часы, кроссовки и весы – уже часть нашей жизни, но взаимодействовать с ними пока могут лишь избранные приложения. Работа над интеграцией носимых устройств и смартфонов продолжается и может дать впечатляющие результаты. Представьте, что ваши кроссовки смогут рассказать о плоскостопии и записать вас к ортопеду.

Это далеко не все тенденции разработки мобильных приложений. Предполагается, что они станут кроссплатформенными, более безопасными и конфиденциальными, научатся отделять правду от фейков и будут чаще использовать 3D-графику. Что из описанного будет реализовано раньше, а что – чуть позже, узнаем уже в ближайшие месяцы. В любом случае перед мобильными разработчиками открывается обширный фронт работ с интересными задачами. В следующем разделе расскажем, что должен знать Android-разработчик: на каких языках пишут, разрабатывают и поддерживают приложения джуны и сеньоры, а также какой стек технологий им нужен. 

Чего хотят работодатели

Android-разработчик – востребованная профессия, так как мобильное приложение мало создать, его нужно поддерживать, выпускать обновления и исправлять недоработки. Поэтому крупные компании предпочитают иметь такого специалиста в штате. Какими навыками должен обладать Android-разработчик?

Мы проанализировали несколько десятков вакансий на популярных сайтах для поиска работы и выяснили, с какими задачами придется столкнуться штатным разработчикам мобильных приложений:

  • Разрабатывать и обновлять приложения и клиентские интерфейсы
  • Проектировать базы данных
  • Настраивать CI/CD процессы
  • Покрывать код Unit и UI тестами
  • Разрабатывать техническую документацию
  • Создавать custom view и анимации
  • Вести проекты
  • Взаимодействовать с backend-разработчиками, аналитиками, дизайнерами и тестировщиками 

Эти обязанности в той или иной степени выполняют даже junior-разработчики, но финальные задачи определяет технический или командный лидер в зависимости от проекта, над которым работает отдел. 

Чтобы выполнять свою работу качественно, опытный сотрудник должен знать:

  • Языки программирования Java или Kotlin 
  • Android SDK 
  • AAC, Dagger 2, корутины
  • Принципы ООП и SOLID
  • Подходы Clean Architecture 
  • Шаблоны MVVM и MVP
  • Библиотеки Retrofit, Room, Dagger, RxJava
  • Принципы работы с SQLite
  • XML-разметку
  • Git
  • Тренды мобильной разработки и UI/UX-дизайна
  • Типы и структуры данных
  • Английский язык на уровне чтения технической документации

Этот список – практически максимально возможный, собранный из разных вакансий. Начинающему разработчику знать все сразу нереально, но для старта карьеры этого и не требуется. Большинство работодателей относят к минимальным требованиям для джунов хорошее знание языка программирования Kotlin или Java, умение работать в Android SDK и писать понятный код, открытый для тестирования. Также требуется знать особенности разработки приложений различных типов и быть способным к саморазвитию и самостоятельному поиску решений. Обязательно соблюдать сроки и четко выполнять техническое задание.

Вместо Java или Kotlin некоторые компании требуют владение языками C, C++ или C# - о сферах их применения мы говорили выше. Кстати, наличие высшего технического образования не так важно для работодателей, как практические навыки, – это упоминание встретилось нам только в каждом десятом описании вакансии. А вот наличие собственных проектов в Play Маркет важнее, такое условие указано в половине объявлений.

Где получить нужные навыки Android-разработчика

Начальные знания Android-разработки можно получить в онлайн-школе: пройти соответствующие курсы по программированию и собрать портфолио из учебных проектов. Вы будете системно осваивать новую профессию и регулярно практиковаться в программировании, а в конце обучения получите диплом и сможете составить грамотное резюме. 

Хорошую подготовку Android-разработчиков проводят крупные онлайн-школы, например, Skillbox: у них есть расширенная профессиональная программа и несколько менее продолжительных курсов. Освоить разработку мобильных приложений в различных SDK можно на уроках от itProger – они не займут много времени, но помогут отдельно развить нужный вам навык. Профессии Android-разработчик обучают и преподаватели школы SkillFactory, которые сделают из вас грамотного специалиста, даже если вы никогда не писали код.

Если у вас есть идея приложения, после окончания обучения можно попробовать ее реализовать. Получится вывести свой продукт на Play Маркет – замечательно, сможете доказать работодателю, на что вы способны. Ваше дальнейшее развитие как Android-разработчика зависит от вас, но помните, что хороший программист постоянно учится и следит за актуальными тенденциями своей сферы.