Я думал о создании приложения на Android с помощью Scala вместо обычной Java (или эквивалентной, я думаю). Стоит ли оно того?Использует Scala на Android стоит? Много накладных расходов? Проблемы?
Любые проблемы и ненужные головные боли?
Я думал о создании приложения на Android с помощью Scala вместо обычной Java (или эквивалентной, я думаю). Стоит ли оно того?Использует Scala на Android стоит? Много накладных расходов? Проблемы?
Любые проблемы и ненужные головные боли?
Работа с Scala должна быть в основном безболезненной, поскольку компилятор dex работает только с байт-кодом - это именно то, что производит Scala.
Ваша самая большая проблема заключается в зависимости от scala-библиотеки, поскольку dex ожидает, что все будет в одном Jar. Это лучше всего обращаться с Proguard (который также удалит неиспользуемый код и дать вам меньший исполняемый файл, который идеально подходит для мобильных устройств)
Текущая лучшая практика заключается в использовании SBT с Android плагин; Он позаботится обо всем за вас: http://github.com/jberkel/android-plugin
Если вы должны использовать Eclipse, и плагин, поставляемый Google, то вы будете иметь нестандартную структуру каталогов. Я также написал статью о том, как с этим справиться: http://www.assembla.com/wiki/show/scala-ide/Developing_for_Android
Но будьте осторожны ... для этого требуется гораздо больше усилий!
Основная проблема заключается в том, что использование библиотеки использует (например, myClass.getMethod()), поскольку proguard не может их обнаружить, вам нужно объявить о том, чтобы сохранить этот класс/функцию вручную. И некоторым библиотекам просто сложно заставить его работать с Scala/Proguard/Android, например. GData-Java-клиент. Или вам нужна небольшая настройка для сохранения файлов cenrtain после обработки proguard JAR, например. ical4j. В противном случае библиотеки обычно могли бы работать с этой комбинацией очень легко. –
Это правда! Будьте осторожны с отражением ... –
Мы обсуждали это в Scala Lift Off London в прошлую пятницу, и консенсус, казалось, заключался в том, что он работает нормально, пока вы избегаете Актеров. Кроме того, настоятельно рекомендуется использовать sbt-android-plugin. В блоге Натана Хамблена есть many posts on Android, а те, что отмечены как Scala, имеют много проблем, которые стоит посмотреть.
http://code.technically.us/post/824974287/rewiring-android-for-type-safe-layout-resources - это классное (если не второстепенное) преимущество для программирования для Android в Scala вместо этого Java. –
There is разговор ребятами из bu.mp на Scala Days 2011
Отказ от ответственности: Хотя они много говорят о проблемах, с которыми сталкиваются они, в целом опыт был определенно положительным. Более того, это были проблемы одной конкретной команды, и они были незначительными.
Резюме:
В то время как он говорит о Иде я тоже не думаю, что это проблема (смотрите this пост, о Scala среды). Ребята, которые делают Scala IDE и IntelliJ, делают свою работу хорошо, а поддержка IDE становится все лучше и лучше.
Для тестирования модулей можно использовать RoboSpecs (позволяет запускать модульные тесты внутри JVM, а не внутри эмулятора), что происходит быстрее.
Одна из самых больших проблем, которые я наткнулся на limitations формата dex (не более 65536 ссылок метода на файл dex). Библиотека Scala просто не вписывается в лимиты, поэтому вам необходимо обходиться следующим образом:
Некоторые ребята утверждающие, что есть проблемы с Иды, но вещи получать изменилось быстро: текущую версию IDEA IntelliJ 12 не только имеет хорошую поддержку Scala как плагин, но также содержит UI Designer для Android. Кроме того, вы можете использовать Eclipse, у которого есть поддержка от Android (от Google) и до Scala (by Typesafe) сторон. Android Studio (новая IDE на основе IDEA, которая была анонсирована в Google IO '13 и разработана Google) поддерживает плагины IDEA, таким образом Scala.
http://www.assembla.com/wiki/show/scala-ide/Developing_for_Android –