2013-07-26 9 views
18

私はScalaに本質的にJVMに依存するようにするための特別なプロパティがあるのか​​、それとも他のものの上に実行可能なのかどうか疑問に思っていました。 JVMの普遍性と継続的な改善の両方、そしてJavaとScalaの相互運用性がこの戦略的選択の強力な議論であることがわかります。しかし、私はこの理由から、compromisesが言語設計で作られたことを理解しています。scalaはJVMにどのくらい強く結びついていますか?

JVMのために衰退の日が来た場合、Scalaは船に降りるか、またはJVMの後に人生が存在する可能性がありますか?

+3

閉じるために投票し、ユーザーはこれが不適切な質問ですなぜ上の任意のコメントを持っていますか? – mitchus

+5

私は質問を個人的に面白いと思っているので、私は閉会に投票しませんでした - しかし、正直言って:プログラミングの問題はどこですか?おそらくSEプログラマーに適しています。 – Ingo

+0

私はakkaを読んで覚えているのは、OracleホットスポットまたはopenJDKでしか動作しますが、参照が見つかりません –

答えて

20

.NET runtime(中断した人、それに取り組んだ人)is improving the compiler backend for future versions of ScalaLLVM(スタックした)上でScalaを実行するプロジェクトがありました。さらに、Scala - > Javascriptのいくつかのバックエンド(例:scala js)があるので、ある意味ではJVMからScalaを解くことは可能です。

同時に、多くのScala APIはJava APIに依存しています。多くの最適化と内部動作がJVMに対して実装されています。 のメーリングリストに関する議論がありますScala with it's own virtual machineなど(例:this one)私の知る限り公式の声明では、非主流のJVMもサポートしています(例えばAvian)。それ自身のランタイムを持つよりも。このようにして、ScalaはiOSとAndroid(そしてもちろんPC)で動くことができます。 Simon Ochsenreither noted, Avian is not just yet-another JVMとして

が、ホットスポットに比べていくつかの明確な利点が付属しています:iPhone、Androidや他のARMターゲット

  • AOTのネイティブ、自己完結型、組み込み可能なバイナリ
  • ランを作成する

    • 能力およびJITコンパイルの両方が完全にサポートされています
    • テールコールと継続のサポート
    • わかりやすいコードベース
    • 応答メンテナ
    • オープン改善(値クラス、専門など)のための
  • +1

    Scalaは既にAndroid上でうまく動作しています。そして今の間は。 – pedrofurla

    +2

    @pedrofurla yep、それは方法によってJVMに基づいていることのもう一つの利点です –

    +0

    @ om-nom-nom最後の段落のいくつかの部分を書き直しました、私があなたのステートメントを保存することができた場合にチェックしてください – Beryllium

    関連する問題