SlideShare a Scribd company logo
1 of 34
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

More Related Content

What's hot

Alfresco Digital Business Platform Builder Experience
Alfresco Digital Business Platform Builder ExperienceAlfresco Digital Business Platform Builder Experience
Alfresco Digital Business Platform Builder ExperienceRay 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 - IstanbulRobert Nyman
 
Thoughts on Component Resuse
Thoughts on Component ResuseThoughts on Component Resuse
Thoughts on Component ResuseJustin Edelson
 
SharePoint Development 101
SharePoint Development 101SharePoint Development 101
SharePoint Development 101Greg 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 usabilityJohnny 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 ApplicationDavid 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 AEMconnectwebex
 
Client Vs. Server Rendering
Client Vs. Server RenderingClient Vs. Server Rendering
Client Vs. Server RenderingDavid 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 SmalltalkESUG
 
Our First ADF Experience
Our First ADF ExperienceOur First ADF Experience
Our First ADF ExperienceHans De Bal
 
Introduction to Sightly and Sling Models
Introduction to Sightly and Sling ModelsIntroduction to Sightly and Sling Models
Introduction to Sightly and Sling ModelsStefano Celentano
 

What's hot (20)

DEV-1467 - Darwino
DEV-1467 - DarwinoDEV-1467 - Darwino
DEV-1467 - Darwino
 
Alfresco Digital Business Platform Builder Experience
Alfresco Digital Business Platform Builder ExperienceAlfresco Digital Business Platform Builder Experience
Alfresco Digital Business Platform Builder Experience
 
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...
 
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
 
Thoughts on Component Resuse
Thoughts on Component ResuseThoughts on Component Resuse
Thoughts on Component Resuse
 
SharePoint Development 101
SharePoint Development 101SharePoint Development 101
SharePoint Development 101
 
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
 
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
 
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
 
Client Vs. Server Rendering
Client Vs. Server RenderingClient Vs. Server Rendering
Client Vs. Server Rendering
 
Why use Go for web development?
Why use Go for web development?Why use Go for web development?
Why use Go for web development?
 
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...
 
Java EE8 - by Kito Mann
Java EE8 - by Kito Mann Java EE8 - by Kito Mann
Java EE8 - by Kito Mann
 
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
 
Sencha and Spring (Spring 2GX 2013)
Sencha and Spring (Spring 2GX 2013) Sencha and Spring (Spring 2GX 2013)
Sencha and Spring (Spring 2GX 2013)
 
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
 
Spring Mvc
Spring MvcSpring Mvc
Spring Mvc
 
Our First ADF Experience
Our First ADF ExperienceOur First ADF Experience
Our First ADF Experience
 
Introduction to Sightly and Sling Models
Introduction to Sightly and Sling ModelsIntroduction to Sightly and Sling Models
Introduction to Sightly and Sling Models
 
Html5 Flyover
Html5 FlyoverHtml5 Flyover
Html5 Flyover
 

Viewers also liked

An Introduction to Web Components
An Introduction to Web ComponentsAn Introduction to Web Components
An Introduction to Web ComponentsRed Pill Now
 
Getting your hands on graphs
Getting your hands on graphsGetting your hands on graphs
Getting your hands on graphsRed 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 VisualizationShean McManus
 
SmartCloud Administration Best Practices MWLUG 2016
SmartCloud Administration Best Practices MWLUG 2016SmartCloud Administration Best Practices MWLUG 2016
SmartCloud Administration Best Practices MWLUG 2016David 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 FreedomRed Pill Now
 
Big Data With Graphs
Big Data With GraphsBig Data With Graphs
Big Data With GraphsRed 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/XPagesedm00se
 

Viewers also liked (11)

MWLUG 2016 - AD106
MWLUG 2016 - AD106MWLUG 2016 - AD106
MWLUG 2016 - AD106
 
Rethinking Notes
Rethinking NotesRethinking Notes
Rethinking Notes
 
An Introduction to Web Components
An Introduction to Web ComponentsAn Introduction to Web Components
An Introduction to Web Components
 
Getting your hands on graphs
Getting your hands on graphsGetting your hands on graphs
Getting your hands on graphs
 
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...
 
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
 
SmartCloud Administration Best Practices MWLUG 2016
SmartCloud Administration Best Practices MWLUG 2016SmartCloud Administration Best Practices MWLUG 2016
SmartCloud Administration Best Practices MWLUG 2016
 
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, ...
 
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
 
Big Data With Graphs
Big Data With GraphsBig Data With Graphs
Big Data With Graphs
 
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
 

