Top Banner
Truly Native Java Apps on iOS with RoboVM Niklas Therning / @ntherning Trillian Mobile AB
17

Truly Native Java Apps on iOS with RoboVM - Jfokus

Jan 22, 2022

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Truly Native Java Apps on iOS with RoboVM - Jfokus

Truly Native

Java Apps on

iOS with

RoboVM

Niklas Therning / @ntherning

Trillian Mobile AB

Page 2: Truly Native Java Apps on iOS with RoboVM - Jfokus
Page 3: Truly Native Java Apps on iOS with RoboVM - Jfokus

The RoboVM project

Goal: Java on iOS

+ other JVM languages: Scala, Clojure, ...

Also supports OSX, Linux

Windows support in progress

Page 4: Truly Native Java Apps on iOS with RoboVM - Jfokus

The RoboVM project

Started in 2010 - open-sourced in Jan 2013

github.com/robovm

License allows closed source apps

www.robovm.com / @robovm

Page 5: Truly Native Java Apps on iOS with RoboVM - Jfokus

Features

Compiles bytecode into machine code AOT

Main.class RoboVM

compiler Main.class.o

Page 6: Truly Native Java Apps on iOS with RoboVM - Jfokus

Features

Runtime classes based on Android

java.lang.Object.class

java.lang.String.class

java.lang.Class.class

RoboVM

compiler

java.lang.Object.class.o

java.lang.String.class.o

java.lang.Class.class.o

Page 7: Truly Native Java Apps on iOS with RoboVM - Jfokus

Features

Supports Java Native Interface (JNI)

Linked statically

java.lang.Object.class.o

java.lang.String.class.o

java.lang.Class.class.o

Main.class.o libmyjni.a

Linker MyApp

Page 8: Truly Native Java Apps on iOS with RoboVM - Jfokus

Features

Java to native bridge (Bro)

Call native code without JNI

Supports structs, enums, callbacks

@Library("c")public class Abs {

static {

Bro.bind();

}

@Bridge static native int abs(int i);

public static void main(String[] args) {

System.out.println(abs(-100));

}

}

Binds to abs(int) in libc

Page 9: Truly Native Java Apps on iOS with RoboVM - Jfokus

Features

Bindings for CocoaTouch APIs (WIP)

Page 10: Truly Native Java Apps on iOS with RoboVM - Jfokus

Features

Integrates with popular Java tools

Leiningen

sbt

Page 11: Truly Native Java Apps on iOS with RoboVM - Jfokus

Features

JavaFX on iOS

Page 12: Truly Native Java Apps on iOS with RoboVM - Jfokus

Limitations

No runtime bytecode loading

No dynamic JNI (use static)

No debugging (yet)

~Java6 APIs (Java7 syntax)

Mac required for iOS apps

Page 13: Truly Native Java Apps on iOS with RoboVM - Jfokus

Close to beta quality

Current Status

RoboVM+libGDX - Java game development framework

libgdx.badlogicgames.com

~30 apps in App Store

Page 14: Truly Native Java Apps on iOS with RoboVM - Jfokus

Demo Time!

Page 15: Truly Native Java Apps on iOS with RoboVM - Jfokus

Future

Documentation

Debugging

Complete Cocoa Touch Bindings

Toolchain for Windows/Linux

Java8 APIs using OpenJDK

Java8 lambdas

Interface Builder integration

Page 17: Truly Native Java Apps on iOS with RoboVM - Jfokus

Questions?

www.robovm.com / @robovm