Eclipse MicroProfile Starter CONFIDENTIAL Designator with Quarkus OpenAlt 2019 Michal Karm Babacek Martin Štefanko @_karm @xstefank Principal Quality Engineer, Red Hat Software Engineer, Red Hat C/Java/Go programmer focused on Apache HTTP Server, Tomcat, load-balancing, MicroProfile committer, Microservices enthusiast high-availability, containers and MicroProfile by day; Coding fluorescence JBoss EAP sustaining engineer microscopy data processing and DNS malware protection toys by night. Avid user JBoss Enterprise Application Platform - application server of Wildfly and Infinispan clustering. Considers 1MB being plenty of memory and WildFly application server - upstream community version of JBoss EAP 16ms plenty of time. Java EE / Jakarta EE specifications (e.g. JAX-RS, CDI, JPA) 1 1/65535
CONFIDENTIAL Designator Agenda ● High-level intro to MicroProfile (15 minutes) (Martin) ● High-level intro to Quarkus (5 minutes) (Karm) ● Demo of MP Starter: (15 minutes) (Karm) ● Demo of MP Starter REST API (5 minutes) (Karm) ● More MicroProfile specs and Q&A (Martin, Karm) 2
Enterprise Java in past 20 years Java EE (currently Jakarta EE) ● Java EE 5 - May 11, 2006 ○ Java EE 6 - December 10, 2009 ○ Java EE 7 - June 12, 2013 ○ Java EE 8 - August 31, 2017 ○ 3
MicroProfile Eclipse MicroProfile is an open-source community specification for Enterprise ● Java microservices A community of individuals, organizations, and vendors collaborating within an ● open source (Eclipse) project to bring microservices to the Enterprise Java community 4
MicroProfile 5
+Under discussion Long Running Actions (LRA) ● Service mesh ● GraphQL ● Logging ● ... ● 6
Community - individuals, organizations, vendors 7
Current MicroProfile implementations And some are In Progress: Quarkus, WildFly... 8
Differences from Java EE open source and open community ● code first approach ● release cadence ● MP 1.0 - Sep 2016 ○ MP 1.1 - Aug 2017 ○ MP 1.2 - Sep 2017 ○ MP 1.3 - Jan 2018 ○ MP 1.4 / MP 2.0 - Jun 2018 ○ MP 2.1 - Oct 2018 ○ 9
Differences from Java EE ● 3 releases per year (Feb, Jun, Oct) MP 2.2 - Feb 2019 ○ MP 3.0 - Jun 2019 ○ MP 3.1 - Oct 2019 ○ ... ○ 10
MicroProfile 3.2 11
microprofile.io 12
What is MicroProfile Starter MicroProfile Starter generates working sample code for MicroProfile specifications: ● To lower the learning curve for using MicroProfile specifications ○ To increase developer productivity ○ To deliver solutions faster to the business ○ A starter/generator had been discussed by the community many times before ● Earliest whisper by James Strachan back at Devoxx BE 2016 ○ An independent community member, Rudy De Busscher, on Aug 21, 2018, attended the ● bi-weekly MicroProfile community Hangout call and demoed a prototype that he had developed - (Rudy was hired by Payara subsequently) Starter team was assembled soon after. Starter Beta released on Feb 6, 2019. ● Current team members are from many organizations and communities: Rudy, Karm, YK, Ryan, ● etc. If you’d like to participate and help us develop the Starter, please post your desire to help us at ● microprofile@googlegroups.com to get you looped in Need help developing extensions for IntelliJ IDEA, Eclipse IDE, Netbeans, Eclipse Che ○ 13
start.microprofile.io ● Examples generator for a variety of runtimes ● This is NOT just a pom.xml generator ● Sports REST API for easier integration ● Best for your first contact with MicroProfile, using your favourite runtime you are used to 14
❤ How to contribute ❤ ● Runtimes implementations ○ Adding your MP implementation - ensure it passes the MP TCKs for the umbrella release and is added to the MP implementations page ○ Improving current runtimes implementations. Are you a Launcher or KumuluzEE fan? Helidon expert? Take a look... ● Contribute to develop more code examples for MP specs ○ Follow these instructions ○ Do a Pull Request on the Starter project ○ Add your implementation or new code examples ○ Test your additions to the MicroProfile starter project ○ Community review, requires 2 acks ○ Merge 15
What is Quarkus? A Kubernetes Native Java stack tailored for GraalVM & OpenJDK HotSpot, ● crafted from the best of breed Java libraries and standards Great interoperability with containers, small memory footprint ● Toolchain for building Java applications with a lot of heavy lifting done at build ● time instead of runtime 16
Best of breed frameworks and standards Eclipse Vert.x Hibernate RESTEasy Apache Camel Eclipse MicroProfile Netty Kubernetes OpenShift Jaeger Prometheus Apache Kafka Infinispan For a complete list of supported extensions: https://github.com/quarkusio/quarkus/tree/master/extensions 17
Developer joy A cohesive platform for optimized developer joy: Based on standards, but not limited ● Unified configuration ● Zero config, live reload in the blink of an eye ● Streamlined code for the 80% common ● usages, flexible for the 20% No hassle native executable generation ● 18
Supersonic Subatomic Java - Memory footprint REST Quarkus + GraalVM Quarkus + OpenJDK Traditional Cloud-Native Stack 13 MB 74 MB 140 MB RSS (Resident Set Size) 19
Supersonic Subatomic Java: Startup time REST Quarkus + GraalVM 0.014 Seconds Quarkus + OpenJDK 0.75 Seconds Traditional Cloud-Native Stack 4.3 Seconds REST + CRUD Quarkus + GraalVM 0.055 Seconds Quarkus + OpenJDK 2.5 Seconds Traditional Cloud-Native Stack 9.5 Seconds Time to first response 20 Boot + First Response Time (in seconds)
Supersonic Subatomic Java JVM mode and Native executable trade-offs Startup Time Packaging Size ...puts Java in FaaS field alongside Go and JS... Memory Footprint Throughput saves $ with cloud providers... 21
Build / Dev / Native modes You can use Quarkus to build a small uberjar ● https://quarkus.io/guides/maven-tooling.html#uber-jar-maven ○ Use HotSpot or GraalVM to to run it ○ You can work in Dev mode ● where Quarkus monitors your changed files, quickly recompiles ○ enables hot deployment with background compilation ○ https://quarkus.io/guides/maven-tooling.html#development-mode ○ You can use Quarkus to easily create a single statically linked executable ● Leverages SubstrateVM and Native image from GraalVM toolchain ○ Single executable for particular architecture ○ https://quarkus.io/guides/building-native-image-guide ○ 22
And now, on to the demos! 1. Starter web page, examples https://starter.karms.biz/ 2. Downloading Quarkus 3. Your generated examples 4. Other runtimes, Payara, Helidon… 5. REST API 23
MicroProfile YouTube Channel Twitter @MicroProfileIO LinkedIn MicroProfile.IO FB MicroProfile Quarkus YouTube Channel Twitter @QuarkusIO LinkedIn Quarkusio FB Quarkusio
To get the instructions for the demos you have seen today, go to: bit.ly/MPOpenAlt
MicroProfile - get involved! Google Groups MicroProfile Projects Video Hangouts Bi-Weekly & Quarterly YouTube Channel General community Meetings 26
Known implementations In Progress to pass TCK: 27
Eclipse MicroProfile 3.1 Oct 2019 <dependency> <groupId> org.eclipse.microprofile </groupId> <artifactId> microprofile </artifactId> <version> ${microProfile.version} </version> <type>pom</type> </dependency> …or select specs as needed… 28
What?! This is the takeaway: Eclipse MicroProfile, Optimizing Enterprise Java for a Microservices Architecture ● https://microprofile.io/ Starter to generate your examples projects for selected APIs ● https://start.microprofile.io/ https://starter.karms.biz/ (with Quarkus) Quarkus runtime for your next Java application ● https://quarkus.io/ 29
Questions? 30
CONFIDENTIAL Designator Thank you 31
Recommend
More recommend