SlideShare a Scribd company logo
Universal Java
Using Java everywhere: server, desktop, mobile, IoT…
Disclaimer
• No advice
– This website contains general information about legal matters. The information is not advice, and should
not be treated as such.
• Limitation of warranties
– The legal information on this website is provided “as is” without any representations or warranties, express
or implied. The presenter makes no representations or warranties in relation to the legal information on
this website. Without prejudice to the generality of the foregoing paragraph, The presenter does not
warrant that:
• the legal information on this presentation will be constantly available, or available at all; or
• the legal information on this presentation is complete, true, accurate, up-to-date, or non-misleading.
• Professional assistance
– You must not rely on the information on this website as an alternative to legal advice from your attorney or
other professional legal services provider.
– If you have any specific questions about any legal matter you should consult your attorney or other
professional legal services provider. You should never delay seeking legal advice, disregard legal advice, or
commence or discontinue any legal action because of information on this website.
• Liability
– Nothing in this legal disclaimer will limit any of our liabilities in any way that is not permitted under
applicable law, or exclude any of our liabilities that may not be excluded under applicable law.
• This legal disclaimer
– This legal advice disclaimer is based on a free SEQ Legal form. SEQ Legal also supply premium forms
including email disclaimer forms
About the Speaker
Philippe Riand
– CTO of Trilog Group and Darwino
– Former application development
chief architect for IBM Collaboration
Services
– Chief architect, and inventor, of IBM
Domino XPages
– Author of many OpenNTF projects
About Darwino
A distributed app-development platform for the rapid creation of
collaborative applications (primarily Mobile, Cloud and IOT).
– Facilitates focus on the application logic;
– Encapsulates services within comprehensive and portable APIs;
– Incorporates an advanced JSON document store (atop of RDBMS),
both mobile and server;
– Enables synchronization (aka, replication) from Enterprise systems
and provides a seamless offline capability;
• Have a built-in, high fidelity, 2 way replication connector with IBM
Domino
– Java-based, and uses familiar constructs, UI.
Agenda
• Why Java?
• Java Pieces
• Writing Portable Code with Java
• Use Cases and Demos
• Conclusion
Why Java?
Agenda
Why Java?
• As a language/platform
– Java is the one of the most popular and used language
– Java virtually runs on every platforms, albeit some differences
• Server, desktops, mobile, IOT
– Java has the biggest ecosystem, set of libraries and development
tools
– The JVM and runtime libraries can run several other languages
• For the enterprise
– Scales well in term of team size
– Libraries are Enterprise level code (Apache, Google Core…)
– Strong security model
– Error handling prevents crashes
– Easy to find skills on the market
Java Popularity
http://www.codingdojo.com/blog/9-most-in-
demand-programming-languages-of-2016/ http://spectrum.ieee.org/computing/softwar
e/the-2015-top-ten-programming-
languages
http://redmonk.com/sogrady/2016/02/19/lang
uage-rankings-1-16/
Java Pieces
Or
What is and what makes Java
Agenda
Java Pieces
Languages
Execution
Environment
Runtime
Library
Java is, basically, made of 3 pieces that are intermingled
Source code
Class library JVM, Runtime Environment
Java Languages
• At the beginning, Java is a programming language
– Defined by the JLS, Java Language Specification
– Originally compiles to byte code, for the JVM
– Depends on a minimum runtime library (ex: String, Class…)
• Many scripting languages are running on the Java platform
– JavaScript (Nashorn), Ruby, Python…
– Byte code has been enhanced to better support scripting languages
• General purposes/functional languages
– Groovy, Scala, Kotlin, Clojure
– Even Swift (RemObject Silver), C#...
• The languages targeting the Java platform can share the libraries
and interact with each other
Main Execution Platform : Java JVM
• The stock Java compiler generates byte code
(“.class” files) that will be then executed by the
Java Virtual Machine. Class files can eventually
be aggregated into archive files (.jar)
• The byte code can be interpreted or on the fly
converted to machine code by the JVM (this is
called “just in time compiler”)
• There are many JVM implementations available
for a wide range of operating systems (IBM J9,
Oracle VM, …), as well as many other open
source implementations
– Oracle’s is now open source through OpenJDK
– IBM’s is being open sourced
Source Code
Class HelloWorld {
…
public static void main() {
…
}
}
0A F5 89 19 … 7F 3C
Byte Code
Java HelloWorld
JVM
Execution Platform : Android VM
• Google introduced a new byte code
format for Android called “dex” (Dalvik
Executable), optimized for mobile
devices
• It generates smaller files with byte
code that can be processed faster by
the JIT
– ART, released with Android 5.0 also now
pre-compiles the classes (AOT)
• The existing compiled libraries can be
used as is
• Has side effects with dynamic
languages, like Groovy, or Java libraries
containing resources
Source Code
Class HelloWorld {
…
public static void main() {
…
}
}
0A F5 89 19 … 7F 3C
Byte Code
Adb shell … HelloWorld
Dalvik/ART VM
07 6A 46 … 8F 33 15 AC
Dalvik JAR
Execution Platform: Transpilers and AOT
• Transpilers
– Java transpilers convert java source code to another language
• Google GWT converts Java to JavaScript
• J2OBJC converts Java to Objective “C”
• JUniversal… but abandoned by Microsoft
– Java class transpilers converts .class file to source code
• J2C, Haxe…
• Ahead of Time compilers – AOT
– AOT compilers statically generate machine code from either the
source code, or even better the compiled “.class” files
• Excelsior JET (Desktop: Windows, OSX & Linux)
• Multi OS Engine (MOE)
• Avian, RoboVM, GCJ, XMLVM…
Java Runtime Libraries
• Java comes with a set of classes ready to use, provided by a
runtime library implementation.
– Some are tied to the language (ex: String, Class, …). These classes
must be available in order to run a Java program.
– Some are just portable services (ex: java.io.*, java.net.*...). They are
not strictly part of the language specification, and may vary
between implementations.
– Some can be platform specific, or even JVM/target environment
specific (com.ibm.*, …)
• The use of a runtime library matters a lot as it defines the
available APIs and their behaviors
– Oracle JVM, Android… have different classes, or different
implementations of the same classes
The Landscape of Java Runtime Libraries
Apache
Harmony
OpenJDK
Android
Dalvik
Android ART
ART Next
GNU
Classpath
Environment
specific
- GWT, J2OBJC
- CodenameOne
- Avian
- JUniversal
- …
ART Next
- GJC
- Other OS projects
- Oracle Hotspot
- IBM J9
Sun JDK
- Android 1-4
- Android 5-6
- Android 7+
Writing Portable Java
Agenda
Writing Portable Java
• There are two kinds of code that must be separated
– The code that is platform independent (ex: business logic)
• Executed as is on all the target platforms
• Should only use common language and library characteristics
– The one that depends on the platform (ex: mobile UI)
• One set of code per platform
• That should be well isolated into specific projects
=> A typical portable application is made of several projects
– Shared code
– Target platform specific projects (or shell)
Native UIs Strategies
• Strategies for portable native APIs
– The minimum common denominator
• AWT
– UI frameworks written in Java
• Swing, JavaFX
• CodenameOne, Nuvos, …
– Advanced wrappers with extensions to supplement missing native
implementations
• SWT
• Directly use the native, not portable APIs
– Cocoa, Win32, Android, Qt…
• Using direct API calls: JNI, JNA
• Using advanced native API bridges: NAT/J, Bro
Use Case #1
Client & Server Reusable Code
Agenda
Trilog’s ProjExec: the Gantt Component
• Projects are accessed through different Pages/Component/APIs
– Have an existing Java Applet Gantt
• Need a new JavaScript implementation as Java Applet are deprecated
– Need a REST APIs exposing the business objects to remote clients
• Actions on a project carry a lot of complex business logic
– To provide the best user experience, the Gantt UI Component
should execute the business logic locally
– The same business logic should run on the server as well (REST APIs
and data integrity/security)
• We need a single implementation that runs everywhere
– Existing code is in the Java Applet
– Don’t want to rewrite it in JavaScript (cost, server technology, team
scalability…)
Trilog’s ProjExec: the Gantt Component
• Solution:
– The business logic is written in Java and well isolated in its own
project
• Use the common platform characteristics
• No external dependency
– Executes natively on the server and Applet, while it is
transpiled to JavaScript using GWT
• The exact same code is executed on both client and server
– The browser UI is native HTML/Javascript
• Actually, built using GWT and GXT, but straight HTML/JS can be used
– Opens the door to a pure mobile implementation
– Close to what Google does with ‘Inbox’
Trilog’s ProjExec: Gantt Component
Trilog’s ProjExec: the Gantt Component
• Lessons learned
– We needed a few wrappers that abstract runtime specific APIs
• JSON, Timezone…
– Integrates well with a maven based build
– Share the unit tests between the implementations
– Java VM & transpiled JavaScript can have slight decimal
calculation differences
– GWT 2.8 features a nice new JSInterop capability to be
leveraged
Use Case #2
Cross Platform Web UI
Agenda
Demo of a Multi Platform Web Hybrid Application
• Demo application targeting web browsers, Mobile and Desktop
– Application business logic shared, all in Java
– Core runtime libraries, including third party, all in Java
– Web technologies used for the application UI
– Mixed-in native UI for standard components (ex: settings dialog)
Use Case #3
Multi-Platform Native UI
Agenda
Pure Native UIs in Java
• Available Solutions
– CodenameOne
• Commercial and OpenSource product (GPL)
• Limited runtime library, cumbersome build and debugging process, no
interface builder…
– RoboVM
• Very efficient solution but no longer a supported product (killed by MS)
• There is a maintained branch on Github, mostly to support LibGDX:
https://github.com/MobiDevelop/robovm
– 1 Yr old code based, with missing features (debugger, interface builder…)
– We contributed some code (maven integration…)
– Multi OS Engine (aka Intel INDE or Intel MOE)
• Acquired by Intel in 2015 from Migeran
• Now fully open source, under the Apache 2.0 license
– https://github.com/multi-os-engine, https://multi-os-engine.org/
Open Source Multi OS Engine
• Features
– Targets iOS & Android, more to come!
– AOT & Android ART VM interpreter
– On Device Debugging Support
– Android studio integration
– Java to Native Binding NAT/J
• Automatic Native Binding Generation
• Access Objective-C Language Features in Java
– Android & iOS Interface Builder Integration
• On the work:
– Eclipse integration
– Maven integration
MOE Demo
Conclusion
Agenda
Other Areas for Java
• Java is part of IoT’s future
– Samsung ARTIK
• IDE powered by Eclipse Che
• Extensive Java SDK
– Intel MOE makes it possible to target IoT
• Easy for any POSIX compliant OS
– Google Brillo, Fluschia
• Highly portable to other systems
– Java transpilers targeting IoT devices
• C++ transpiler – to be released to darwino.org (OpenNTF)
• And Games…
– LibGDX
– jMonkeyEngine
Multi-platform Java: What Technologies to Use?
• Server
– JVM
• Desktop
– JVM
– AOT (MOE, Jet, RoboVM)
• Android
– Native Dalvik/ART VMs
• iOS
– AOT (MOE, RoboVM, Avian…)
– Transpiler (j2objc)
• HTML
– GWT (JSweet…)
• Oracle: Mobile OpenJDK 9 with “zero interpreter” for iOS. AOT
might be in progress
This is The end
Ad

