Подтвердить что ты не робот

Использует ли Scala на Android стоит? Много накладных расходов? Проблемы?

Я подумывал о создании приложения на Android с Scala вместо обычной Java (или эквивалент, который я предполагаю). Стоит ли это?

Любые проблемы и ненужные головные боли?

4b9b3361

Ответ 1

Работа с 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

Но будьте осторожны... для этого требуется гораздо больше усилий!

Ответ 2

Существует обсуждение беседы парней из bu.mp на Scala Days 2011.

Отказ от ответственности: хотя они много говорят о проблемах, с которыми они столкнулись, общий опыт был определенно положительным. Более того, это были проблемы одной конкретной команды, и они были незначительными.

Резюме:

  • Использование памяти. Закрытия едят память. Scala имеет замыкания повсюду. Хотя это не относительная большая проблема (накладные расходы памяти) на вашем настольном ПК, ее следует учитывать при разработке для мобильного телефона. Вы можете спросить: как они это решили? Они охотились на тесные петли, а затем оптимизировали их (переписаны без закрытия scala/java). (26-я ​​минута) Я думаю, что Java 8 с поддержкой родных замыканий облегчит эту проблему. Далее Scala релиз нацелит платформу java 8 на новый бэкэнд и нацелен на гораздо более высокую производительность. Обсуждение на дорожной карте здесь.
  • Более медленный компилятор (так как Михал Галпин сказал, что у них есть 15 секунд для компиляции Java-кода, около минуты для Scala и примерно порядка больше для Proguard, но обратите внимание, что это зависит от вашей базы кода и машин, но я предположите, что соотношение будет одинаковым). Это особенно раздражает, когда вы создаете пользовательский интерфейс, например, движущиеся пиксели, кнопки и т.д., И хотите быстро увидеть результат. (7-я минута)
  • Были проблемы с внутренними классами, которые довольно распространены для Android (подробнее см. в 23:00).
  • В средстве scala -java-collections были найдены редкие ошибки в scalac (scala компилятор). Проблемы были решены, написав это явно (я подозреваю, что это не так много шаблонов).

В то время как он говорит о IDE тоже, я не думаю, что это проблема (посмотрите этот пост, о среде Scala), Ребята, которые делают Scala IDE и IntelliJ, делают свою работу хорошо, и поддержка IDE становится все лучше и лучше.

Для модульного тестирования можно использовать RoboSpecs (позволяет запускать модульные тесты внутри JVM, а не внутри эмулятора), что происходит быстрее.

Одна из самых больших проблем, на которые я наткнулся, - это ограничения формата dex (не более 65536 ссылок метода на файл dex), Scala библиотека просто не вписывается в лимиты, поэтому вам необходимо обходиться с помощью:

  • с помощью Proguard, который будет обрезать жир из Scala lib. Но на моем ноутбуке он очень медленный, и он просто тратит время на разработку (но очень полезно, когда вы отправляете свое приложение в Google Play).
  • с использованием предустановленной библиотеки. Плохо то, что этот проект немного заброшен и содержит только версию 2.9.0-1.
  • предварительная установка 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.

Ответ 3

Мы обсуждали это на Scala Lift Off London в прошлую пятницу, и консенсус, казалось, заключался в том, что он работает нормально, пока вы избегаете Актеры. Кроме того, настоятельно рекомендуется sbt-android-plugin. В блоге Nathan Hamblen есть много сообщений на Android, а те, которые также отмечены Scala, имеют много проблем, которые стоит посмотреть.