Slide 1

Slide 1 text

Ondro Mihályi @OmniFishEE Migrating from Java EE To SpringBoot or something else?

Slide 2

Slide 2 text

Ondro Mihályi @OmniFishEE Why to move from old Java EE servers? WebLogic, WebSphere ● Heavy and bloated ● Outdated – Java 11, Java EE 8 ● Require expensive license Other servers ● worth to upgrade or migrate to something else?

Slide 3

Slide 3 text

Ondro Mihályi @OmniFishEE Why to move from old Java EE servers? WebLogic, WebSphere ● Heavy and bloated ● Outdated – Java 11, Java EE 8 ● Require expensive license → There must be a better way! Other servers ● worth to upgrade or migrate to something else?

Slide 4

Slide 4 text

Ondro Mihályi @OmniFishEE Apache Tomcat ● The most popular Java server ● Lightweight – Starts very fast (600ms), low memory (10MB), but not much functionality ● Needs libraries or a framework – Then it’s not so simple

Slide 5

Slide 5 text

Ondro Mihályi @OmniFishEE Apache Tomcat ● The most popular Java server ● Lightweight – Starts very fast (600ms), low memory (10MB), but not much functionality ● Needs libraries or a framework – Then it’s not so simple

Slide 6

Slide 6 text

Ondro Mihályi @OmniFishEE Spring Boot (with Tomcat) ● Fast startup (2s), low memory (16 MB) ● Most widely used framework ● A lot of resources to get started ● Fast dev cycle (Spring Boot dev tools) ● Wide range of integrations ● Uber JAR, Docker, native binary, Cloud func. ● Lot of dependencies in the project

Slide 7

Slide 7 text

Ondro Mihályi @OmniFishEE Migrate to SpringBoot? ● Very good option for new services ● Java EE 8 code requires refactoring – Only a few APIs supported natively – Some can be supported (JAX-RS, JSF) – Others not (EJB, CDI, Security) ● Risk maintaining both Java EE & Spring

Slide 8

Slide 8 text

Ondro Mihályi @OmniFishEE What about existing Java EE code? ➔Upgrade to a new server version (if possible) ➔Migrate to a different, modern app server ➔To a modern runtime with Jakarta EE support

Slide 9

Slide 9 text

Ondro Mihályi @OmniFishEE Upgrade to a new version ● Not possible with WebLogic or WebSphere, only Java EE 8 and Java 11 → Migrate to another app server ● Many other app servers support Jakarta EE 10 – https://jakarta.ee/compatibility/certification/10/ 1

Slide 10

Slide 10 text

Ondro Mihályi @OmniFishEE Migrate to a modern app server ● Many opensource options: – GlassFish, WildFly, Payara, OpenLiberty ● Eclipse GlassFish – Fastest to provide new Jakarta EE – Actively developed, monthly releases – Commercially supported by OmniFish 2

Slide 11

Slide 11 text

Ondro Mihályi @OmniFishEE GlassFish Server ● Pretty fast startup (5s), low memory (55 MB) ● Many resources to get started with Jakarta EE ● Fast dev cycle with IDE plugins ● Range of Jakarta EE integrations ● Simple build config (just Jakarta EE API) ● Install and config server separately ● Deploy from directory, Docker container ● No native build or cloud functions 2

Slide 12

Slide 12 text

Ondro Mihályi @OmniFishEE GlassFish Embedded ● Fast startup (3s), low memory (40 MB) ● Simple build config (just Jakarta EE API) ● Fast dev cycle requires a build step ● Run from command line, from Java app ● Docker container ● No native build or cloud functions 2

Slide 13

Slide 13 text

Ondro Mihályi @OmniFishEE Migrating to GlassFish Server ● Migrating from Java EE 8 to Jakarta EE 10 – Straightforward, few breaking changes ● Many components shared with WebLogic – Supports similar features (admin UI, clustering with admin server, session replication, etc.) – Good support for Oracle DB with EclipseLink 2

Slide 14

Slide 14 text

Ondro Mihályi @OmniFishEE javax.* jakarta.* package prefix → ● Jakarta EE 9 same as Java EE 8 but jakarta.* prefix ● Automated solutions: – Eclipse Transformer – OpenRewrite – Guides with best practices 2

Slide 15

Slide 15 text

Ondro Mihályi @OmniFishEE Modern Jakarta EE runtimes? No app server Runnable JAR Flexible deployments Composable (plugins) Support some or all Jakarta EE Fast startup, low memory

Slide 16

Slide 16 text

Ondro Mihályi @OmniFishEE Modern runtimes - Quarkus ● Very fast startup (1s), low memory (10 MB) ● Many Jakarta EE & MicroProfile APIs supported ● A lot of resources to get started ● Quarkus dev mode, live reload ● Wide range of integrations ● Runnable JAR, Docker, Cloud functions ● Excellent native binary support ● Lot of dependencies in the project 3

Slide 17

Slide 17 text

Ondro Mihályi @OmniFishEE Modern runtimes – Piranha Cloud ● Very fast startup (200ms), low memory (8 MB) ● Almost all Jakarta EE Web Profile ● Not many resources to get started ● No dev mode ● Range of integrations via Jakarta EE ● Simple build config (just Jakarta EE API) ● Runnable JAR, runnable from Java app ● Lot of dependencies, simplified via distributions 3

Slide 18

Slide 18 text

Ondro Mihályi @OmniFishEE Migration paths 8 SpringBoot → New code, huge ecosystem Modern app servers (GlassFish, WildFly) → Same code, modern engine Modern runtimes (Quarkus, Piranha) → New code, fast startup, productivity → Similar code, lightweight engine 10

Slide 19

Slide 19 text

Ondro Mihályi @OmniFishEE Questions

Slide 20

Slide 20 text

Ondro Mihályi @OmniFishEE Thank you! Jakarta EE Consultancy (migrations, tuning) Jakarta EE Application Development GlassFish Server Support Jakarta EE Training omnifish.ee OmniFish - Jakarta EE Consulting & Support