More Related Content

What's hot (20)

DEV-1467 - Darwino
DEV-1467 - DarwinoDEV-1467 - Darwino
DEV-1467 - Darwino
Jesse Gallagher
 
Alfresco Digital Business Platform Builder Experience
Alfresco Digital Business Platform Builder ExperienceAlfresco Digital Business Platform Builder Experience
Alfresco Digital Business Platform Builder Experience
Ray Gauss
 
Dart Past Your Competition by Getting Your Digital Experience into Market Fas...
Dart Past Your Competition by Getting Your Digital Experience into Market Fas...Dart Past Your Competition by Getting Your Digital Experience into Market Fas...
Dart Past Your Competition by Getting Your Digital Experience into Market Fas...
Perficient, Inc.
 
The web - What it has, what it lacks and where it must go - Istanbul
The web - What it has, what it lacks and where it must go - IstanbulThe web - What it has, what it lacks and where it must go - Istanbul
The web - What it has, what it lacks and where it must go - Istanbul
Robert Nyman
 
Thoughts on Component Resuse
Thoughts on Component ResuseThoughts on Component Resuse
Thoughts on Component Resuse
Justin Edelson
 
SharePoint Development 101
SharePoint Development 101SharePoint Development 101
SharePoint Development 101
Greg Hurlman
 
