SlideShare a Scribd company logo
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 @Override
11 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 @Override
22 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.git
cd robovm-sample-ios-app
mvn 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

More Related Content

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