32
JavaFXとRoboVMを使って iOS上で動くアプリを試してみた @tikemin

JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた

Embed Size (px)

Citation preview

Page 1: JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた

JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた

@tikemin

Page 2: JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた

BioGraphy

◇ とあるえすあいあー(@tikemin)

◇ 趣味:モノ作り(ソフト/ハード問わず)

▶ Webサービスをいくつか作ったり

◇ Javaの経験

▶ 「Javaってオブジェクト指向の勉強用言語でしょ?」程度...

▶ 3ヶ月前までJSPもServletも触った事が無い

Page 3: JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた

BioGraphy

◇ とあるえすあいあー(@tikemin)

◇ 趣味:モノ作り(ソフト/ハード問わず)

▶ Webサービスをいくつか作ったり

◇ Javaの経験

▶ 「Javaってオブジェクト指向の勉強用言語でしょ?」程度...

▶ 3ヶ月前までJSPもServletも触った事が無い

Page 4: JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた

ということでLTすることに

Page 5: JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた

そんな私が...

Page 6: JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた

本日扱うテーマは

Page 7: JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた

JavaFX+RoboVM

Page 8: JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた

JavaFX

◇ JavaFXとは

▶ Java用のGUIライブラリ(Swingの後継)

▶ リッチなUIが簡単に作れる(コンポーネントが充実)

▶ JavaFX 2.xとJavaFX 8では全然違うらしい...

▶ デザイン部分をCSSで書ける!?(その他機能多数...)

きっともっと詳しい人が後で説明してくれます

Page 9: JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた

JavaFX+RoboVM

Page 10: JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた

RoboVMとは?

◇ http://blog.robovm.org/

◇ JavaのソースコードをARMまたはx86のコードに変換することができるコンパイラ(トランスレーター)

▶ Titanium(js)

▶ Apache License v2.0

▶ Alpha software(0.0.3.1)

Page 11: JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた

つまり

Page 12: JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた

JavaFX+RoboVM

Page 13: JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた

JavaでリッチなUIのiOSアプリ開発が可能に!!

Page 14: JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた

これ結構嬉しくないですか?

Page 15: JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた

RoboVMとは?

◇ http://blog.robovm.org/

◇ JavaのソースコードをARMまたはx86のコードに変換することができるコンパイラ

▶ Titanium(js)/J2ObjC

▶ Apache License v2.0

▶ Alpha software(0.0.3.1)

Page 16: JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた

RoboVMを始めるなら

Page 17: JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた

eclipseを使いましょう

Page 18: JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた

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を使いましょう

Page 19: JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた

ということで...

Page 20: JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた

eclipseを使いましょう

Page 21: JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた

eclipseでの環境構築

◇ 「http://download.robovm.org/eclipse/」をpluginに追加するだけ

Page 22: JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた

ではさっそく

Page 23: JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた

Demo

Page 24: JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた

簡単なソースコード解説 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 }

Page 25: JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた

正直まだ微妙な所も多々...

Page 26: JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた

改善点

◇ 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.

今後の開発に期待

Page 27: JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた

Page 28: JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた

最近の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も提供している

Page 29: JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた

最近の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 なども利用可能

Page 30: JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた

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だとうまく動作しないので実機で

Page 31: JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた

まとめ

◇ JavaのソースコードをARMまたはx86のコードに変換することができるコンパイラ(トランスレーター)

◇ JavaFXなどと組み合わせる事でリッチなUI

◇ 開発にはeclipseを使うのが簡単

◇ OpenGLES等にも対応

Javaでiphoneアプリ開発