MicroProfile:
A Quest for a lightweight and
reactive Enterprise Java Platform
Ondro Mihályi, Payara
@omihalyi
@omihalyi
Enterprise Jungle
Database
SOAP
services
ACID
transactions
@omihalyi
Let’s feed it with lots of healthy food...
@omihalyi
All the healthy food we can get …
EJB
XA
JAX-WS
XML
JPA Transactions Monitoring
Resource
pooling
Thread
management
JMS
brokers
Security JSF
@omihalyi
And even healthier food …
JAX-RS
CDI JSON
Asynchronous
Simplified
Security
@omihalyi
Fundamental Shifts in Computing
● Deliver new features more quickly
● Smaller, more agile teams
● Deliver business features as discrete services
● Reduce time to market
● Address unpredictable loads
● Pay as you go
● Containerization
Cloud
Microservices
@omihalyi
Anything else?Big Data ?
Cloud ?
Reactive ?
Microservices ?
No, thanks.
I’d rather my
juicy CORBA
Docker ?
@omihalyi
We need something better
Java EE ++−−
@omihalyi
Or rather a diet …
Java EE ++
● Flexible
● Small disk and memory consumption
● Fast start-up times
● Simple installation and usage
−−
@omihalyi
WildFly Swarm - build app from fractions
Payara Micro - app server as a runnable JAR
TomEE - embeddable app server built on Tomcat
WebSphere Liberty - generate server subset
Java EE on a diet already
@omihalyi
Payara Micro payara.fish/payara_micro
● Executable JAR ( <60MB )
○ Java EE, JCache, CDI event bus
● Automatic clustering and replication
● Package app as executable JAR
java -jar payara.jar --deploy app.war
or with the maven plugin:
@omihalyi
Payara Micro payara.fish/payara_micro
● Executable JAR ( <60MB )
○ Java EE, JCache, CDI event bus
● Automatic clustering and replication
● Package app as executable JAR
java -jar payara.jar --deploy app.war --
outputUberJar app.jar
@omihalyi
PathFinder web app with a REST endpoint in 3 flavors
DEMO
https://github.com/OndrejM-demonstrations/Pathfinder-comparison
@omihalyi
After the diet applied...
WildFly
Swarm
Payara Micro Spring Boot
File size 105 MB 56 MB 22 MB
Heap size
(after GC)
28 MB 30 MB 29 MB
Boot time 12 s 14 s
( 10 s --noCluster)
7 s
@omihalyi
Java EE is about standards
Can it provide solutions?
● REST (4.56)
● OAuth (4.24), Secrets (4.07)
● Configuration (4.17)
● Reactive (3.97)
● Service Health (3.89)
Survey from 2016
@omihalyi
Things have changed...
Java EE needs to
adapt
or be replaced in
many cases
HTTP/2
OAuth
NoSQL
Docker
Reactive
Streams
Micro
Services
@omihalyi
We need heroes here!
● Supporting
development and
adoption of Java EE
● Lobbying vendors to
fulfill their commitments
● Finding ways of
process & collaboration
improvements
● Companies
● JSR Expert Group
members
● Java User Groups
● Individual developers
@omihalyi
Oracle revised Java EE plans at JavaOne
2016
@omihalyi
Oracle revised plans again in 2017
● Java EE 8 the last version governed by
Oracle
● Plans to transfer Java EE to the Eclipse
Foundation
● Possibly with a different name
@omihalyi
Meanwhile vendors & community cooperate
Optimizing Enterprise Java
for a Microservices Architecture
MicroProfile.io
MicroProfile Discussion Forum (bit.ly/MicroProfileForum)
MicroProfile Examples (https://github.com/eclipse/microprofile-conference)
@omihalyi
MicroProfile Release Philosophy
Release 1.0
JAX-RS
CDI
JSON-P
Build
consensus
Standardize
Rapidly iterate
and innovate
@omihalyi
Bridging Community and Standards
Choice
Application
Portability
Backwards
Compatibility
Broad Collaboration
Encouraged
Experimentation
Fail Fast
Rapid Innovation
MicroProfile 1.1
August 8, 2017
24
MicroProfile 1.2
End of September, 2017
Eclipse MicroProfile 1.1 (Aug, 2017)
25
MicroProfile 1.1
= New
= No change from last release
JAX-RS 2.0JSON-P 1.0CDI 1.2
Config 1.0
Configuration 1.0
Applications need to be configured based on a running environment. It must be
possible to modify configuration data from outside an application so that the
application itself does not need to be repackaged
26
Dev
Test
Prod @Inject
@ConfigProperty(name = "myservice.url")
URL myService;
@Inject
Config config;
myService = config
.getValue("myservice.url", URL.class)
Eclipse MicroProfile 1.2 (Sep, 2017)
27
MicroProfile 1.2
= New
= No change from last release
JAX-RS 2.0JSON-P 1.0CDI 1.2
Config 1.1
Fault
Tolerance 1.0
JWT
Propagation
1.0
Health
Check 1.0
Metrics 1.0
@omihalyi
DEMO ARCHITECTURE
WF Swarm WebSphere LP TomEE Payara Micro
https://github.com/eclipse/microprofile-conference
@omihalyi
The MicroProfile demo in numbers
Vendor Service JAR size Heap Starts in
WebSphere LP Session
Voting
36 MB 30 MB 8 sec.
WildFly Swarm Session 93 MB 37 MB 11 sec.
Payara Micro Session
Schedule
33 MB 27 MB 8 sec.
TomEE Speaker 35 MB 30 MB 7 sec.
@omihalyi
The nature of MicroProfile
● Sand-box Approach to Open
Contribution
● High Cadence Release Philosophy
● Transparency at all Stages
○ Public forum & chat, github, Eclipse foundation, Apache License
● CDI Centric Programming Model
@omihalyi
Join the Discussion!
https://groups.google.com/forum/#!forum/microprofile
Or even submit your idea as a
PR in the sandbox project!
https://github.com/eclipse/microprofile-
sandbox
@omihalyi
The quest continues...
● MicroProfile as a platform to cooperate faster
○ feed JCP with proposals
● Future Java EE targeting cloud and microservices
○ under community-friendly Eclipse Foundation
● JavaEE Guardians to lobby for the communityJoin the adventure!

Bed con - MicroProfile: A Quest for a lightweight and reactive Enterprise Java Platform

  • 1.
    MicroProfile: A Quest fora lightweight and reactive Enterprise Java Platform Ondro Mihályi, Payara @omihalyi
  • 2.
  • 3.
    @omihalyi Let’s feed itwith lots of healthy food...
  • 4.
    @omihalyi All the healthyfood we can get … EJB XA JAX-WS XML JPA Transactions Monitoring Resource pooling Thread management JMS brokers Security JSF
  • 5.
    @omihalyi And even healthierfood … JAX-RS CDI JSON Asynchronous Simplified Security
  • 6.
    @omihalyi Fundamental Shifts inComputing ● Deliver new features more quickly ● Smaller, more agile teams ● Deliver business features as discrete services ● Reduce time to market ● Address unpredictable loads ● Pay as you go ● Containerization Cloud Microservices
  • 7.
    @omihalyi Anything else?Big Data? Cloud ? Reactive ? Microservices ? No, thanks. I’d rather my juicy CORBA Docker ?
  • 8.
    @omihalyi We need somethingbetter Java EE ++−−
  • 9.
    @omihalyi Or rather adiet … Java EE ++ ● Flexible ● Small disk and memory consumption ● Fast start-up times ● Simple installation and usage −−
  • 10.
    @omihalyi WildFly Swarm -build app from fractions Payara Micro - app server as a runnable JAR TomEE - embeddable app server built on Tomcat WebSphere Liberty - generate server subset Java EE on a diet already
  • 11.
    @omihalyi Payara Micro payara.fish/payara_micro ●Executable JAR ( <60MB ) ○ Java EE, JCache, CDI event bus ● Automatic clustering and replication ● Package app as executable JAR java -jar payara.jar --deploy app.war or with the maven plugin:
  • 12.
    @omihalyi Payara Micro payara.fish/payara_micro ●Executable JAR ( <60MB ) ○ Java EE, JCache, CDI event bus ● Automatic clustering and replication ● Package app as executable JAR java -jar payara.jar --deploy app.war -- outputUberJar app.jar
  • 13.
    @omihalyi PathFinder web appwith a REST endpoint in 3 flavors DEMO https://github.com/OndrejM-demonstrations/Pathfinder-comparison
  • 14.
    @omihalyi After the dietapplied... WildFly Swarm Payara Micro Spring Boot File size 105 MB 56 MB 22 MB Heap size (after GC) 28 MB 30 MB 29 MB Boot time 12 s 14 s ( 10 s --noCluster) 7 s
  • 15.
    @omihalyi Java EE isabout standards Can it provide solutions? ● REST (4.56) ● OAuth (4.24), Secrets (4.07) ● Configuration (4.17) ● Reactive (3.97) ● Service Health (3.89) Survey from 2016
  • 16.
    @omihalyi Things have changed... JavaEE needs to adapt or be replaced in many cases HTTP/2 OAuth NoSQL Docker Reactive Streams Micro Services
  • 17.
    @omihalyi We need heroeshere! ● Supporting development and adoption of Java EE ● Lobbying vendors to fulfill their commitments ● Finding ways of process & collaboration improvements ● Companies ● JSR Expert Group members ● Java User Groups ● Individual developers
  • 18.
    @omihalyi Oracle revised JavaEE plans at JavaOne 2016
  • 19.
    @omihalyi Oracle revised plansagain in 2017 ● Java EE 8 the last version governed by Oracle ● Plans to transfer Java EE to the Eclipse Foundation ● Possibly with a different name
  • 20.
    @omihalyi Meanwhile vendors &community cooperate
  • 21.
    Optimizing Enterprise Java fora Microservices Architecture MicroProfile.io MicroProfile Discussion Forum (bit.ly/MicroProfileForum) MicroProfile Examples (https://github.com/eclipse/microprofile-conference)
  • 22.
    @omihalyi MicroProfile Release Philosophy Release1.0 JAX-RS CDI JSON-P Build consensus Standardize Rapidly iterate and innovate
  • 23.
    @omihalyi Bridging Community andStandards Choice Application Portability Backwards Compatibility Broad Collaboration Encouraged Experimentation Fail Fast Rapid Innovation
  • 24.
    MicroProfile 1.1 August 8,2017 24 MicroProfile 1.2 End of September, 2017
  • 25.
    Eclipse MicroProfile 1.1(Aug, 2017) 25 MicroProfile 1.1 = New = No change from last release JAX-RS 2.0JSON-P 1.0CDI 1.2 Config 1.0
  • 26.
    Configuration 1.0 Applications needto be configured based on a running environment. It must be possible to modify configuration data from outside an application so that the application itself does not need to be repackaged 26 Dev Test Prod @Inject @ConfigProperty(name = "myservice.url") URL myService; @Inject Config config; myService = config .getValue("myservice.url", URL.class)
  • 27.
    Eclipse MicroProfile 1.2(Sep, 2017) 27 MicroProfile 1.2 = New = No change from last release JAX-RS 2.0JSON-P 1.0CDI 1.2 Config 1.1 Fault Tolerance 1.0 JWT Propagation 1.0 Health Check 1.0 Metrics 1.0
  • 28.
    @omihalyi DEMO ARCHITECTURE WF SwarmWebSphere LP TomEE Payara Micro https://github.com/eclipse/microprofile-conference
  • 29.
    @omihalyi The MicroProfile demoin numbers Vendor Service JAR size Heap Starts in WebSphere LP Session Voting 36 MB 30 MB 8 sec. WildFly Swarm Session 93 MB 37 MB 11 sec. Payara Micro Session Schedule 33 MB 27 MB 8 sec. TomEE Speaker 35 MB 30 MB 7 sec.
  • 30.
    @omihalyi The nature ofMicroProfile ● Sand-box Approach to Open Contribution ● High Cadence Release Philosophy ● Transparency at all Stages ○ Public forum & chat, github, Eclipse foundation, Apache License ● CDI Centric Programming Model
  • 31.
    @omihalyi Join the Discussion! https://groups.google.com/forum/#!forum/microprofile Oreven submit your idea as a PR in the sandbox project! https://github.com/eclipse/microprofile- sandbox
  • 32.
    @omihalyi The quest continues... ●MicroProfile as a platform to cooperate faster ○ feed JCP with proposals ● Future Java EE targeting cloud and microservices ○ under community-friendly Eclipse Foundation ● JavaEE Guardians to lobby for the communityJoin the adventure!

Editor's Notes

  • #23  The goal of the MicroProfile release philosophy is to strike a healthy balance between the benefits of open collaboration and the value of standards. Release 1.0 is scheduled for Sept, 2016 to get the MicroProfile into developers hands quickly. Vendors and various open source projects will continue to innovate with microservices within their own communities, but collaborate in areas of common interest. For example, there are common use cases that need to be addressed, popular 3rd party frameworks and standards we all support, and perhaps new APIs that we can co-develop. Even during these iterations we’ll be raising the bar for application portability. After multiple iterations of MicroProfile there will be enough features and consensus to result in a formalized standard. The process then starts over again with a new set of use cases.
  • #24 The community and “leading edge” companies often think that standards are too slow, and enterprises often think that the community projects move too fast and introduce too much risk. The MicroProfile bridges that gap by collaborating in areas where eventual standardization and shared investment makes sense in order to increase the pace towards standardization.
  • #28 Config 1.1 introduces minor (documentation) changes to Config 1.0