Upload
satoshi-takami
View
4.368
Download
3
Embed Size (px)
Citation preview
JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた
@tikemin
BioGraphy
◇ とあるえすあいあー(@tikemin)
◇ 趣味:モノ作り(ソフト/ハード問わず)
▶ Webサービスをいくつか作ったり
◇ Javaの経験
▶ 「Javaってオブジェクト指向の勉強用言語でしょ?」程度...
▶ 3ヶ月前までJSPもServletも触った事が無い
BioGraphy
◇ とあるえすあいあー(@tikemin)
◇ 趣味:モノ作り(ソフト/ハード問わず)
▶ Webサービスをいくつか作ったり
◇ Javaの経験
▶ 「Javaってオブジェクト指向の勉強用言語でしょ?」程度...
▶ 3ヶ月前までJSPもServletも触った事が無い
ということでLTすることに
そんな私が...
本日扱うテーマは
JavaFX+RoboVM
JavaFX
◇ JavaFXとは
▶ Java用のGUIライブラリ(Swingの後継)
▶ リッチなUIが簡単に作れる(コンポーネントが充実)
▶ JavaFX 2.xとJavaFX 8では全然違うらしい...
▶ デザイン部分をCSSで書ける!?(その他機能多数...)
きっともっと詳しい人が後で説明してくれます
JavaFX+RoboVM
RoboVMとは?
◇ http://blog.robovm.org/
◇ JavaのソースコードをARMまたはx86のコードに変換することができるコンパイラ(トランスレーター)
▶ Titanium(js)
▶ Apache License v2.0
▶ Alpha software(0.0.3.1)
つまり
JavaFX+RoboVM
JavaでリッチなUIのiOSアプリ開発が可能に!!
これ結構嬉しくないですか?
RoboVMとは?
◇ http://blog.robovm.org/
◇ JavaのソースコードをARMまたはx86のコードに変換することができるコンパイラ
▶ Titanium(js)/J2ObjC
▶ Apache License v2.0
▶ Alpha software(0.0.3.1)
RoboVMを始めるなら
eclipseを使いましょう
Why so eclipse?
◇ コマンドベースだと大変
◇ 例えば...
▶ もちろん専用のスクリプトを書いてもいいけど...
◇ RoboVMはeclipseのpluginを提供している
$javac -cp robovm-0.0.3/lib/robovm-rt.jar:robovm-0.0.3/lib/robovm-objc.jar:robovm-0.0.3/lib/robovm-cocoatouch.jar -d classes/ IOSDemo.java$robovm-0.0.3/bin/robovm -verbose -arch x86 -os ios -cp robovm-0.0.3/lib/robovm-objc.jar:robovm-0.0.3/lib/robovm-cocoatouch.jar:classes/ -run IOSDemo
素直にIDEを使いましょう
ということで...
eclipseを使いましょう
eclipseでの環境構築
◇ 「http://download.robovm.org/eclipse/」をpluginに追加するだけ
ではさっそく
Demo
簡単なソースコード解説 5 public class IOSDemo extends UIApplicationDelegate.Adapter {//ApplicationDeleget.Adapterの継承(iOS!) 6 7 private UIWindow window = null; 8 private int clickCount = 0; 9 10 @Override11 public boolean didFinishLaunching(UIApplication application,12 NSDictionary launchOptions) {//Androidっぽい13 14 //ボタンを生成15 final UIButton button = UIButton.fromType(UIButtonType.RoundedRect);16 button.setFrame(new CGRect(115.0f, 121.0f, 91.0f, 37.0f));17 button.setTitle("Click me!", UIControlState.Normal);18 19 //ボタンにイベントリスナー登録20 button.addOnTouchUpInsideListener(new UIControl.OnTouchUpInsideListener() {21 @Override22 public void onTouchUpInside(UIControl control, UIEvent event) {23 button.setTitle("Click #" + (++clickCount), UIControlState.Normal);24 }25 });26 27 //screenに部品を配置28 window = new UIWindow(UIScreen.getMainScreen().getBounds());29 window.setBackgroundColor(UIColor.lightGrayColor());30 window.addSubview(button);31 window.makeKeyAndVisible();32 33 return true;34 }35 36 public static void main(String[] args) {37 NSAutoreleasePool pool = new NSAutoreleasePool();38 UIApplication.main(args, null, IOSDemo.class);39 pool.drain();40 }41 }
正直まだ微妙な所も多々...
改善点
◇ Splash を自分で作る必要がある(実装レベルで)
▶ titanium等,Unity(有料)は画像さえ作ればOK
◇ アイコンの設定
▶ やり方が不明だれか教えてください(笑)
◇ まだまだAlpha版Warning! RoboVM is alpha software.It's not yet ready for production use. Expect to be bitten by bugs. If you find a bug, please report it.
今後の開発に期待
+α
最近のRoboVM
◇ Maven Pluginも提供開始
▶ 実機で動かす(プロビジョニング済のデバイスが必要)
git clone https://github.com/robovm/robovm-sample-ios-app.gitcd robovm-sample-ios-appmvn robovm:iphone-sim
mvn robovm:ios-device
MavenのPluginも提供している
最近のRoboVM
◇ Objective-Cのメソッドを呼び出し可能に
▶ Objective-C code
▶ Java code
label.alpha = 0.0;[UIControl animateWithDuration:0.5 animations:^{ label.alpha = 1.0;}];
label.setAlpha(0.0f);UIControl.animate(0.5f, new VoidBlock() { public void invoke() { label.setAlpha(1.0f); }});
Grand Central Dispatch なども利用可能
OpenGL ES
◇ iOS OpenGLES in Java on RoboVM(2013/2/15)
▶ なんと OpenGLESのコードが書けるように
I never thought a screen fading from black to red would look this great! It almost made me cry. :-)
Simulatorだとうまく動作しないので実機で
まとめ
◇ JavaのソースコードをARMまたはx86のコードに変換することができるコンパイラ(トランスレーター)
◇ JavaFXなどと組み合わせる事でリッチなUI
◇ 開発にはeclipseを使うのが簡単
◇ OpenGLES等にも対応
Javaでiphoneアプリ開発
Reference
◇ http://www.robovm.org/
◇ http://blog.robovm.org/
◇ http://www.slideshare.net/skrb/javafx-20-9810358