Engage - Expanding XPages with Bootstrap Plugins for ultimate usability
Engage - Expanding XPages with Bootstrap Plugins for ultimate usabilityEngage - Expanding XPages with Bootstrap Plugins for ultimate usability
Engage - Expanding XPages with Bootstrap Plugins for ultimate usability
Johnny Oldenburger
 
A Minimalist’s Attempt at Building a Distributed Application
A Minimalist’s Attempt at Building a Distributed ApplicationA Minimalist’s Attempt at Building a Distributed Application
A Minimalist’s Attempt at Building a Distributed Application
David Hoerster
 
Build single page applications using AngularJS on AEM
Build single page applications using AngularJS on AEMBuild single page applications using AngularJS on AEM
Build single page applications using AngularJS on AEM
connectwebex
 
Client Vs. Server Rendering
Client Vs. Server RenderingClient Vs. Server Rendering
Client Vs. Server Rendering
David Amend
 
Why use Go for web development?
Why use Go for web development?Why use Go for web development?
Why use Go for web development?
Weng Wei
 
IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...
IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...
IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...
Serdar Basegmez
 
Java EE8 - by Kito Mann
Java EE8 - by Kito Mann Java EE8 - by Kito Mann
Java EE8 - by Kito Mann
Kile Niklawski
 
Responsive Websites and Grid-Based Layouts by Gabriel Walt
Responsive Websites and Grid-Based Layouts by Gabriel Walt Responsive Websites and Grid-Based Layouts by Gabriel Walt
Responsive Websites and Grid-Based Layouts by Gabriel Walt
AEM HUB
 
Sencha and Spring (Spring 2GX 2013)
Sencha and Spring (Spring 2GX 2013) Sencha and Spring (Spring 2GX 2013)
Sencha and Spring (Spring 2GX 2013)
Sencha
 
AppeX and JavaScript Support Enhancements in Cincom Smalltalk
AppeX and JavaScript Support Enhancements in Cincom SmalltalkAppeX and JavaScript Support Enhancements in Cincom Smalltalk
AppeX and JavaScript Support Enhancements in Cincom Smalltalk
ESUG
 
Spring Mvc
Spring MvcSpring Mvc
Spring Mvc
ifnu bima
 
Our First ADF Experience
Our First ADF ExperienceOur First ADF Experience
Our First ADF Experience
Hans De Bal
 
Introduction to Sightly and Sling Models
Introduction to Sightly and Sling ModelsIntroduction to Sightly and Sling Models
Introduction to Sightly and Sling Models
Stefano Celentano
 
Html5 Flyover
Html5 FlyoverHtml5 Flyover
Html5 Flyover
Skills Matter
 
Alfresco Digital Business Platform Builder Experience
Alfresco Digital Business Platform Builder ExperienceAlfresco Digital Business Platform Builder Experience
Alfresco Digital Business Platform Builder Experience
Ray Gauss
 
Dart Past Your Competition by Getting Your Digital Experience into Market Fas...
Dart Past Your Competition by Getting Your Digital Experience into Market Fas...Dart Past Your Competition by Getting Your Digital Experience into Market Fas...
Dart Past Your Competition by Getting Your Digital Experience into Market Fas...
Perficient, Inc.
 
The web - What it has, what it lacks and where it must go - Istanbul
The web - What it has, what it lacks and where it must go - IstanbulThe web - What it has, what it lacks and where it must go - Istanbul
The web - What it has, what it lacks and where it must go - Istanbul
Robert Nyman
 
Thoughts on Component Resuse
Thoughts on Component ResuseThoughts on Component Resuse
Thoughts on Component Resuse
Justin Edelson
 
SharePoint Development 101
SharePoint Development 101SharePoint Development 101
SharePoint Development 101
Greg Hurlman
 
Engage - Expanding XPages with Bootstrap Plugins for ultimate usability
Engage - Expanding XPages with Bootstrap Plugins for ultimate usabilityEngage - Expanding XPages with Bootstrap Plugins for ultimate usability
Engage - Expanding XPages with Bootstrap Plugins for ultimate usability
Johnny Oldenburger
 
A Minimalist’s Attempt at Building a Distributed Application
A Minimalist’s Attempt at Building a Distributed ApplicationA Minimalist’s Attempt at Building a Distributed Application
A Minimalist’s Attempt at Building a Distributed Application
David Hoerster
 
Build single page applications using AngularJS on AEM
Build single page applications using AngularJS on AEMBuild single page applications using AngularJS on AEM
Build single page applications using AngularJS on AEM
connectwebex
 
Client Vs. Server Rendering
Client Vs. Server RenderingClient Vs. Server Rendering
Client Vs. Server Rendering
David Amend
 
Why use Go for web development?
Why use Go for web development?Why use Go for web development?
Why use Go for web development?
Weng Wei
 
IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...
IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...
IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...
Serdar Basegmez
 
Java EE8 - by Kito Mann
Java EE8 - by Kito Mann Java EE8 - by Kito Mann
Java EE8 - by Kito Mann
Kile Niklawski
 
Responsive Websites and Grid-Based Layouts by Gabriel Walt
Responsive Websites and Grid-Based Layouts by Gabriel Walt Responsive Websites and Grid-Based Layouts by Gabriel Walt
Responsive Websites and Grid-Based Layouts by Gabriel Walt
AEM HUB
 
Sencha and Spring (Spring 2GX 2013)
Sencha and Spring (Spring 2GX 2013) Sencha and Spring (Spring 2GX 2013)
Sencha and Spring (Spring 2GX 2013)
Sencha
 
AppeX and JavaScript Support Enhancements in Cincom Smalltalk
AppeX and JavaScript Support Enhancements in Cincom SmalltalkAppeX and JavaScript Support Enhancements in Cincom Smalltalk
AppeX and JavaScript Support Enhancements in Cincom Smalltalk
ESUG
 
