Android: альтернативы java


Java – действительно хороший, простой и стабильный язык. Код, написанный десять лет назад будет не только работать на современных JVM, но должен компилироваться.

Выбор разработчиков андроида в качестве языка программирования java вполне понятен: популярная платформа, managed code, множество готовых библиотек, понятный и простой код.

Я последнее время стал часто задумываться сколько времени я трачу на написание рутинного кода (самый яркий пример – обычные entity, коллбеки в которых всего 1 строчка). При всей стройности языка мне не устраивает его зашумлённость длинными конструкциями, многословностью, потенциальной возможности нарваться на NPE(это я полнял благодаря Kotlin)

Специфика разработки под андроид (по крайней мере у меня) – это быстро реализовать идею, выложить её в маркет. MVP если хотите :). И если есть достаточный фидбек, то можно допиливать, заниматься наращиванием функционала. С java это не так быстро как хотелось бы, даже используя все возможности не глупых IDE. Только теперь я понимаю почему большое количество программистов используют vim/emacs для разработки на scala.

А что есть?

Я разделю все языки под андроид на три группы:

  • Компилируемые статически типизированные – компилируются в байткод: java, c#, etc
  • Компилируемые, динамически тиризированные – языки с “плавающими” типами, которые определяются прямо в runtime: groovy, jruby, etc
  • В веб-контейнере – собственно html+js+css обёрнутые в иконку – такие приложения безуспешно стараются выглядить и вести себя как нативные

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

Да, я клоню к тому, что стоит выбирать между java, c#, scala, kotlin. Ничего не забыл?) Из всей этой четвёрки только java древний язык, как следствие очень скуп на красивые языковые конструкции

java

Тот самый язык с которого абсолютное большенство начинает свой путь в разработке. Ничего настраивать не надо, все работает из коробки, идеальная поддержка со стороны IDE. Надо заметить что компилирует ооочень быстро(по сравнению с другими кандидатами)

kotlin

Очень молодой язык, всё ещё не стибильный(на момент поста) от извесной питерской компании jet brains. Пока он компилируется только в Intellj Idea. Доступен на гитхабе. Писать на нём под андроид можно пока for fun, ибо переодически что то отваливается. Синтаксис - между java & scala. Навязывается явное указание может ли переменная быть null, что оказывается очень удобным. Раньше я думал что kotlin это про лаконичность, а оказывается ещё и про безопасность

scala

Набирающий популярность "академический" язык. Милион фишек, сложный синтаксис, большой runtime(поэтому без обрезания proguard'ом на телефон приложение ставитсья не будет), богатая система типов, и ещё много много хороших слов про неё :) Scala всосала в себя всё самое лучшее из современных языков. Плохо поддерживается в IDE, долго собирается, требует очень много памяти.

monotouch C#

Ребята из Xamarin на основе mono сделали компилятор monodroid, который на выходе создаёт dalvik байткод, что нереально круто. Также у них есть monotouch - тоже самое для iOS. Ничего не скажу как оно работает - годовая подписка 500$ на каждый продукт, поэтому не пробовал.