Jakarta EE 9 introduce la migración del paquete javax a jakarta en la plataforma, impactando en el ecosistema y, por lo tanto, en los usuarios finales. Esta sesión cubre antecedentes, recomendaciones y estrategias basadas en código para ayudarlo a navegar por la migración de sus aplicaciones Java Enterprise usando Apache TomEE.
2. @CesarHgt @tomitribe
Who am I?
César Hernández
● Senior Software Engineer at Tomitribe
● Java Champion & Oracle Groundbreaker Ambassador
● Duke’s Choice Award 2016, 2017
● Oracle Certified Professional
● +14 experience with Java Enterprise
● Apache TomEE, Eclipse Jakarta EE Committer,
contributor for Microprofile.
● Open Source advocate, teacher and public speaker
6. @CesarHgt @tomitribe
Eclipse Foundation overview
https://www.eclipse.org/membership/documents/eclipse-foundation-overview.pdf
360+
Projects
275+
Members
1550+
Committers
195M+
Lines of code
15
Years
30
Members
8. @CesarHgt @tomitribe
How big is that?
• Jakarta EE
• 5,5 million lines of code
• 2,2 million lines of comments
• 61k files
• TCK (Test Suite)
• 4,6 million lines of code
• 1,1 million lines of comments
• 34k files
11. @CesarHgt @tomitribe
What has NOT been donated?
• Java EE Brand name
• The javax.* namespace
egrep -lRZ 'javax' . | xargs -0 -l sed -i -e 's/javax/jakarta/g'
https://simpsons.fandom.com/wiki/Benjamin_(nerd)?file=Benjamin,_Doug,_and_Gary.gif
12. @CesarHgt @tomitribe
The javax.* namespace
• Oracle decides to restrict 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
13. @CesarHgt @tomitribe
javax.* to jakarta.* namespace
• Remember the stats slide
• How to maintain binary
compatible for existing
applications
• Community discussion lead
to a Big Band approach
https://jakarta.ee/resources/JakartaEE-Datasheet-July172020_final.pdf
14. @CesarHgt @tomitribe
Jakarta EE milestone release
● javax.* namespace no longer valid; need to use jakarta.*
● Implementations are available
○ API jars are available for all components
○ Initial component implementations for all APIs
○ Initial TCKs for all APIs
○ Draft Full Platform and Web Profile specifications
● Available on JDK 8; JDK 11 support planned post GA
18. @CesarHgt @tomitribe
Apache TomEE
TomEE JAX-RS Microprofile
Java Server Pages
(JSP)
Java Server Faces
(JSF)
Java Transaction
API (JTA)
Bean Validation
Enterprise
JavaBeansJavaMail API
Java API for
RESTful Web
Services (JAX-RS)
Java Persistence
API (JPA)
Contexts and
Dependency
Injection (CDI)
Java Servlets
Java
Authentication and
Authorization
Service (JAAS)
Java Authorization
Contract for
Containers (JACC)
http://tomee.apache.org/comparison.html
19. @CesarHgt @tomitribe
TomEE 9 M1
● Bytecode level
○ Eclipse Transformer
○ TomEE Patch Plugin.
● No branches. No forks. No merge-conflict hell. Just two separate
binaries from the same source; TomEE 8x for javax users: TomEE 9x for
jakarta users.
● 90% pass rate on the Jakarta EE 9 Milestone 1 Web Profile TCK.
21. @CesarHgt @tomitribe
Jakarta EE 9 Up and Running
Get the Binary :)
1. Donwload apache-tomee-9.0.0-M1-plus.zip from
https://tomee.apache.org
2. unzip apache-tomee-9.0.0-M1-plus.zip
3. chmod +x apache-tomee-plus-9.0.0-M1/bin/catalina.sh
4. ./apache-tomee-plus-9.0.0-M1/bin/catalina.sh run
22. @CesarHgt @tomitribe
Build and run
1. wget https://github.com/apache/tomee/archive/tomee-project-8.0.4.zip
2. unzip tomee-project-8.0.4.zip
3. cd tomee-tomee-project-8.0.4/examples/moviefun-rest
4. idea . #Or your favorite IDE
5. mvn verify
6. Inspec moviefun-rest-jakartaee9-8.0.4.war
7. cp target/moviefun-rest-jakartaee9-8.0.4.war <TomEE9M1_HOME>/webapps
Jakarta EE 9 Up and Running
23. @CesarHgt @tomitribe
Jakarta EE 9 Up and Running
Test the application
curl -X POST http://localhost:8080/moviefun-rest-jakartaee9-8.0.4/rest/load
curl -s http://localhost:8080/moviefun-rest-jakartaee9-8.0.4/rest/movies/ | jq
open https://tomee.apache.org/tomee-9.0/examples/moviefun-rest.html
29. @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