Our First ADF Experience
Our First ADF ExperienceOur First ADF Experience
Our First ADF Experience
Hans De Bal
 
Introduction to Sightly and Sling Models
Introduction to Sightly and Sling ModelsIntroduction to Sightly and Sling Models
Introduction to Sightly and Sling Models
Stefano Celentano
 

Viewers also liked (11)

MWLUG 2016 - AD106
MWLUG 2016 - AD106MWLUG 2016 - AD106
MWLUG 2016 - AD106
Jesse Gallagher
 
Rethinking Notes
Rethinking NotesRethinking Notes
Rethinking Notes
Red Pill Now
 
An Introduction to Web Components
An Introduction to Web ComponentsAn Introduction to Web Components
An Introduction to Web Components
Red Pill Now
 
Getting your hands on graphs
Getting your hands on graphsGetting your hands on graphs
Getting your hands on graphs
Red Pill Now
 
The fork in the road - the Application Modernization Roadmap for Notes/Domin...
The fork in the road -  the Application Modernization Roadmap for Notes/Domin...The fork in the road -  the Application Modernization Roadmap for Notes/Domin...
The fork in the road - the Application Modernization Roadmap for Notes/Domin...
John Head
 
Using Dashboards to Transform Application Data Visualization
Using Dashboards to Transform Application Data VisualizationUsing Dashboards to Transform Application Data Visualization
Using Dashboards to Transform Application Data Visualization
Shean McManus
 
SmartCloud Administration Best Practices MWLUG 2016
SmartCloud Administration Best Practices MWLUG 2016SmartCloud Administration Best Practices MWLUG 2016
SmartCloud Administration Best Practices MWLUG 2016
David Hablewitz
 
MWLUG Session- AD112 - Take a Trip Into the Forest - A Java Primer on Maps, ...
MWLUG Session-  AD112 - Take a Trip Into the Forest - A Java Primer on Maps, ...MWLUG Session-  AD112 - Take a Trip Into the Forest - A Java Primer on Maps, ...
MWLUG Session- AD112 - Take a Trip Into the Forest - A Java Primer on Maps, ...
Howard Greenberg
 
The Lotus Position : 3 Degrees Of Freedom
The Lotus Position : 3 Degrees Of FreedomThe Lotus Position : 3 Degrees Of Freedom
The Lotus Position : 3 Degrees Of Freedom
Red Pill Now
 
Big Data With Graphs
Big Data With GraphsBig Data With Graphs
Big Data With Graphs
Red Pill Now
 
BP101: A Modernized Workflow w/ Domino/XPages
BP101: A Modernized Workflow w/ Domino/XPagesBP101: A Modernized Workflow w/ Domino/XPages
BP101: A Modernized Workflow w/ Domino/XPages
edm00se
 
An Introduction to Web Components
An Introduction to Web ComponentsAn Introduction to Web Components
An Introduction to Web Components
Red Pill Now
 
Getting your hands on graphs
Getting your hands on graphsGetting your hands on graphs
Getting your hands on graphs
Red Pill Now
 
The fork in the road - the Application Modernization Roadmap for Notes/Domin...
The fork in the road -  the Application Modernization Roadmap for Notes/Domin...The fork in the road -  the Application Modernization Roadmap for Notes/Domin...
The fork in the road - the Application Modernization Roadmap for Notes/Domin...
John Head
 
Using Dashboards to Transform Application Data Visualization
Using Dashboards to Transform Application Data VisualizationUsing Dashboards to Transform Application Data Visualization
Using Dashboards to Transform Application Data Visualization
Shean McManus
 
SmartCloud Administration Best Practices MWLUG 2016
SmartCloud Administration Best Practices MWLUG 2016SmartCloud Administration Best Practices MWLUG 2016
SmartCloud Administration Best Practices MWLUG 2016
David Hablewitz
 
MWLUG Session- AD112 - Take a Trip Into the Forest - A Java Primer on Maps, ...
MWLUG Session-  AD112 - Take a Trip Into the Forest - A Java Primer on Maps, ...MWLUG Session-  AD112 - Take a Trip Into the Forest - A Java Primer on Maps, ...
MWLUG Session- AD112 - Take a Trip Into the Forest - A Java Primer on Maps, ...
Howard Greenberg
 
The Lotus Position : 3 Degrees Of Freedom
The Lotus Position : 3 Degrees Of FreedomThe Lotus Position : 3 Degrees Of Freedom
The Lotus Position : 3 Degrees Of Freedom
Red Pill Now
 
Big Data With Graphs
Big Data With GraphsBig Data With Graphs
Big Data With Graphs
Red Pill Now
 
BP101: A Modernized Workflow w/ Domino/XPages
BP101: A Modernized Workflow w/ Domino/XPagesBP101: A Modernized Workflow w/ Domino/XPages
BP101: A Modernized Workflow w/ Domino/XPages
edm00se
 
Ad

Similar to MWLUG - Universal Java (20)

JAVA INTRODUCTION - 1
JAVA INTRODUCTION - 1JAVA INTRODUCTION - 1
JAVA INTRODUCTION - 1
Infoviaan Technologies
 
The Java Story
The Java StoryThe Java Story
The Java Story
David Parsons
 
1 java introduction
1 java introduction1 java introduction
1 java introduction
abdullah al mahamud rosi
 
1 java intro
1 java intro1 java intro
1 java intro
abdullah al mahamud rosi
 
Java1 in mumbai
Java1 in mumbaiJava1 in mumbai
Java1 in mumbai
vibrantuser
 
Lecture-01 _Java Introduction CS 441 Fast
Lecture-01 _Java Introduction CS 441 FastLecture-01 _Java Introduction CS 441 Fast
Lecture-01 _Java Introduction CS 441 Fast
UzairSaeed18
 
Java Introduction
Java IntroductionJava Introduction
Java Introduction
sunmitraeducation
 
Java ppt-class_Introduction_class_Objects.ppt
Java ppt-class_Introduction_class_Objects.pptJava ppt-class_Introduction_class_Objects.ppt
Java ppt-class_Introduction_class_Objects.ppt
VGaneshKarthikeyan
 
PPS Java Overview Unit I.ppt
PPS Java Overview Unit I.pptPPS Java Overview Unit I.ppt
PPS Java Overview Unit I.ppt
CDSukte
 
