2012-12-03 8 views
60

iOSターゲットの実行ファイルを作成できる、比較的新しい軽量JVM(Avian)があります。Avianを使用したiOSのスカラ

ウェブサイトには多すぎるドキュメントはありません(Googleでの検索はあまりありません)。 Avianを使用して、iOS上で実行される基本的なScalaプログラムを入手する方法に関するステップバイステップのチュートリアルを誰かが知っていたのかどうか疑問に思っていました。

+5

私は最初にいくつかのデモJavaアプリを試してみることをお勧めします。それを実行した後デモスカラアプリを試してみてください。理論的には、スカラコードを実行するための唯一の要件はscala-library.jarです。 – pedrofurla

+5

Scalaに関するいくつかの議論:https://groups.google.com/forum/?fromgroups=#!topic/avian/Hugny4JcnDw – madoki

+0

完全なアプリ(UIを含む)または混合された目的のテンプレート(UI )とJava(バックエンド)? – psychowood

答えて

4

コンパイル済みのScalaソースは、完全に標準クラスのファイルです。あなたは大きな変更なしでinstructions(埋め込みを探してください)をウェブサイト上で辿ることができます。ちょうどscala-library.jarをあなたのコードの依存として扱います。

数日前に完全なコンパイラとAvianで実行される標準ライブラリをブートストラップすることができました。

一部の部品は、エッジの周りにやや粗い場合があります。 g。 one mandatory fixがあります。これはScala(2.10.1)の次のリリースに含まれますが、2.10.0には含まれていません。今すぐプレイしたい場合は、2.10.1がリリースされるまで夜間のビルドを使用する必要があります。

追加の問題が発生した場合は、報告してください。

+0

しかし、iOS上で実行するには、標準クラスファイルをコンパイルするだけではなりません。ユーザーインターフェイスが必要で、アプリに署名する必要があります。私は実際にiOS上で動作する基本的な "hello world"を作り出すための基本的なテクニックを示すチュートリアルを探していました。もしそのような文書が存在すれば、それは好循環を生み出すことができると思います。それは多くの人が始めるのを助け、またAvianの人気を高めるでしょう。 – Eduardo

+0

ああ、申し訳ありません。それは間違っていた。 – soc

3

もう必要ないかもしれませんが、今度はOracle is making JavaFX open-source on iOS and Android

EDIT:Oracleは、JVMをリリースしないことを発表する記事を更新しました.JavaFX + Avianのように見えます。

+1

その記事も読んでいます: "数年前のJavaOne 2011では、AndroidとiOSデバイスで動作するJavaFXのデモを見せました。これは2つの重要な要素があります。/iOSとAndroid APIを使用するJavaFX(Glass&Prism)のグラフィックスレイヤーこれは私たちがオープンソーシングを行っているもので、それ以上のものではありません。これらのプラットフォームにはJVMを提供していませんし、どのような方法でも完全なソリューションではありません」 iOS上でJava/Scalaを実行するには、まだAvianなどが必要です。 –

+0

@MikeSpadaru:実際は記事の更新です。本当に悪いニュース:-( – Eduardo

2

iOS(実行されていない)上でJavaバイトコードを実行することは、そのJVMを実行するだけではありません。私の知る限り、iOSのメモリ管理では、実行可能メモリページをユーザモードで書き込み可能にすることはできません。基本的にJITコンパイルは禁止されています。 したがって、特定のJava VMでコンパイルされた(JavaまたはScalaのいずれかの)クラスを実行することができたとしても、このVMがiOSで実行可能にするためにAhead-Of-Timeコンパイルをどのようにサポートしているかを注意深くチェックします。 私は鳥類AOTがデスクトップでうまく動作するのを見てきました。 iOSの場合、プロジェクトはAOTエリアで有望に見えますが、自分で確認する必要があります。

+0

仮想マシン上で実行された場合、そのコードは実行可能メモリには存在しません(AvianはAOTを実際のマシン命令にコンパイルします)。 。 – Eduardo

+0

@Eduardoはい、AOTは書き込み可能な実行可能メモリを持たないことを可能にしているのですが、実行時にJITはバイトコードをネイティブにコンパイルしてメモリのどこかに保存する必要があります。そのメモリはiOS上ではもう実行することができませんそれはiOS上でJITが不可能な技術的な理由ですが、Xamarin.iOSがiOS上で「許可」されていることを知っているので、 – vladimir

+0

JITであっても、Javaバイトコードはマシン命令に変換されず、実行可能なメモリに格納されます。これは、Xamarinによって行われたライセンス処理についてです。これは、仮想マシン自体によって実行されます。 – Eduardo

7

iOSコンパイラに対するもう1つの代替JVMはRoboVMです。初期段階ではありますが、iOS向けにScalaをコンパイルする方法の例があげられます。

EDITこれは古い回答ですが、その時点で有効ですが、@ JamesMooreが指摘しているように、RoboVMはこれ以上ありません。非常に有望で、近い将来iOSでScalaコードを実行する方法になるかもしれません。Scala Native

+1

これは素晴らしい例です(iOSのRoboVMのScalaアプリ) https://gist.github.com/sebnozzi/5653898 – sventechie

+0

Robovmが死んでいる:https://robovm.com/robovm-winding-down/ –

+1

@ JamesMooreこれを私に思い出させてくれてありがとう。私はそれを反映する答えを更新しました。 – Eduardo

関連する問題