Функціональні мови, які збираються в Android Dalvik VM? [зачинено]


16

У мене є проблема програмного забезпечення, яка відповідає функціональному підходу до програмування, але цільовий ринок буде на ОС Android. Я запитую, тому що є функціональні мови, які компілюються в VM Java, але байткод Dalvik! = Байт-код Java.

Або ви знаєте, чи dxможе утиліта інтелектуально перетворювати .classфайли, створені з таких функціональних мов, як Scala?

Редагувати : Щоб додати трохи більше корисності для спільноти, а також допомогти мені вибрати краще, чи можу я трохи уточнити питання?

  • Чи використовували ви якісь альтернативні мови з Dalvik? Котрий?
  • Які існують проблеми, з якими я можу зіткнутися?
  • Чи прийнятні показники? Маючи на увазі, я маю на увазі, що програма все ще відчуває відгуки користувачів.

Я ніколи не займався розробкою мобільних телефонів, але виріс на обмежених пристроях, і не маю ілюзії, що використання нестандартних мов з платформою коштує. Мені просто потрібно знати, чи є вартість такою, що я повинен взувати свій підхід до мови за замовчуванням (тобто застосовувати функціональні принципи в мові ООП).


Я оновив питання. Дякую @geekosaur за вашу первинну відповідь. Це була вихідна інформація, яку я шукав.
Берин Лорич

Я чула шепіт у кафе Haskell людей, які роблять це за допомогою FFI + Haskell + Courage. Я вважаю, що для цього існує бібліотека щодо github / hack
Daniel Gratzer

Відповіді:


7

Є повідомлення в блозі Крістіана Нокірхена під назвою Програмування для Android із Scala, де показано, як створювати програми Scala для Android. Схоже, dexможе працювати з Scala, але вам потрібно використовувати такий інструмент, як ProGuard, щоб скоротити бібліотеку класів Scala до розміру, оскільки dexв іншому випадку імпортується весь час виконання Scala.

Також триває робота над програмуванням Android з Erjang та Clojure .


1
Здається, що майже всі запропоновані вами варіанти мають серйозні покарання за виконання. Це говорить мені, що варіанти ще не дуже зрілі для простого часу. Може, через інший рік?
Берін Лорич

Поки ви не використовуєте великі частини бібліотеки класів Scala, не повинно бути суттєвого штрафу за продуктивність. Також ви можете автоматизувати весь процес за допомогою maven.
Кім

@Berin: Я думаю , що майбутній не використовують JVM-таргетинг мов - dexце все - таки оптимізовано для вирішення не тільки Java байткод , але і байткод Java - конвенція (ви побачите деякий обговорення цього в посиланнях, наданих раніше) - але націлювання Дальвік В.М. безпосередньо. Можливо, це може бути швидшим, ніж dexмаршрут Java .
geekosaur

1
А для тих, хто цікавиться: байткод VM Dalvik задокументований: опкоди , формати інструкцій . Я бачу, що деякі можливості для оптимізації візирних каналів неможливі, орієнтуючись на JVM одразу, не кажучи вже про розумніші оптимізації, використовуючи безпосередньо архітектуру Далвіка.
geekosaur

@Kim, у статті, яку я знайшов, сказано, що проблема продуктивності полягала в відмінностях між алгоритмами завантаження класів для Java та Dalvik. Якщо я тримаюся осторонь динамічних особливостей мови Scala, я повинен мати можливість уникати проблем із завантаженням класу. Це ж питання зачепило інші варіанти. Зараз все ще досить нове. Я все ще можу в кінцевому підсумку спробувати це на цьому проекті - це будь-який доказ концепції.
Берін Лорич

7

Kawa - це чудовий, але маловідомий варіант Схеми, який спокійно існує багато років і працює як на Спільницькому порталі, так і на Далвіку . Тому, подібно до Mirah, його вихід не включає зайвих VM і включає лише явно імпортні бібліотеки. Kawa має безліч стандартних макросів (включаючи деякі специфічні для Android API), які дозволяють створити симпатичний чистий синтаксис (якщо припустити, що це не проти дужок) і додає смачні смаколики на вершині схеми, як-от "обіцянки" (лінивий евал та ф'ючерси в одному). Мова є досить міцною і добре задокументованою і активно підтримується та розвивається з перших днів Яви.

Календар календарів Java підсумовує достоїнства Кави з деякими інформативними прикладами та посиланнями.


Вау, дякую, що вказали мені на Каву! Я свербіла, щоб зробити якісь розробки для Android не для Java, і це виглядає дійсно багатообіцяюче.
Евікатос

1

Окрім шкали, я можу запропонувати вам ознайомитись з мірою на андроїді, ось деякі деталі: http://threebrothers.org/brendan/blog/strange-loop-2011-mirah-for-android-development/

Отже, що робить цей підхід "кращим", ніж інші мови? Міра - це статична мова, схожа на рубін. Це дозволяє певний функціональний стиль, мабуть, краще, ніж java.Зазвичай "перенесення" мови на android є проблематичним, оскільки вам також потрібно портувати стандартну бібліотеку. Міра уникає цього, уникаючи мати стандартний ліб. У матеріалі, що посилається, є хороший огляд досвіду REAL WORLD, який працює з mirah на android та як це вийшло. (спробуйте 2)


1
Будь ласка , не переписуйте ту саму відповідь, все, що вам потрібно було зробити, щоб попросити не відповідати відповідь після її редагування, щоб позначити її на модераторну увагу.
янніс

0

На Clojure на Android було багато руху ( https://github.com/clojure-android/neko ) Neko .
Є питання щодо продуктивності, пов’язані з Далвіком В.М. та компілятором Clojure; ці питання повільно вирішуються.

Презентація про поточний стан (липень 2015 року): https://www.youtube.com/watch?v=mVXTcAEKgF8&index=9&list=PLZdCLR02grLoBx0Y5ZrpdmLxc160PIwzQ


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.