PPS Java Overview Unit I.ppt
PPS Java Overview Unit I.pptPPS Java Overview Unit I.ppt
PPS Java Overview Unit I.ppt
RajeshSukte1
 
Class_01.pptx
Class_01.pptxClass_01.pptx
Class_01.pptx
Passion4Oracle
 
Java1
Java1Java1
Java1
denis diigula
 
Java1
Java1Java1
Java1
Lovepreet Kaur
 
Java ppt-class_basic data types methods definitions
Java ppt-class_basic data types methods definitionsJava ppt-class_basic data types methods definitions
Java ppt-class_basic data types methods definitions
ganeshkarthy
 
this_is_how_to_start_coding_in_java_lang.ppt
this_is_how_to_start_coding_in_java_lang.pptthis_is_how_to_start_coding_in_java_lang.ppt
this_is_how_to_start_coding_in_java_lang.ppt
AhmedHamzaJandoubi
 
Unit 1 Core Java for Compter Science 3rd
Unit 1 Core Java for Compter Science 3rdUnit 1 Core Java for Compter Science 3rd
Unit 1 Core Java for Compter Science 3rd
prat0ham
 
Introduction to JAVA
Introduction to JAVAIntroduction to JAVA
Introduction to JAVA
Md. Tanvir Hossain
 
1. Java Project Guidance for engineering
1. Java Project Guidance for engineering1. Java Project Guidance for engineering
1. Java Project Guidance for engineering
vyshukodumuri
 
JAVA object oriented programming (oop).ppt
JAVA object oriented programming (oop).pptJAVA object oriented programming (oop).ppt
JAVA object oriented programming (oop).ppt
AliyaJav
 
JavaClassPresentation
JavaClassPresentationJavaClassPresentation
JavaClassPresentation
juliasceasor
 
Lecture-01 _Java Introduction CS 441 Fast
Lecture-01 _Java Introduction CS 441 FastLecture-01 _Java Introduction CS 441 Fast
Lecture-01 _Java Introduction CS 441 Fast
UzairSaeed18
 
Java ppt-class_Introduction_class_Objects.ppt
Java ppt-class_Introduction_class_Objects.pptJava ppt-class_Introduction_class_Objects.ppt
Java ppt-class_Introduction_class_Objects.ppt
VGaneshKarthikeyan
 
PPS Java Overview Unit I.ppt
PPS Java Overview Unit I.pptPPS Java Overview Unit I.ppt
PPS Java Overview Unit I.ppt
CDSukte
 
PPS Java Overview Unit I.ppt
PPS Java Overview Unit I.pptPPS Java Overview Unit I.ppt
PPS Java Overview Unit I.ppt
RajeshSukte1
 
Java ppt-class_basic data types methods definitions
Java ppt-class_basic data types methods definitionsJava ppt-class_basic data types methods definitions
Java ppt-class_basic data types methods definitions
ganeshkarthy
 
this_is_how_to_start_coding_in_java_lang.ppt
this_is_how_to_start_coding_in_java_lang.pptthis_is_how_to_start_coding_in_java_lang.ppt
this_is_how_to_start_coding_in_java_lang.ppt
AhmedHamzaJandoubi
 
Unit 1 Core Java for Compter Science 3rd
Unit 1 Core Java for Compter Science 3rdUnit 1 Core Java for Compter Science 3rd
Unit 1 Core Java for Compter Science 3rd
prat0ham
 
1. Java Project Guidance for engineering
1. Java Project Guidance for engineering1. Java Project Guidance for engineering
1. Java Project Guidance for engineering
vyshukodumuri
 
JAVA object oriented programming (oop).ppt
JAVA object oriented programming (oop).pptJAVA object oriented programming (oop).ppt
JAVA object oriented programming (oop).ppt
AliyaJav
 
JavaClassPresentation
JavaClassPresentationJavaClassPresentation
JavaClassPresentation
juliasceasor
 
Ad

Recently uploaded (20)

Requirements in Engineering AI- Enabled Systems: Open Problems and Safe AI Sy...
Requirements in Engineering AI- Enabled Systems: Open Problems and Safe AI Sy...Requirements in Engineering AI- Enabled Systems: Open Problems and Safe AI Sy...
Requirements in Engineering AI- Enabled Systems: Open Problems and Safe AI Sy...
Lionel Briand
 
The Significance of Hardware in Information Systems.pdf
The Significance of Hardware in Information Systems.pdfThe Significance of Hardware in Information Systems.pdf
The Significance of Hardware in Information Systems.pdf
drewplanas10
 
Designing AI-Powered APIs on Azure: Best Practices& Considerations
Designing AI-Powered APIs on Azure: Best Practices& ConsiderationsDesigning AI-Powered APIs on Azure: Best Practices& Considerations
Designing AI-Powered APIs on Azure: Best Practices& Considerations
Dinusha Kumarasiri
 
How to Optimize Your AWS Environment for Improved Cloud Performance
How to Optimize Your AWS Environment for Improved Cloud PerformanceHow to Optimize Your AWS Environment for Improved Cloud Performance
How to Optimize Your AWS Environment for Improved Cloud Performance
ThousandEyes
 
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage DashboardsAdobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
BradBedford3
 
Exploring Wayland: A Modern Display Server for the Future
Exploring Wayland: A Modern Display Server for the FutureExploring Wayland: A Modern Display Server for the Future
Exploring Wayland: A Modern Display Server for the Future
ICS
 
Top 10 Client Portal Software Solutions for 2025.docx
Top 10 Client Portal Software Solutions for 2025.docxTop 10 Client Portal Software Solutions for 2025.docx
Top 10 Client Portal Software Solutions for 2025.docx
Portli
 
Expand your AI adoption with AgentExchange
Expand your AI adoption with AgentExchangeExpand your AI adoption with AgentExchange
Expand your AI adoption with AgentExchange
Fexle Services Pvt. Ltd.
 
Download Wondershare Filmora Crack [2025] With Latest
Download Wondershare Filmora Crack [2025] With LatestDownload Wondershare Filmora Crack [2025] With Latest
Download Wondershare Filmora Crack [2025] With Latest
tahirabibi60507
 
