J2ObjCは,Googleが開発した,Javaコードを iOSの上で実行可能なObjective-Cコードに変換するオープンソースツールである。Javaで記述されたビジネスコードをAndroidとWeb, そしてiOSで共有することが目的だ。Webへの変換はGWTを使って行なう。UIコードは扱わないので,別途プラットフォーム毎に作成する必要がある。
J2ObjCの発表は2012年にまで遡る。その時点では,動作の詳細を示すためのアルファリリースだった。その後長い開発期間を経て1.0安定版となり,Inbox, Calendar, Docs, Sheets, Slides, Google My BusinessなどといったアプリケーションのiOSへの移植に使用された。並行して,対象とするJavaもJava 6からJava7, そしてJava 8へとアップグレードされている。“Java, iOS, Xcodeの現行と,そのひとつ前のメジャーリリースをサポートする”方針だと,プロジェクトに関わるGoogleエンジニアのTom Ball氏が説明してくれた。J2ObjCにはJUnit, Mockito, Gradle, Mavenが統合されている。 ネイティブメソッドを通じて,Objective-CコードのJavaコードへの埋め込みもサポートする。
Java 8のサポートレベルに関する我々の質問に対して,Ball氏は次のように答えてくれた。
“Java 8”をどう定義するかにもよりますが :-),ラムダ式やメソッ参照など,Java 8の新しい言語機能を追加でサポートしています。ただし,私たちのJREランタイムがAndroidのlibcoreライブラリをベースにしている都合上,Java 8で導入された新APIはサポートできていません。libcoreチームの進捗とは定期的に調整していますから,彼らが追加でサポートするJava 8については,間もなくJ2ObjeCのランタイムにも追加されます。
今後の開発について,Ball氏は次のように加えている。
J2ObjCは基本的に開発ツールですから,今後の計画は,それを利用するアプリ開発者の要望によって決まります。現在私たちが耳にしているのは,AppleがリリースするiOSの新機能を引き続きサポートすること,Swiftとの相互運用性の向上,Java 8 APIのサポート,ツールの統合性向上,ビルド時間の短縮などです。コンパイラ技術者としては,生成するコードの最適化や,報告を受けたバグの早急な修正なども重要だと思っています。
J2ObjCはApache License 2.0でライセンスされている。
この記事を評価
- 編集者評
- 編集長対応