Я подумывал о создании приложения на Android с Scala вместо обычной Java (или эквивалент, который я предполагаю). Стоит ли это?
Любые проблемы и ненужные головные боли?
Я подумывал о создании приложения на Android с Scala вместо обычной Java (или эквивалент, который я предполагаю). Стоит ли это?
Любые проблемы и ненужные головные боли?
Работа с Scala должна быть в основном безболезненной, поскольку компилятор dex работает только с байт-кодом, что и делает Scala.
Самая большая проблема заключается в зависимости от scala -library, поскольку dex ожидает, что все будет в одном Jar. Лучше всего это обрабатывать с помощью Proguard (который также удалит неиспользуемый код и даст вам меньший исполняемый файл, идеально подходящий для мобильных устройств)
Текущей лучшей практикой является использование SBT с плагином Android; Он позаботится обо всем: http://github.com/jberkel/android-plugin
Если вы должны использовать Eclipse и плагин, поставляемый Google, тогда у вас будет нестандартная структура каталогов. Я также написал статью о том, как справиться с этим: http://www.assembla.com/wiki/show/scala-ide/Developing_for_Android
Но будьте осторожны... для этого требуется гораздо больше усилий!
Существует обсуждение беседы парней из bu.mp на Scala Days 2011.
Отказ от ответственности: хотя они много говорят о проблемах, с которыми они столкнулись, общий опыт был определенно положительным. Более того, это были проблемы одной конкретной команды, и они были незначительными.
Резюме:
В то время как он говорит о IDE тоже, я не думаю, что это проблема (посмотрите этот пост, о среде Scala), Ребята, которые делают Scala IDE и IntelliJ, делают свою работу хорошо, и поддержка IDE становится все лучше и лучше.
Для модульного тестирования можно использовать RoboSpecs (позволяет запускать модульные тесты внутри JVM, а не внутри эмулятора), что происходит быстрее.
Одна из самых больших проблем, на которые я наткнулся, - это ограничения формата dex (не более 65536 ссылок метода на файл dex), Scala библиотека просто не вписывается в лимиты, поэтому вам необходимо обходиться с помощью:
Некоторые ребята утверждают, что есть проблемы с IDE, но все быстро меняется: текущая версия IntelliJ IDEA 12 не только имеет хорошую поддержку Scala в качестве плагина, но также содержит UI Designer для Android. Кроме того, вы можете использовать Eclipse, который поддерживает как Android (от Google), так и Scala (by Typesafe) сторон. Android Studio (новая IDE на основе IDEA, которая была анонсирована в Google IO '13 и разработана Google) поддерживает плагины IDEA, таким образом Scala.
Мы обсуждали это на Scala Lift Off London в прошлую пятницу, и консенсус, казалось, заключался в том, что он работает нормально, пока вы избегаете Актеры. Кроме того, настоятельно рекомендуется sbt-android-plugin. В блоге Nathan Hamblen есть много сообщений на Android, а те, которые также отмечены Scala, имеют много проблем, которые стоит посмотреть.