EASEUS Partition Master Crack + License Code
EASEUS Partition Master Crack + License CodeEASEUS Partition Master Crack + License Code
EASEUS Partition Master Crack + License Code
aneelaramzan63
 
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
Andre Hora
 
Maxon CINEMA 4D 2025 Crack FREE Download LINK
Maxon CINEMA 4D 2025 Crack FREE Download LINKMaxon CINEMA 4D 2025 Crack FREE Download LINK
Maxon CINEMA 4D 2025 Crack FREE Download LINK
younisnoman75
 
WinRAR Crack for Windows (100% Working 2025)
WinRAR Crack for Windows (100% Working 2025)WinRAR Crack for Windows (100% Working 2025)
WinRAR Crack for Windows (100% Working 2025)
sh607827
 
Adobe Master Collection CC Crack Advance Version 2025
Adobe Master Collection CC Crack Advance Version 2025Adobe Master Collection CC Crack Advance Version 2025
Adobe Master Collection CC Crack Advance Version 2025
kashifyounis067
 
Landscape of Requirements Engineering for/by AI through Literature Review
Landscape of Requirements Engineering for/by AI through Literature ReviewLandscape of Requirements Engineering for/by AI through Literature Review
Landscape of Requirements Engineering for/by AI through Literature Review
Hironori Washizaki
 
F-Secure Freedome VPN 2025 Crack Plus Activation New Version
F-Secure Freedome VPN 2025 Crack Plus Activation  New VersionF-Secure Freedome VPN 2025 Crack Plus Activation  New Version
F-Secure Freedome VPN 2025 Crack Plus Activation New Version
saimabibi60507
 
Adobe After Effects Crack FREE FRESH version 2025
Adobe After Effects Crack FREE FRESH version 2025Adobe After Effects Crack FREE FRESH version 2025
Adobe After Effects Crack FREE FRESH version 2025
kashifyounis067
 
Meet the Agents: How AI Is Learning to Think, Plan, and Collaborate
Meet the Agents: How AI Is Learning to Think, Plan, and CollaborateMeet the Agents: How AI Is Learning to Think, Plan, and Collaborate
Meet the Agents: How AI Is Learning to Think, Plan, and Collaborate
Maxim Salnikov
 
Scaling GraphRAG: Efficient Knowledge Retrieval for Enterprise AI
Scaling GraphRAG:  Efficient Knowledge Retrieval for Enterprise AIScaling GraphRAG:  Efficient Knowledge Retrieval for Enterprise AI
Scaling GraphRAG: Efficient Knowledge Retrieval for Enterprise AI
danshalev
 
Secure Test Infrastructure: The Backbone of Trustworthy Software Development
Secure Test Infrastructure: The Backbone of Trustworthy Software DevelopmentSecure Test Infrastructure: The Backbone of Trustworthy Software Development
Secure Test Infrastructure: The Backbone of Trustworthy Software Development
Shubham Joshi
 
Requirements in Engineering AI- Enabled Systems: Open Problems and Safe AI Sy...
Requirements in Engineering AI- Enabled Systems: Open Problems and Safe AI Sy...Requirements in Engineering AI- Enabled Systems: Open Problems and Safe AI Sy...
Requirements in Engineering AI- Enabled Systems: Open Problems and Safe AI Sy...
Lionel Briand
 
The Significance of Hardware in Information Systems.pdf
The Significance of Hardware in Information Systems.pdfThe Significance of Hardware in Information Systems.pdf
The Significance of Hardware in Information Systems.pdf
drewplanas10
 
Designing AI-Powered APIs on Azure: Best Practices& Considerations
Designing AI-Powered APIs on Azure: Best Practices& ConsiderationsDesigning AI-Powered APIs on Azure: Best Practices& Considerations
Designing AI-Powered APIs on Azure: Best Practices& Considerations
Dinusha Kumarasiri
 
How to Optimize Your AWS Environment for Improved Cloud Performance
How to Optimize Your AWS Environment for Improved Cloud PerformanceHow to Optimize Your AWS Environment for Improved Cloud Performance
How to Optimize Your AWS Environment for Improved Cloud Performance
ThousandEyes
 
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage DashboardsAdobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
BradBedford3
 
Exploring Wayland: A Modern Display Server for the Future
Exploring Wayland: A Modern Display Server for the FutureExploring Wayland: A Modern Display Server for the Future
Exploring Wayland: A Modern Display Server for the Future
ICS
 
Top 10 Client Portal Software Solutions for 2025.docx
Top 10 Client Portal Software Solutions for 2025.docxTop 10 Client Portal Software Solutions for 2025.docx
Top 10 Client Portal Software Solutions for 2025.docx
Portli
 
Expand your AI adoption with AgentExchange
Expand your AI adoption with AgentExchangeExpand your AI adoption with AgentExchange
Expand your AI adoption with AgentExchange
Fexle Services Pvt. Ltd.
 
Download Wondershare Filmora Crack [2025] With Latest
Download Wondershare Filmora Crack [2025] With LatestDownload Wondershare Filmora Crack [2025] With Latest
Download Wondershare Filmora Crack [2025] With Latest
tahirabibi60507
 
EASEUS Partition Master Crack + License Code
EASEUS Partition Master Crack + License CodeEASEUS Partition Master Crack + License Code
EASEUS Partition Master Crack + License Code
aneelaramzan63
 
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
Andre Hora
 
Maxon CINEMA 4D 2025 Crack FREE Download LINK
Maxon CINEMA 4D 2025 Crack FREE Download LINKMaxon CINEMA 4D 2025 Crack FREE Download LINK
Maxon CINEMA 4D 2025 Crack FREE Download LINK
younisnoman75
 
WinRAR Crack for Windows (100% Working 2025)
WinRAR Crack for Windows (100% Working 2025)WinRAR Crack for Windows (100% Working 2025)
WinRAR Crack for Windows (100% Working 2025)
sh607827
 
Adobe Master Collection CC Crack Advance Version 2025
Adobe Master Collection CC Crack Advance Version 2025Adobe Master Collection CC Crack Advance Version 2025
Adobe Master Collection CC Crack Advance Version 2025
kashifyounis067
 
