Android попадает в интересные времена. Google начал создавать свои собственные «премиум» версии операционной системы (ОС), Cyanogen прекратил разработку, и многие считают, что Android изменит название или форму в ближайшем будущем.
Так как будущее ОС остается неопределенным, то же относится и к языку, который разработчики используют для разработки платформы. Традиционно разработчики писали приложения для Android на Java , языке с давней историей и экосистемой, но это всегда чувствовалось к Android, отсутствию самых современных функций и громоздким для разработчиков из разных языков.
В этой статье я расскажу о некоторых из возможных претендентов и посмотрю, насколько легко, реалистично и правдоподобно им заменить Java-бегемота. Дополнительным бонусом для некоторых из этих языков является то, что вы часто можете использовать их для таргетинга на другие мобильные платформы.
Веб-просмотр запрещен
Долгосрочное решение для разработчиков состояло в том, чтобы использовать различные методы, чтобы превратить JavaScript и HTML в псевдо-приложения. В этот обзор я не включу ни одного из этих гибридных вариантов, таких как React Native , Cordova или NativeScript . Я не хочу начинать пламенные войны при разработке родных и гибридных приложений, но в этой статье меня интересуют только языки, которые могут стать «нативным» кодом.
Введите NDK
Google принял интересное решение, решив, что Java будет языком программирования для создания приложений для Android. Несмотря на то, что он переносим и популярен, он также ограничивает разработчиков, поскольку нет официальной поддержки использования более эффективных языков, таких как C или C ++.
Native Development Kit (NDK) — это обходной путь для этого ограничения, добавляющий поддержку для доступа к определенным аппаратным функциям с этими языками. Предназначенный для разработчиков как средство повторного использования устаревших библиотек, использующих C / C ++, это также распространенный способ использования других языков на Android. Многие из приведенных мною примеров используют этот путь, используя NDK для компиляции кода на C / C ++. Это не просто оправдание для экспериментов, но и открывает Android для большого мира разработчиков и библиотек.
Чтобы использовать API-интерфейсы и библиотеки Android, разработчику обычно приходится «связывать» C / C ++ с помощью кода-обертки и получать доступ к функциональности через этого посредника. Это не так плохо, как кажется, и требует минимального кода Java.
В прошлом лучше было избегать NDK, но в последние годы он стал лучше и эффективнее в использовании. В определенных случаях использования (особенно в играх) он более производительный, чем Java, но это все еще продвинутая территория с ловушками на этом пути.
Готовы к приключениям? Тогда начнем.
C, C ++ и C
А вы, наверное, догадались, что если вы хотите кодировать C и C ++ для Android, то Android Studio уже поддерживает его благодаря инструментам, заимствованным из CLion , IDE, также созданной создателями ядра Android Studio, JetBrains.
Если вы хотите узнать больше об использовании кода C / C ++ с Android, я рекомендую эту статью, чтобы вы начали .
Xamarin
Первоначально называемый Mono, а теперь принадлежащий Microsoft, Xamarin позволяет использовать C # на нескольких платформах, включая Android. Опять же, под капотом он использует NDK для компиляции C #, но дает вам доступ к большинству нативных компонентов и API. Модель ценообразования может вводить в заблуждение, поскольку теперь Xamarin является частью ценообразования Visual Studio, что означает, что вы платите за поддержку и поддержку инфраструктуры, но IDE бесплатна.
Если вам нравится C # (и каждый разработчик C #, с которым я когда-либо общался, любит язык), то это хороший вариант для вас.
Котлин
Kotlin — интересное предложение, один из самых доступных языков в разработке для Android и, скорее всего, заменит Java. Он создан JetBrains, который лежит в основе Android Studio, и совместим с Java, что означает, что вы также получаете доступ к официальным библиотекам Android.
Он хорошо работает с Android Studio и стремится быть знакомым Java-разработчикам, в то же время привнося преимущества других современных языков. Вы также можете скомпилировать его в код JavaScript, что делает его еще более интересным вариантом для тех, кто создает мультиплатформенные приложения.
Узнайте больше на сайте проекта .
Go Lang
Go — относительный новичок (2009), родившийся в Google, поэтому многие ожидали, что он станет жизнеспособным вариантом разработки Android. Он обладает функциями, популярными у современных разработчиков приложений, такими как возможность одновременного запуска экземпляров приложения (и отдельных его частей). Это быстро и лишено большого количества постороннего багажа, который приносят с собой старые языки. Этот набор функций сделал его популярным среди приложений, таких как Docker , но мне интересно, насколько они актуальны для разработки мобильных приложений.
Тем не менее, существуют пакеты, поддерживающие разработку для Android (и iOS), которые легко интегрировать в ваши приложения и идеально подходят для промежуточного программного обеспечения или серверных служб для обслуживания интерфейса приложения.
Сначала установите GoLang, а затем инструменты GoMobile и инициализируйте их. После этого у вас есть выбор создания изолированного приложения, которое соответствует целям, упомянутым выше, или вы привязываете части кода Go к нативному коду Java.
Хотите узнать больше? Затем прочитайте документацию проекта и убедитесь, что вы внимательно следите за каждым шагом, так же, как и при компиляции других языков. Go требует определенных соединений и инструментов для правильной настройки в вашей системе.
Dart.js
Не позволяйте имени обмануть вас, пока в Dart есть элементы JavaScript, язык компилируется и запускает свою собственную виртуальную машину (ВМ), очень похожую на Java. «Дарт» — еще одно недавнее изобретение Google (2011), которое после некоторого периода вне поля зрения вновь стало заменой Java «скорее всего, если это произойдет». Он понравится любому из вас, кто имеет опыт работы с JavaScript и хочет перейти на языки стиля C, так как содержит элементы обоих.
Для мобильной разработки существует набор расширений и инструментов под названием Flutter, который использует интересные и разные подходы. Он не использует собственные виджеты и компоненты или веб-представление. Вместо этого Flutter использует свои собственные методы для визуализации элементов экрана и запуска вашего кода. Это вносит сложность в проект (не обязательно в язык), но также делает его более очевидной заменой.
Flutter стремился сделать вашу жизнь максимально легкой с помощью плагинов и инструментов для Atom и IntelliJ . Для начала установите Dart.js , затем Flutter, а затем прочитайте руководство по проекту, чтобы начать свой первый проект.
стриж
Swift берет свое начало с Apple, и в настоящее время является предпочтительным языком для многих разработчиков iOS, так почему бы вам рассмотреть его для разработки Android? Язык стал открытым исходным кодом в декабре 2015 года и пользуется полной поддержкой Linux, поэтому разработчики задались вопросом, насколько правдоподобно было бы портировать на Android с его ядром, похожим на ядро Linux.
Запросы запросов и документация в проекте Swift, а также большое количество постов в блоге, вызвали волнение у этого потенциала. В хранилище Swift скрывается документ , который включает в себя выполнение традиционных шагов по использованию NDK для компиляции кода Swift в байт-код, понятный для Android. Прочитайте этот документ, и вы увидите, что есть много сложных и специфических шагов, и в моем прошлом опыте изменения в NDK от Google часто нарушали этот процесс. Даже когда вы все заработаете, вы застрянете с приложением, которое не может взаимодействовать ни с какими библиотеками Android (пока).
Несмотря на этот сложный процесс, разработчики по-прежнему полны решимости найти способ заставить Swift работать на Android, и я рекомендую вам прочитать эту серию постов в блоге от группы разработчиков, которые загрузили приложение Swift в магазин Google Play.
Компилятор элементов
RemObjects составляют серию инструментов, которые являются чем-то вроде гибридных предложений Xamarin и JetBrains. У них есть набор инструментов, которые позволяют разрабатывать на разных языках для кросс-платформенных целей. С точки зрения Android вы можете использовать Silver для написания Swift (да, действительно!) С доступом к нативным API. Среда IDE не так совершенна, как другие решения, и у меня был неоднозначный опыт ее работы, но это замечательный вариант, если она работает для вас.
Ржавчина
Rust происходит из Mozilla, и его популярность растет в последние годы (он выиграл самый любимый язык программирования 2016 года в опросе разработчиков Stack Overflow). Разработанный для более сложных систем, позволяющих одновременно запускать несколько процессов, он в первую очередь не подходит для мобильных приложений, но это не остановило людей.
Так как Rust является скомпилированным языком, запуск приложения Rust на Android аналогичен другим опциям в этой статье, но путь к нему не так сложен. Я нашел проект и инструкции здесь наиболее полезными, и процесс будет знаком любому из вас, кто пытался заставить другие скомпилированные языки работать на Android.
Будущее без кофеина
Кто знает, что Google (и другие) имеют в виду для будущего развития Android, но после прочтения этой статьи и небольшого количества экспериментов, я надеюсь, что вы все лучше подготовлены к тому, каким бы это ни было будущее.
Ниже приведены учебники, которые мы написали, чтобы помочь вам начать подготовку!