web-dev-qa-db-ja.com

AndroidのDalvik VMにコンパイルされる関数型言語?

プログラミングへの関数型アプローチに適合するソフトウェアの問題がありますが、ターゲット市場はAndroid OSです。JavaのVMにコンパイルする関数型言語があるので質問しますが、Dalvikバイトコード! = Javaバイトコード。

または、dxユーティリティがScalaなどの関数型言語から生成された.classファイルをインテリジェントに変換できるかどうかをご存知ですか?

編集:コミュニティにもう少し役立つ機能を追加し、選択を改善するために、質問を少し精緻化できますか?

  • Dalvikで別の言語を使用しましたか?どれ?
  • 遭遇する可能性のあるいくつかの「問題」(問題)は何ですか?
  • パフォーマンスは許容範囲ですか?つまり、アプリケーションはまだユーザーに応答していると感じています。

私は携帯電話の開発を行ったことはありませんが、制約のあるデバイスで育ったので、プラットフォームで非標準言語を使用することにコストがかかるという幻想はありません。コストが、デフォルトの言語へのアプローチを強化するほどのコストであるかどうかを知る必要があります(つまり、OOP言語で)関数原理を適用します)。

16
Berin Loritsch

Programming for Android with Scala と呼ばれるChristian Neukirchenによるブログ投稿があり、Scalaプログラムのビルド方法を示しています。 dexはScalaを処理できますが、dexはScalaをインポートしないため、ProGuardのようなツールを使用してScalaクラスライブラリをサイズまで削減する必要があります。ランタイム。

また、Android Erjang および Clojure を使用したプログラミング)に関する作業も進行中です。

7
geekosaur

Kawa は、Schemeの素敵ですがあまり知られていませんが、長年静かに存在し、JVMとDalvikの両方で実行されていますnatrative。したがって、Mirahと同様に、その出力には追加のVMが含まれず、明示的にインポートされたライブラリのみが含まれます。Kawaには、多くの標準マクロ(Android API )これは、すっきりした構文(括弧は嫌いではないと想定)になり、Schemeの上に "promises"(レイジーevalとfuturesを1つにまとめたもの)などのおいしいものを追加します。この言語は非常に堅牢で、十分に文書化されています、そしてJavaの初期の頃から積極的に維持され、進化してきました。

Javaアドベントカレンダー は、いくつかの有益な例とリンクでカワのメリットを要約しています。

7
bug

scalaの横で、Androidのmirahをご覧になることをお勧めします。詳細は次のとおりです。 http://threebrothers.org/brendan/blog/strange-loop-2011 -mirah-for-Android-development /

では、このアプローチが他の言語よりも「優れている」理由は何ですか? Mirahは、Rubyに似た静的型付き言語です。これにより、Javaよりも間違いなく優れた機能スタイルが可能になります。通常、言語をAndroidに「移植」することは、標準ライブラリも移植する必要があるため、問題があります。Mirahは、標準ライブラリを使用しないようにすることでこれを回避しています。参考資料には、Androidでmirahを実行したREAL WORLDの経験からの素晴らしい概要と、その結果がわかりました。(2を試してください)

1

Android( https://github.com/clojure-Android/nekoNeko のClojureには多くの動きがありました。
Dalvik VMおよびClojureコンパイラに関連するパフォーマンスの問題があります。これらの問題は徐々に解決されています。

現在(2015年7月)のステータスに関するプレゼンテーション: https://www.youtube.com/watch?v=mVXTcAEKgF8&index=9&list=PLZdCLR02grLoBx0Y5ZrpdmLxc160PIwzQ

0
huntar