Landscape of Requirements Engineering for/by AI through Literature Review
Landscape of Requirements Engineering for/by AI through Literature ReviewLandscape of Requirements Engineering for/by AI through Literature Review
Landscape of Requirements Engineering for/by AI through Literature Review
Hironori Washizaki
 
F-Secure Freedome VPN 2025 Crack Plus Activation New Version
F-Secure Freedome VPN 2025 Crack Plus Activation  New VersionF-Secure Freedome VPN 2025 Crack Plus Activation  New Version
F-Secure Freedome VPN 2025 Crack Plus Activation New Version
saimabibi60507
 
Adobe After Effects Crack FREE FRESH version 2025
Adobe After Effects Crack FREE FRESH version 2025Adobe After Effects Crack FREE FRESH version 2025
Adobe After Effects Crack FREE FRESH version 2025
kashifyounis067
 
Meet the Agents: How AI Is Learning to Think, Plan, and Collaborate
Meet the Agents: How AI Is Learning to Think, Plan, and CollaborateMeet the Agents: How AI Is Learning to Think, Plan, and Collaborate
Meet the Agents: How AI Is Learning to Think, Plan, and Collaborate
Maxim Salnikov
 
Scaling GraphRAG: Efficient Knowledge Retrieval for Enterprise AI
Scaling GraphRAG:  Efficient Knowledge Retrieval for Enterprise AIScaling GraphRAG:  Efficient Knowledge Retrieval for Enterprise AI
Scaling GraphRAG: Efficient Knowledge Retrieval for Enterprise AI
danshalev
 
Secure Test Infrastructure: The Backbone of Trustworthy Software Development
Secure Test Infrastructure: The Backbone of Trustworthy Software DevelopmentSecure Test Infrastructure: The Backbone of Trustworthy Software Development
Secure Test Infrastructure: The Backbone of Trustworthy Software Development
Shubham Joshi
 

