LoginSignup
4
4

More than 5 years have passed since last update.

[ことクロ5]RoboVM on iOS現状調査(あるいは、Google対Oracle代理戦争調査)

Last updated at Posted at 2015-10-21

AltJavaの"Kotlinでスマートフォン・クロスプラットフォーム開発入門"、勝手に略して、"ことクロ"シリーズ その5。

今回は、RoboVMチームがIntelliJを採用するまでのJetBrains社による経緯解説 (One IDE to rule them all – RoboVM Studio)を参考に、RoboVM Studioの現状を淡々と探っていたのだが、どうやら、今週末からのOracle JavaOneの祭りネタに行き当たったようなので、Google対Oracle代理戦争、、と釣り記事にさせてもらう(ここ数年、似たようなネタがあったような気がするが...本件、Javaな人々の見解がほしい...)

FYI:RoboVM on iOSの今後、詳しくは、今週末のOracle JavaOne "RoboVM sessions"でってことらしい。

=> Googleが担ぐAndroidStudioのJetbrain社と、AndroidもiOSもOracle-JDKでっていうOracleの方向性に延長線上にあるRoboVM&Kotlinのネタなので、けっこうこの先が気になっている。

Cf.Javaの本家と分家の争訟について:
OracleとGoogleの判決文を斜め読む
Cf.SQLite代替のクロスプラットフォームデータベースRealmチームからの釣り記事(?):
(日本語訳)Androidには新しい言語が必要か? Kotlin JetBrainsが作ったJavaの代案

1) RoboVM Studioに関するRoboVMチームのyoutube

2015年9月の解説ビデオ:

  • XcoceとJVMが入っているMacにRoboVM Studioをインストールすることで、RoboVMプロジェクトを扱えるIntelliJ環境が動く。
  • Javaで書かれたiOSシュミレーターでのHelloWorldプログラムを実行。
  • プログラムは、org.robovm.apple.uikit...のライブラリをインポートしている(すなわち、AppleのUIkitを使用)
  • フリートライアル期間は14日

フリートライアル期間がもうちょっと長ければ、お試ししたいところだが・・・、もう少し基礎調査と考察をすすめることにする。

2) 先人からの情報

Java

8月時点でのRoboVMまとめ

RoboVM開発の基本形となる必要なjar(Cocoa Touchバインディング等)をクラスパスに入れて、javacコマンドでクラスファイルを生成し、robovmコマンドでターゲット機向けにビルドして実行する様子がわかる。引用:

javac -cp robovm-rt.jar:robovm-objc.jar:robovm-cocoatouch.jar:. HelloIOS.java

対象OSをiOS, CPUアーキテクチャをx86_64として指定してビルドする場合:

robovm -cp robovm-objc.jar:robovm-cocoatouch.jar:. -os ios -arch x86_64 -run HelloIOS

これらをgradleプラグインを利用したbuild.gradle ファイルで一括実行する書き方が参考になる。その他、RoboVM Studio1.5への言及もあり。
どうも10月に入ってRoboVMのライセンス体系が変わった関係か、環境導入方法が変わっているもようで、そのあたりは要調査。

Groovy

github上のGroovyでRoboVMを動かすためのGradleプロジェクトのbuild.gradleを活用した昨年末の事例。一部動きはしたが、イベントリスナーのコードが動かなかったとのこと。。

Kotlin

今年5月時点でRoboVMのサンプルをKotlin向けにフォークした事例@github
=> Gradleラッパーであるgradlewを使ってビルドできるようになっている。

3) 今夏のiOS9~今月のRobovm1.9まで

今夏のRoboVM Studio1.6リリース時点の投稿のビデオ(9分ちょい)が参考になる。
なるほど、IntelliJ相当のRoboVM StudioでAndroid向けのUI作って実行した後、XCodeでUI作って、それをRoboVM Studioにインポートするわけね。
あと、roboVMをObjective-C/Swift側に埋め込んだり・・・

そして、今月21日、JavaOne開催に合わせて、RoboVM Studio1.9リリースとのこと。バージョンアップ早すぎ。。。

4) 考察

Java/KotlinなどのJVM言語でクロスプラットフォーム開発、主な選択肢はどうやら3つ。

  • コントローラとモデルはJVM。UI制御とViewはAndroid/iOSで別々。iOS向けにはうすいラッパーを書いて、Swiftのコード等をJVMから呼び出す。
  • UI制御までJVM、Viewは個別。IntelliJ等でAndroidのViewを開発し、XCodeでiOSのViewを開発(RoboVMチームの推奨?)。
  • UI制御はJVM、Android&iOSのViewも抽象化された何ものかを活用しJVM言語で共通的に記述。それって、次のJavaFX?? あるいは、RxJava系の未来???

現実には、3つ目の選択肢にまともなものはまだ存在しないが、Oracle対Googleの訴訟ネタと絡んで、RoboVM2.0以降は、Oracleも関与してなど、とならないか、若干期待。。Oracle社は最近改めてスマートフォンとJavaについての言及をしているようだが、公式見解はJavaOne待ちってことで・・・(続く)。

追記 : 現時点での自分の取るだろうアプローチを以下に書いた。

Java資産を活かした、FRP的クロスプラットフォーム開発環境 一案

=> 文脈はだいぶ違うけれど、RoboVM&Kotlinも使いものになるなら、それなりに使うよ、と考えている。

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4