Similar to MWLUG - Universal Java

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 FastUzairSaeed18
 
PPS Java Overview Unit I.ppt
PPS Java Overview Unit I.pptPPS Java Overview Unit I.ppt
PPS Java Overview Unit I.pptRajeshSukte1
 
PPS Java Overview Unit I.ppt
PPS Java Overview Unit I.pptPPS Java Overview Unit I.ppt
PPS Java Overview Unit I.pptCDSukte
 
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 3rdprat0ham
 
JAVA object oriented programming (oop).ppt
JAVA object oriented programming (oop).pptJAVA object oriented programming (oop).ppt
JAVA object oriented programming (oop).pptAliyaJav
 
JavaClassPresentation
JavaClassPresentationJavaClassPresentation
JavaClassPresentationjuliasceasor
 
JAVA PROGRAMMING-Unit I - Final PPT.pptx
JAVA PROGRAMMING-Unit I - Final PPT.pptxJAVA PROGRAMMING-Unit I - Final PPT.pptx
JAVA PROGRAMMING-Unit I - Final PPT.pptxSuganthiDPSGRKCW
 
Java fundamentals
Java fundamentalsJava fundamentals
Java fundamentalsOm Ganesh
 
Basic javaprogramming(session1)
Basic javaprogramming(session1)Basic javaprogramming(session1)
Basic javaprogramming(session1)Barm Bannasan
 

Similar to MWLUG - Universal Java (20)

JAVA INTRODUCTION - 1
JAVA INTRODUCTION - 1JAVA INTRODUCTION - 1
JAVA INTRODUCTION - 1
 
The Java Story
The Java StoryThe Java Story
The Java Story
 
1 java introduction
1 java introduction1 java introduction
1 java introduction
 
1 java intro
1 java intro1 java intro
1 java intro
 
Java1 in mumbai
Java1 in mumbaiJava1 in mumbai
Java1 in mumbai
 
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
 
Java Introduction
Java IntroductionJava Introduction
Java Introduction
 
PPS Java Overview Unit I.ppt
PPS Java Overview Unit I.pptPPS Java Overview Unit I.ppt
PPS Java Overview Unit I.ppt
 
PPS Java Overview Unit I.ppt
PPS Java Overview Unit I.pptPPS Java Overview Unit I.ppt
PPS Java Overview Unit I.ppt
 
Class_01.pptx
Class_01.pptxClass_01.pptx
Class_01.pptx
 
Java1
Java1Java1
Java1
 
Java1
Java1Java1
Java1
 
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
 
Introduction to JAVA
Introduction to JAVAIntroduction to JAVA
Introduction to JAVA
 
JAVA object oriented programming (oop).ppt
JAVA object oriented programming (oop).pptJAVA object oriented programming (oop).ppt
JAVA object oriented programming (oop).ppt
 
JavaClassPresentation
JavaClassPresentationJavaClassPresentation
JavaClassPresentation
 
JAVA PROGRAMMING-Unit I - Final PPT.pptx
JAVA PROGRAMMING-Unit I - Final PPT.pptxJAVA PROGRAMMING-Unit I - Final PPT.pptx
JAVA PROGRAMMING-Unit I - Final PPT.pptx
 
Java fundamentals
Java fundamentalsJava fundamentals
Java fundamentals
 
Basic javaprogramming(session1)
Basic javaprogramming(session1)Basic javaprogramming(session1)
Basic javaprogramming(session1)
 
01 java intro
01 java intro01 java intro
01 java intro
 

Recently uploaded

call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfThe Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfayushiqss
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareJim McKeeth
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfVishalKumarJha10
 
Generic or specific? Making sensible software design decisions
Generic or specific? Making sensible software design decisionsGeneric or specific? Making sensible software design decisions
Generic or specific? Making sensible software design decisionsBert Jan Schrijver
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech studentsHimanshiGarg82
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...masabamasaba
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrainmasabamasaba
 
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...masabamasaba
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...SelfMade bd
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...masabamasaba
 
%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durban%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durbanmasabamasaba
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrandmasabamasaba
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension AidPhilip Schwarz
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024Mind IT Systems
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...masabamasaba
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyviewmasabamasaba
 

Recently uploaded (20)

call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfThe Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
 
Generic or specific? Making sensible software design decisions
Generic or specific? Making sensible software design decisionsGeneric or specific? Making sensible software design decisions
Generic or specific? Making sensible software design decisions
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
 
%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durban%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durban
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
 

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