MWLUG - Universal Java

  • 1. Universal Java Using Java everywhere: server, desktop, mobile, IoT…
  • 2. Disclaimer • No advice – This website contains general information about legal matters. The information is not advice, and should not be treated as such. • Limitation of warranties – The legal information on this website is provided “as is” without any representations or warranties, express or implied. The presenter makes no representations or warranties in relation to the legal information on this website. Without prejudice to the generality of the foregoing paragraph, The presenter does not warrant that: • the legal information on this presentation will be constantly available, or available at all; or • the legal information on this presentation is complete, true, accurate, up-to-date, or non-misleading. • Professional assistance – You must not rely on the information on this website as an alternative to legal advice from your attorney or other professional legal services provider. – If you have any specific questions about any legal matter you should consult your attorney or other professional legal services provider. You should never delay seeking legal advice, disregard legal advice, or commence or discontinue any legal action because of information on this website. • Liability – Nothing in this legal disclaimer will limit any of our liabilities in any way that is not permitted under applicable law, or exclude any of our liabilities that may not be excluded under applicable law. • This legal disclaimer – This legal advice disclaimer is based on a free SEQ Legal form. SEQ Legal also supply premium forms including email disclaimer forms
  • 3. About the Speaker Philippe Riand – CTO of Trilog Group and Darwino – Former application development chief architect for IBM Collaboration Services – Chief architect, and inventor, of IBM Domino XPages – Author of many OpenNTF projects
  • 4. About Darwino A distributed app-development platform for the rapid creation of collaborative applications (primarily Mobile, Cloud and IOT). – Facilitates focus on the application logic; – Encapsulates services within comprehensive and portable APIs; – Incorporates an advanced JSON document store (atop of RDBMS), both mobile and server; – Enables synchronization (aka, replication) from Enterprise systems and provides a seamless offline capability; • Have a built-in, high fidelity, 2 way replication connector with IBM Domino – Java-based, and uses familiar constructs, UI.
  • 5. Agenda • Why Java? • Java Pieces • Writing Portable Code with Java • Use Cases and Demos • Conclusion
  • 7. Why Java? • As a language/platform – Java is the one of the most popular and used language – Java virtually runs on every platforms, albeit some differences • Server, desktops, mobile, IOT – Java has the biggest ecosystem, set of libraries and development tools – The JVM and runtime libraries can run several other languages • For the enterprise – Scales well in term of team size – Libraries are Enterprise level code (Apache, Google Core…) – Strong security model – Error handling prevents crashes – Easy to find skills on the market
  • 9. Java Pieces Or What is and what makes Java Agenda
  • 10. Java Pieces Languages Execution Environment Runtime Library Java is, basically, made of 3 pieces that are intermingled Source code Class library JVM, Runtime Environment
  • 11. Java Languages • At the beginning, Java is a programming language – Defined by the JLS, Java Language Specification – Originally compiles to byte code, for the JVM – Depends on a minimum runtime library (ex: String, Class…) • Many scripting languages are running on the Java platform – JavaScript (Nashorn), Ruby, Python… – Byte code has been enhanced to better support scripting languages • General purposes/functional languages – Groovy, Scala, Kotlin, Clojure – Even Swift (RemObject Silver), C#... • The languages targeting the Java platform can share the libraries and interact with each other
  • 12. Main Execution Platform : Java JVM • The stock Java compiler generates byte code (“.class” files) that will be then executed by the Java Virtual Machine. Class files can eventually be aggregated into archive files (.jar) • The byte code can be interpreted or on the fly converted to machine code by the JVM (this is called “just in time compiler”) • There are many JVM implementations available for a wide range of operating systems (IBM J9, Oracle VM, …), as well as many other open source implementations – Oracle’s is now open source through OpenJDK – IBM’s is being open sourced Source Code Class HelloWorld { … public static void main() { … } } 0A F5 89 19 … 7F 3C Byte Code Java HelloWorld JVM
  • 13. Execution Platform : Android VM • Google introduced a new byte code format for Android called “dex” (Dalvik Executable), optimized for mobile devices • It generates smaller files with byte code that can be processed faster by the JIT – ART, released with Android 5.0 also now pre-compiles the classes (AOT) • The existing compiled libraries can be used as is • Has side effects with dynamic languages, like Groovy, or Java libraries containing resources Source Code Class HelloWorld { … public static void main() { … } } 0A F5 89 19 … 7F 3C Byte Code Adb shell … HelloWorld Dalvik/ART VM 07 6A 46 … 8F 33 15 AC Dalvik JAR
  • 14. Execution Platform: Transpilers and AOT • Transpilers – Java transpilers convert java source code to another language • Google GWT converts Java to JavaScript • J2OBJC converts Java to Objective “C” • JUniversal… but abandoned by Microsoft – Java class transpilers converts .class file to source code • J2C, Haxe… • Ahead of Time compilers – AOT – AOT compilers statically generate machine code from either the source code, or even better the compiled “.class” files • Excelsior JET (Desktop: Windows, OSX & Linux) • Multi OS Engine (MOE) • Avian, RoboVM, GCJ, XMLVM…
  • 15. Java Runtime Libraries • Java comes with a set of classes ready to use, provided by a runtime library implementation. – Some are tied to the language (ex: String, Class, …). These classes must be available in order to run a Java program. – Some are just portable services (ex: java.io.*, java.net.*...). They are not strictly part of the language specification, and may vary between implementations. – Some can be platform specific, or even JVM/target environment specific (com.ibm.*, …) • The use of a runtime library matters a lot as it defines the available APIs and their behaviors – Oracle JVM, Android… have different classes, or different implementations of the same classes
  • 16. The Landscape of Java Runtime Libraries Apache Harmony OpenJDK Android Dalvik Android ART ART Next GNU Classpath Environment specific - GWT, J2OBJC - CodenameOne - Avian - JUniversal - … ART Next - GJC - Other OS projects - Oracle Hotspot - IBM J9 Sun JDK - Android 1-4 - Android 5-6 - Android 7+
  • 18. Writing Portable Java • There are two kinds of code that must be separated – The code that is platform independent (ex: business logic) • Executed as is on all the target platforms • Should only use common language and library characteristics – The one that depends on the platform (ex: mobile UI) • One set of code per platform • That should be well isolated into specific projects => A typical portable application is made of several projects – Shared code – Target platform specific projects (or shell)
  • 19. Native UIs Strategies • Strategies for portable native APIs – The minimum common denominator • AWT – UI frameworks written in Java • Swing, JavaFX • CodenameOne, Nuvos, … – Advanced wrappers with extensions to supplement missing native implementations • SWT • Directly use the native, not portable APIs – Cocoa, Win32, Android, Qt… • Using direct API calls: JNI, JNA • Using advanced native API bridges: NAT/J, Bro
  • 20. Use Case #1 Client & Server Reusable Code Agenda
  • 21. Trilog’s ProjExec: the Gantt Component • Projects are accessed through different Pages/Component/APIs – Have an existing Java Applet Gantt • Need a new JavaScript implementation as Java Applet are deprecated – Need a REST APIs exposing the business objects to remote clients • Actions on a project carry a lot of complex business logic – To provide the best user experience, the Gantt UI Component should execute the business logic locally – The same business logic should run on the server as well (REST APIs and data integrity/security) • We need a single implementation that runs everywhere – Existing code is in the Java Applet – Don’t want to rewrite it in JavaScript (cost, server technology, team scalability…)
  • 22. Trilog’s ProjExec: the Gantt Component • Solution: – The business logic is written in Java and well isolated in its own project • Use the common platform characteristics • No external dependency – Executes natively on the server and Applet, while it is transpiled to JavaScript using GWT • The exact same code is executed on both client and server – The browser UI is native HTML/Javascript • Actually, built using GWT and GXT, but straight HTML/JS can be used – Opens the door to a pure mobile implementation – Close to what Google does with ‘Inbox’
  • 24. Trilog’s ProjExec: the Gantt Component • Lessons learned – We needed a few wrappers that abstract runtime specific APIs • JSON, Timezone… – Integrates well with a maven based build – Share the unit tests between the implementations – Java VM & transpiled JavaScript can have slight decimal calculation differences – GWT 2.8 features a nice new JSInterop capability to be leveraged
  • 25. Use Case #2 Cross Platform Web UI Agenda
  • 26. Demo of a Multi Platform Web Hybrid Application • Demo application targeting web browsers, Mobile and Desktop – Application business logic shared, all in Java – Core runtime libraries, including third party, all in Java – Web technologies used for the application UI – Mixed-in native UI for standard components (ex: settings dialog)
  • 27. Use Case #3 Multi-Platform Native UI Agenda
  • 28. Pure Native UIs in Java • Available Solutions – CodenameOne • Commercial and OpenSource product (GPL) • Limited runtime library, cumbersome build and debugging process, no interface builder… – RoboVM • Very efficient solution but no longer a supported product (killed by MS) • There is a maintained branch on Github, mostly to support LibGDX: https://github.com/MobiDevelop/robovm – 1 Yr old code based, with missing features (debugger, interface builder…) – We contributed some code (maven integration…) – Multi OS Engine (aka Intel INDE or Intel MOE) • Acquired by Intel in 2015 from Migeran • Now fully open source, under the Apache 2.0 license – https://github.com/multi-os-engine, https://multi-os-engine.org/
  • 29. Open Source Multi OS Engine • Features – Targets iOS & Android, more to come! – AOT & Android ART VM interpreter – On Device Debugging Support – Android studio integration – Java to Native Binding NAT/J • Automatic Native Binding Generation • Access Objective-C Language Features in Java – Android & iOS Interface Builder Integration • On the work: – Eclipse integration – Maven integration
  • 32. Other Areas for Java • Java is part of IoT’s future – Samsung ARTIK • IDE powered by Eclipse Che • Extensive Java SDK – Intel MOE makes it possible to target IoT • Easy for any POSIX compliant OS – Google Brillo, Fluschia • Highly portable to other systems – Java transpilers targeting IoT devices • C++ transpiler – to be released to darwino.org (OpenNTF) • And Games… – LibGDX – jMonkeyEngine
  • 33. Multi-platform Java: What Technologies to Use? • Server – JVM • Desktop – JVM – AOT (MOE, Jet, RoboVM) • Android – Native Dalvik/ART VMs • iOS – AOT (MOE, RoboVM, Avian…) – Transpiler (j2objc) • HTML – GWT (JSweet…) • Oracle: Mobile OpenJDK 9 with “zero interpreter” for iOS. AOT might be in progress
  • 34. This is The end