GoogleがJavaコードからObjective-Cコードに変換するツールを公開したので早速触ってみた。
xcodeを使わずにとりあえずコマンドラインから実行してみる。
広告
ソースは下記から落とし、makeすればbuild_resultにj2objcファイルが出来上がっていると思う。
j2objc – A Java to iOS Objective-C translation tool and runtime. – Google Project Hosting
git clone https://code.google.com/p/j2objc/ cd j2objc make
package org.fukata.j2objc; class Hoge { public static void main(String[] args) { System.out.println("Hello j2objc"); } } |
実際に変換してみる
~/usr/local/bin/j2objc \ -classpath /Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home/jre/lib/rt.jar \ -d ./result/ ./src/org/fukata/j2objc/Hoge.java
すると、resultディレクトリ以下に下記のような感じでファイルが生成されているはず。
result └── org └── fukata └── j2objc ├── Hoge.h └── Hoge.m
Hoge.h
// // Generated by the J2ObjC translator. DO NOT EDIT! // source: ./src/org/fukata/j2objc/Hoge.java // // Created by tatsuya on 9/19/12. // @class IOSObjectArray; #import "JreEmulation.h" @interface OrgFukataJ2objcHoge : NSObject { } @end |
Hoge.m
// // Generated by the J2ObjC translator. DO NOT EDIT! // source: ./src/org/fukata/j2objc/Hoge.java // // Created by tatsuya on 9/19/12. // #import "IOSObjectArray.h" #import "org/fukata/j2objc/Hoge.h" @implementation OrgFukataJ2objcHoge @end int main( int argc, const char *argv[] ) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; IOSObjectArray *args = JreEmulationMainArguments(argc, argv); NSLog(@"%@", @"Hello j2objc"); int exitCode = 0; [pool release]; return exitCode; } |
既存のjavaコードに対しても何かかけてみたくなる。
汎用性の高いライブラリ、コードをAndroid、iOSアプリで使いまわす時に便利なのかも。