• Key goal: support concurrent platform releases • Only support client-side development. • Only support business logic code, and stay far, far away from user interface APIs • It’s a transpiler and runtime for iOS apps • Translates Java to Obj-C during build • iOS Foundation Framework focus • Open Source, used by Google Inbox, Sheets, Drive… What is J2Objc?
support • Not a Java emulator • Compiled to object files, linked into app • Not for one-time source translation • Comments removed, output reformatted What J2Objc is not?
Xcode • Options similar to javac • $ j2objc -classpath <…> -sourcepath <…> -d output-dir HelloTest.java • To compile translated source: • Run j2objcc on command-line • Unknown options forwarded to clang • $ j2objcc -o hellotest -l junit output-dir/HelloTest.m How is it used?
3 months running in production with no issues • Improved code quality for core business logic • Data algorithms, firmware API, domain models + de/serialization Impact