У меня проблема с программным обеспечением, которая соответствует функциональному подходу к программированию, но целевой рынок будет на ОС Android. Я спрашиваю, потому что есть функциональные языки, которые компилируются в виртуальную машину Java, но байт-код Dalvik! = Байт-код Java.
В качестве альтернативы, знаете ли вы, может ли dx
утилита разумно конвертировать .class
файлы, сгенерированные из функциональных языков, таких как Scala?
Изменить : Чтобы добавить немного полезности для сообщества, а также чтобы помочь мне выбрать лучше, могу я немного уточнить вопрос?
- Вы использовали альтернативные языки с Dalvik? Какие?
- С какими "проблемами" (проблемами) я могу столкнуться?
- Является ли производительность приемлемой? Под этим я подразумеваю, что приложение все еще чувствует себя отзывчивым к пользователю.
Я никогда не занимался разработкой мобильных телефонов, но я вырос на устройствах с ограниченными возможностями, и у меня нет иллюзий, что использование платформ нестандартных языков обходится дорого. Мне просто нужно знать, является ли стоимость такой, что я должен использовать мой подход на языке по умолчанию (т.е. применять функциональные принципы на языке ООП).
источник
Ответы:
В блоге Кристиана Нойкирхена под названием « Программирование для Android с помощью Scala» показано, как создавать программы для Scala для Android. Похоже,
dex
может справиться с Scala, но вам нужно использовать инструмент, такой как ProGuard, чтобы сократить библиотеку классов Scala до размера, потомуdex
что в противном случае будет импортировать всю среду выполнения Scala.Также ведется работа над программированием для Android с Erjang и Clojure .
источник
dex
в конце концов, он оптимизирован для работы не только с байт-кодом Java, но и с соглашениями о байт- кодах Java (вы увидите некоторое обсуждение этого в ссылках, которые я предоставил ранее), - но с ориентацией Дальвик В.М. напрямую. Возможно, это может закончиться быстрее, чем Java-dex
маршрут.Kawa - прекрасный, но малоизвестный вариант Scheme, который тихо существовал в течение многих лет и изначально работает как на JVM, так и на Dalvik . Поэтому, как и в Mirah, его выходные данные не содержат дополнительных виртуальных машин и включают только явно импортированные библиотеки. В Kawa есть множество стандартных макросов (включая некоторые специфичные для API-интерфейсов Android), которые обеспечивают хороший чистый синтаксис (при условии, что они не обращаются к круглым скобкам), и добавляет некоторые вкусные вкусности поверх Scheme, такие как «обещания» (lazy eval и futures). в одной). Язык достаточно надежный и хорошо документированный, и активно поддерживается и развивается с первых дней существования Java.
Java Advent Calendar суммирует достоинства Kawa с некоторыми информативными примерами и ссылками.
источник
Кроме скалы, я могу предложить вам взглянуть на мирах на Android, вот некоторые подробности: http://threebrothers.org/brendan/blog/strange-loop-2011-mirah-for-android-development/
Так что же делает этот подход «лучше», чем другие языки? Mirah - это статический типизированный язык, похожий на ruby. Который допускает некоторый функциональный стиль, возможно, лучше, чем java. Обычно «портирование» языка на android проблематично, потому что вам тоже нужно портировать стандартную библиотеку. Мира избегает этого, избегая стандартной библиотеки. В ссылочном материале есть хороший обзор опыта REAL WORLD по запуску миры на андроиде и как это получилось. (попробуй 2)
источник
На Clojure было много движений на Android ( https://github.com/clojure-android/neko ) Neko .
Есть проблемы производительности, связанные с Dalvik VM и Clojure Compiler; эти проблемы постепенно решаются.
Презентация о текущем (июль 2015 г.) статусе: https://www.youtube.com/watch?v=mVXTcAEKgF8&index=9&list=PLZdCLR02grLoBx0Y5ZrpdmLxc160PIwzQ
источник
Это еще не совсем там, но Мигель де Иказа, парень, который знает кое-что о VM Davlik, говорит: « F # для дроидов есть в их списке дел ». Так что я бы сказал, что официальная посылка идет.
источник