@CesarHgt @tomitribe
César Hernández
7
Recomendaciones
para migrar tus aplicaciones
a Jakarta EE con Apache TomEE
@CesarHgt @tomitribe
César Hernández
● Senior Software Engineer at Tomitribe
● Java Champion, Oracle Groundbreaker Ambassador, Super Frogs
program
● Duke’s Choice Award 2016, 2017
● Oracle Certified Professional
● +15 experience with Java Enterprise
● Apache TomEE, Jakarta Committer, Microprofile contributor
● Open Source advocate and public speaker
@CesarHgt @tomitribe
#1
Comprender el Contexto
@CesarHgt @tomitribe
Contexto
● Enfoque (DDA)
○ ¿De donde vengo?
○ ¿Donde estoy?
○ ¿A donde voy?
● Técnico / Estratégico / negocio, etc.
● Arquitectura Software
● Infraestructura
● Selecciona el alcance
@CesarHgt @tomitribe
https://en.wikipedia.org/wiki/Service-oriented_architecture
https://12factor.net/
https://martinfowler.com/articles/microservices.html
@CesarHgt @tomitribe
¿Cloud Native... Java?
https://landscape.cncf.io/
@CesarHgt @tomitribe
#2
Analiza el impacto de
javax.* a jakarta.*
@CesarHgt @tomitribe
Jakarta EE 9.1
● javax.* namespace ya no es válido;
migrar a jakarta.*
● Soporte para Java SE 11
● Plataforma para innovación
● Baja barrera de entrada
● Fácil migración
jakarta.ee/release/9.1
@CesarHgt @tomitribe
El namespace javax.*
• Oracle decide restringir javax.* namespace
• Unchanged APIs can still use javax.* namespace
• Any other changes not allowed
• Adding a value to an enum
• Overriding/adding a method signature
• Adding default methods in interfaces
• Compensating for Java language changes
https://www.tomitribe.com/jakarta/ns/poll/vote
@CesarHgt @tomitribe
javax.* a jakarta.* namespace
https://jakarta.ee/resources/JakartaEE-Datasheet-July172020_final.pdf
@CesarHgt @tomitribe
# 3
Dos enfoques para realizar la migración
@CesarHgt @tomitribe
● Eclipse Transformer
○ Mutación de archivos JAR o WAR
○ https://projects.eclipse.org/projects/technology.transformer
● Apache Tomcat migration tool for Jakarta EE
○ Migra aplicaciones que corren en Apache Tomcat 9 a Apache Tomcat 10
○ https://github.com/apache/tomcat-jakartaee-migration
● Tomitribe fork Transformer Maven Plugin
○ https://github.com/tomitribe/transformer
Enfoque a nível de bytecode
@CesarHgt @tomitribe
Apache Tomcat migration tool for Jakarta EE
Descargar https://tomcat.apache.org/download-migration.cgi
java -jar jakartaee-migration-*-shaded.jar <origen> <destino>
@CesarHgt @tomitribe
● Eclipse Transformer
○ Mutación de archivos JAR o WAR
○ https://projects.eclipse.org/projects/technology.transformer
● Apache Tomcat migration tool for Jakarta EE
○ Migra aplicaciones que corren en Apache Tomcat 9 a Apache Tomcat 10
○ https://github.com/apache/tomcat-jakartaee-migration
● Tomitribe fork Transformer Maven Plugin
○ https://github.com/tomitribe/transformer
Enfoque a nível de bytecode
@CesarHgt @tomitribe
Tomitribe fork Transformer Maven Plugin
Agrega a tu pom.xml el plugin
<plugin>
<groupId>org.tomitribe.transformer</groupId>
<artifactId>org.eclipse.transformer.maven</artifactId>
<version>0.3.0-SNAPSHOT</version>
<configuration>
<classifier>jakartaee9</classifier>
</configuration>
<executions>
<execution>
<goals>
<goal>run</goal>
</goals>
<phase>package</phase>
</execution>
</executions>
</plugin>
@CesarHgt @tomitribe
● IDE, bash, etc.
Enfoque a nível de código
egrep -lRZ 'javax' . | xargs -0 -l sed -i -e 's/javax/jakarta/g'
@CesarHgt @tomitribe
IDE
@CesarHgt @tomitribe
IDE
@CesarHgt @tomitribe
# 4
Automatiza tu entorno local
@CesarHgt @tomitribe
● Apache Tomcat + Java EE = Apache TomEE
● Jakarta EE 9.1 Web Profile compatible
● Construido con componentes Apache
● MicroProfile compliant
● Footprint: 30MB zip, 100~MB memoria
● TomEE 9.0.0-M7 (javax -> jakarta & Java 11)
tomee.apache.org
@CesarHgt @tomitribe
tomitribe.com/blog/apache-tomee-jakarta-ee-certified-after-10-years
@CesarHgt @tomitribe
● Forma más rápida de descargar, instalar y ejecutar TomEE con o sin
aplicaciones web
● Altamente configurable para entornos de CI
● tomee.apache.org/latest/docs/developer/tools/maven-plugins.html
$ mvn clean install tomee
TomEE Maven Plugin
@CesarHgt @tomitribe
tomee-maven-plugin
Agrega a tu pom.xml el plugin
<plugin>
<groupId>org.apache.tomee.maven</groupId>
<artifactId>tomee-maven-plugin</artifactId>
<version>8.0.5</version>
<configuration>
<tomeeVersion>9.0.0-M3</tomeeVersion>
<tomeeGroupId>org.apache.tomee.jakarta</tomeeGroupId>
<tomeeClassifier>plume</tomeeClassifier>
<warFile>
${project.build.directory}/javaee-tomee-demo-jakartaee9-1.0.0.war
</warFile>
</configuration>
</plugin>
@CesarHgt @tomitribe
#5
Aplicar Integración
y
Entrega contínua
@CesarHgt @tomitribe
Apoyo en CD & CI
● Reducción en costo en detección de errores
● Mejora la trazabilidad
● Reduce la deuda técnica
● Nos prepara para el futuro
http://corpsite-blog.s3.amazonaws.com/blog/wp-content/uploads/2014/10/Screen-Shot-2014-10-21-at-10.35.35-AM-4061918db9a7d7de7a7ccc9587164f58.png
@CesarHgt @tomitribe
https://landscape.cd.foundation/
@CesarHgt @tomitribe
#6
Aprender para contribuir
@CesarHgt @tomitribe
#7
Contribuir para aprender
@CesarHgt @tomitribe
https://world-wide-jugs.github.io/GlobalWWJugs/
@CesarHgt @tomitribe
How to contribute in Jakarta EE?
• jakarta.ee/connect
○ Community, Working Group and Projects Mailing List
○ Slack, Newsletter, Blogs, Social Media
• Join Jakarta EE community meetings
• Join EE4J top project and Jakarta EE working group
• Spread the word by speaking at conferences or blogging
@CesarHgt @tomitribe
How to contribute in TomEE?
• tomee.apache.org/community
• Share your migration takeaways
• Documentation
• Website fixes
• Code tests
• Code examples
• Coverage increase for unit, integration, performance and static tests
• Workshops
@CesarHgt @tomitribe
● https://tomee.apache.org/docs.html
● https://itnext.io/deploying-jakarta-ee-9-applications-to-apache-tomee-
e1a9b9399d9b
● https://www.tomitribe.com/jakarta/ns/poll/vote
● https://www.agilejava.eu/2021/01/22/migration-guide/
● https://github.com/hantsy/jakartaee9-starter-boilerplate/blob/master/
docs/deploy-tomee.md
Resources
@CesarHgt @tomitribe
Gracias
César Hernández
7 Recomendaciones
para migrar tus aplicaciones
a Jakarta EE con Apache TomEE

7 recomendaciones para migrar tus aplicaciones a Jakarta EE utilizando Apache Tomee JakartaOne ES 2021