Java EE 7 
Soup to Nuts 
Arun Gupta, Red Hat 
@arungupta
DEVELOPER 
PRODUCTIVITY 
MEETING 
ENTERPRISE 
DEMANDS 
Java EE 7 
! Batch 
! Concurrency 
! Simplified JMS 
! More annotated POJOs 
! Less boilerplate code 
! Cohesive integrated 
platform 
! WebSockets 
! JSON 
! Servlet 3.1 NIO 
! REST
Top 10 features 
• WebSocket client/ 
server endpoints 
• Batch Applications 
• JSON Processing 
• Concurrency Utilities 
• Simplified JMS API 
• Transactions in POJO 
• JAX-RS Client API 
• Default Resources 
• More annotated 
POJOs 
• Faces Flow
Compliant Application 
Servers 
• GlassFish 4.x 
• WildFly 8.x 
• JEUS 8 
• On the way … 
• JBoss EAP, WebLogic, Liberty Profile 
http://www.oracle.com/technetwork/java/javaee/overview/compatibility-jsp-136984.html
GlassFish 
• Reference Implementation (Jun 2013) 
• No commercial support from Oracle, users encouraged 
to move to WebLogic 
• Commercial support from LodgON and C2B2 
• http://zeroturnaround.com/rebellabs/abandon-fish-migrating-from-glassfish- 
to-jboss-or-tomee/ 
• 4.1 released (Sep 2014) 
• 5.0 aligned with Java EE 8
• Always on the bleeding edge! 
• Powerful CLI and REST! 
• Modular, lightweight, ~fast! 
• Module versioning! 
• Enterprise OSGi! 
• NetBeans co-bundle S 
• No real OSS community! 
• Untested clustering! 
• No commercial support/ 
adoption! 
• No upgrade path! 
• Slow releases! 
• No PaaS, Jelastic/v3 W 
• Showcase of EE development! 
• Oracle not willing to monetize?! 
• Lodgon and C2B2 offering 
commercial support 
O 
• No vision beyond RI! 
• WildFly and JBoss EAP! 
• TomEE! 
• Tomcat! 
• Liberty Profile 
T
WildFly 
• Compliance achieved in 8.0 (Feb 2014) 
• Commercial support coming in JBoss Enterprise 
Application Platform (EAP) 7 
• 8.1 released (May 2014), 9.0 later this year 
• EAP 7 next year
• Commercially backed by Red 
Hat (JBoss EAP)! 
• Defined OSS process, 
contributions are easy (github)! 
• Modular, lightweight, fast! 
• Powerful CLI, REST, Java API! 
• Active community members! 
• Lot of docs, 3rd-party books, 
articles! 
• High performance web container! 
• Reduced port usage S 
• Need explicit migration to JBoss 
EAP! 
• Migration issues from AS 7 
W 
• Admin console delinked from 
internal model! 
• Integrated NoSQL! 
• Co-bundle with NetBeans or 
Eclipse! 
• Intelligent Management 
O 
• WebSphere ND! 
• WebLogic Server! 
• Tomcat! 
T
JEUS 
• Developer Preview available 
• Final coming in 2014 
• Roadmap ? 
Preparing to install... 
Extracting the installation resources from the installer archive... 
Configuring the installer for this system's environment... ! 
Launching installer... ! 
Preparing CONSOLE Mode Installation... ! 
=============================================================================== 
JEUS8.0 (created with InstallAnywhere by Macrovision) 
------------------------------------------------------------------------------- !! 
The installer cannot run on your configuration. It will now quit.
• Java EE 7 compliance! 
• Strong in Korea? 
S 
• Could not install Developer 
Preview on Mac OSX! 
• No IDE integration! 
• Verbose CLI tools, no defaults! 
• Limited forum support! 
• Poor docs W 
• One of the first ones to achieve 
compliance 
O 
• WildFly and JBoss EAP! 
• TomEE 
T
Components 
Component JSR GlassFish WildFly JEUS 
Java API for WebSocket 356 RI/Tyrus Undertow Internal 
Java API for JSON Processing 353 RI RI* ?? 
Concurrency Utilities for Java EE 236 RI RI* Internal 
Batch Application for Java Platform 352 RI JBeret RI* 
Java API for RESTful Web Services 339 RI/Jersey RESTEasy RI* 
Java Message Service 343 RI/OpenMQ HornetQ JORAM 
Context and Dependency Injection 346 RI* RI/Weld RI* 
Bean Validation 349 RI* RI/Hibernate 
Validator 
RI* 
Java Persistence API 338 RI/EclipseLink HIbernate RI* 
Java Connector Architecture 322 RI/OpenMQ HornetQ Internal 
Java Transaction API 907 Internal Narayana JOTM 
JavaServer Faces 344 RI/Mojarra RI* RI* + MyFaces 
Expression Language 341 RI RI* RI* 
Servlet 340 RI/Internal Undertow Tomcat + Jetty 
Enterprise JavaBeans 345 RI/Internal Internal EasyBeans 
Java API for XML-based Web Services 224 RI/Metro JBossWS ?? 
108 MB 124 MB 153 MB 
http://arjan-tijms.blogspot.com/2014/05/implementation-components-used-by.html
NetBeans 
• Pleasant experience OOTB 
• Java, HTML5, PHP, C/C++, … 
• Comprehensive Java EE 7 support 
• Support for GlassFish, WildFly
• Pleasant experience OOTB! 
• Maven! 
• Wizards for WebSocket, JAX-RS, 
JPA, CDI, EJB, Bean Validation, 
JSF, …! 
• No plugin hunting! 
working with GlassFish teamS 
• Tight integration, ease-of-use 
• Concerns around commitment 
from Oracle! 
• Multiple IDEs from Oracle! 
• Low usage! 
W 
• Better integration with Mozilla, 
IE, Safari as with Chrome 
O 
• IntelliJ! 
• Eclipse 
T
JBoss Tools 
• Eclipse plugins for JBoss technology
• Wide Eclipse base! 
• Required plugins are packaged! 
• Mature JAX-RS, JSF, CDI, JPA 
support - wizard, content assist, 
validation, navigation! 
• Wide range of application 
servers! 
• Fast and incremental server 
deployment! 
S 
• LiveReload • Issues within base Eclipse! 
• Maven! 
• Workspace and preferences are 
not easily shareable 
W 
• Expand Java EE 6 and 7 
integration! 
• Eclipse Orion integration! 
• Provide WildFly co-bundle 
O 
• NetBeans! 
• IntelliJ! 
• Lack of OSS contributions! 
T
IntelliJ 
• Java, Scala, Groovy, and polyglot IDE 
• Java EE 7 support in 13.1 (commercial version 
only) 
• Android, Gradle, Maven 
• Develop with pleasure
• Good Java EE support! 
• Refactoring of JPQL! 
• Sophisticated Job XML 
authoring! 
• JSF 2.2 contracts and flows! 
• Navigation through CDI beans 
(with alternatives, decorators, 
etc)! 
• Maven integration! 
• Supports most app servers! 
• Good community S 
• Java EE features are only in paid 
Ultimate Edition! 
• Free for academia 
W 
• Better integration with other app 
servers 
O 
• NetBeans! 
• Eclipse 
T
Forge 
• WORAI for Java EE (using Maven) 
• Aids in automation of repetitive tasks 
• Generation of boilerplate code 
• In-built support for Java EE 6 and 7 
• Extensible by design 
• Test-driven development 
• Offers productivity to beginners and experts alike
• CLI-driven, IDE integration! 
• Support for Java EE 6 and 7! 
• Extensible! 
• Can be scripted, automate 
repetitive tasks! 
• Test-driven development! 
• Eclipse and IntelliJ plugin S 
• Documentation for adding 
extensions 
W 
• NetBeans plugin! 
• NetBeans wizards based upon 
Forge 
O 
• Addon maintenance! 
• Specialization only for Java EE! 
• Lack of investment in new 
addons to cater to market 
demand! 
T
OpenShift 
• OpenShift Origin, Online, Enterprise 
• Pluggable cartridges 
• Multiple languages, databases, app servers 
• Gears: small, medium, large 
• FREE account: 3 gears (1 GB disk, 0.5 GB RAM) 
• Linux namespace and control groups
• Polyglot - language, datastore, 
app server! 
• Only Java EE 7 offering! 
• Community or commercial! 
• Pluggable cartridges! 
• Cool website! 
• Auto scaling in free plan! 
• Hybrid solution S 
• Ecosystem 
W 
• xPaaS 
O 
• Lack of PaaS leadership! 
• AWS Beanstalk! 
• CloudFoundry 
T
Arquillian 
Highly extensible testing 
platform for the JVM that enables 
to easily create automated tests
Getting Started 
with Java EE 7 
• Vanilla Java EE 7 application 
mvn 
archetype-generate 
--batch-mode 
-DarchetypeGroupId=org.codehaus.mojo.archetypes 
-DarchetypeArtifactId=webapp-javaee7 
-DgroupId=org.javaee7.sample 
-DartifactId=javaee7-sample 
-Dpackage=org.javaee7.sample
Getting Started 
with Java EE 7 + Arquillian 
• Testable Java EE 7 application 
mvn 
--batch-mode 
archetype:generate 
-DarchetypeGroupId=org.javaee-samples 
-DarchetypeArtifactId=javaee7-arquillian-archetype 
-DgroupId=org.samples.javaee7.arquillian 
-DartifactId=arquillian"
Testable Java EE 7 App 
• Generated profiles 
• wildfly-remote-arquillian 
• wildfly-managed-arquillian 
• glassfish-remote-arquillian 
• glassfish-embedded-arquillian
Test on WildFly 
• Download WildFly 8.1 from wildfly.org 
• Unzip and start as bin/standalone.sh 
• Run the test as: 
mvn test -Pwildfly-remote-arquillian
Test on GlassFish 
• Download GlassFish 4.1 from glassfish.org 
• Unzip and start as bin/asadmin start-domain 
• Run the test as: 
mvn test -Pglassfish-remote-wildfly
Enable Arquillian 
• Using Forge 
• addon-install-from-git --url https://github.com/forge/ 
addon-arquillian.git 
• arquillian-setup --testFramework junit -- 
containerAdapter wildfly-remote
Continuous Integration 
Development 
Jenkins 
Test 
Production 
1 
1 Started by git push 
2 
2 Run on test env 
3 
3 Check test status 
4 
4 Push changes to prod
Acknowledgments 
• John Yeary (@jyeary) 
• Antonio Goncalves (@agoncal) 
• Roberto Cortez (@radcortez) 
• Several other community members …

Java EE 7 Soup to Nuts at JavaOne 2014

  • 1.
    Java EE 7 Soup to Nuts Arun Gupta, Red Hat @arungupta
  • 2.
    DEVELOPER PRODUCTIVITY MEETING ENTERPRISE DEMANDS Java EE 7 ! Batch ! Concurrency ! Simplified JMS ! More annotated POJOs ! Less boilerplate code ! Cohesive integrated platform ! WebSockets ! JSON ! Servlet 3.1 NIO ! REST
  • 3.
    Top 10 features • WebSocket client/ server endpoints • Batch Applications • JSON Processing • Concurrency Utilities • Simplified JMS API • Transactions in POJO • JAX-RS Client API • Default Resources • More annotated POJOs • Faces Flow
  • 4.
    Compliant Application Servers • GlassFish 4.x • WildFly 8.x • JEUS 8 • On the way … • JBoss EAP, WebLogic, Liberty Profile http://www.oracle.com/technetwork/java/javaee/overview/compatibility-jsp-136984.html
  • 5.
    GlassFish • ReferenceImplementation (Jun 2013) • No commercial support from Oracle, users encouraged to move to WebLogic • Commercial support from LodgON and C2B2 • http://zeroturnaround.com/rebellabs/abandon-fish-migrating-from-glassfish- to-jboss-or-tomee/ • 4.1 released (Sep 2014) • 5.0 aligned with Java EE 8
  • 7.
    • Always onthe bleeding edge! • Powerful CLI and REST! • Modular, lightweight, ~fast! • Module versioning! • Enterprise OSGi! • NetBeans co-bundle S • No real OSS community! • Untested clustering! • No commercial support/ adoption! • No upgrade path! • Slow releases! • No PaaS, Jelastic/v3 W • Showcase of EE development! • Oracle not willing to monetize?! • Lodgon and C2B2 offering commercial support O • No vision beyond RI! • WildFly and JBoss EAP! • TomEE! • Tomcat! • Liberty Profile T
  • 8.
    WildFly • Complianceachieved in 8.0 (Feb 2014) • Commercial support coming in JBoss Enterprise Application Platform (EAP) 7 • 8.1 released (May 2014), 9.0 later this year • EAP 7 next year
  • 10.
    • Commercially backedby Red Hat (JBoss EAP)! • Defined OSS process, contributions are easy (github)! • Modular, lightweight, fast! • Powerful CLI, REST, Java API! • Active community members! • Lot of docs, 3rd-party books, articles! • High performance web container! • Reduced port usage S • Need explicit migration to JBoss EAP! • Migration issues from AS 7 W • Admin console delinked from internal model! • Integrated NoSQL! • Co-bundle with NetBeans or Eclipse! • Intelligent Management O • WebSphere ND! • WebLogic Server! • Tomcat! T
  • 11.
    JEUS • DeveloperPreview available • Final coming in 2014 • Roadmap ? Preparing to install... Extracting the installation resources from the installer archive... Configuring the installer for this system's environment... ! Launching installer... ! Preparing CONSOLE Mode Installation... ! =============================================================================== JEUS8.0 (created with InstallAnywhere by Macrovision) ------------------------------------------------------------------------------- !! The installer cannot run on your configuration. It will now quit.
  • 13.
    • Java EE7 compliance! • Strong in Korea? S • Could not install Developer Preview on Mac OSX! • No IDE integration! • Verbose CLI tools, no defaults! • Limited forum support! • Poor docs W • One of the first ones to achieve compliance O • WildFly and JBoss EAP! • TomEE T
  • 14.
    Components Component JSRGlassFish WildFly JEUS Java API for WebSocket 356 RI/Tyrus Undertow Internal Java API for JSON Processing 353 RI RI* ?? Concurrency Utilities for Java EE 236 RI RI* Internal Batch Application for Java Platform 352 RI JBeret RI* Java API for RESTful Web Services 339 RI/Jersey RESTEasy RI* Java Message Service 343 RI/OpenMQ HornetQ JORAM Context and Dependency Injection 346 RI* RI/Weld RI* Bean Validation 349 RI* RI/Hibernate Validator RI* Java Persistence API 338 RI/EclipseLink HIbernate RI* Java Connector Architecture 322 RI/OpenMQ HornetQ Internal Java Transaction API 907 Internal Narayana JOTM JavaServer Faces 344 RI/Mojarra RI* RI* + MyFaces Expression Language 341 RI RI* RI* Servlet 340 RI/Internal Undertow Tomcat + Jetty Enterprise JavaBeans 345 RI/Internal Internal EasyBeans Java API for XML-based Web Services 224 RI/Metro JBossWS ?? 108 MB 124 MB 153 MB http://arjan-tijms.blogspot.com/2014/05/implementation-components-used-by.html
  • 15.
    NetBeans • Pleasantexperience OOTB • Java, HTML5, PHP, C/C++, … • Comprehensive Java EE 7 support • Support for GlassFish, WildFly
  • 17.
    • Pleasant experienceOOTB! • Maven! • Wizards for WebSocket, JAX-RS, JPA, CDI, EJB, Bean Validation, JSF, …! • No plugin hunting! working with GlassFish teamS • Tight integration, ease-of-use • Concerns around commitment from Oracle! • Multiple IDEs from Oracle! • Low usage! W • Better integration with Mozilla, IE, Safari as with Chrome O • IntelliJ! • Eclipse T
  • 18.
    JBoss Tools •Eclipse plugins for JBoss technology
  • 20.
    • Wide Eclipsebase! • Required plugins are packaged! • Mature JAX-RS, JSF, CDI, JPA support - wizard, content assist, validation, navigation! • Wide range of application servers! • Fast and incremental server deployment! S • LiveReload • Issues within base Eclipse! • Maven! • Workspace and preferences are not easily shareable W • Expand Java EE 6 and 7 integration! • Eclipse Orion integration! • Provide WildFly co-bundle O • NetBeans! • IntelliJ! • Lack of OSS contributions! T
  • 21.
    IntelliJ • Java,Scala, Groovy, and polyglot IDE • Java EE 7 support in 13.1 (commercial version only) • Android, Gradle, Maven • Develop with pleasure
  • 22.
    • Good JavaEE support! • Refactoring of JPQL! • Sophisticated Job XML authoring! • JSF 2.2 contracts and flows! • Navigation through CDI beans (with alternatives, decorators, etc)! • Maven integration! • Supports most app servers! • Good community S • Java EE features are only in paid Ultimate Edition! • Free for academia W • Better integration with other app servers O • NetBeans! • Eclipse T
  • 23.
    Forge • WORAIfor Java EE (using Maven) • Aids in automation of repetitive tasks • Generation of boilerplate code • In-built support for Java EE 6 and 7 • Extensible by design • Test-driven development • Offers productivity to beginners and experts alike
  • 25.
    • CLI-driven, IDEintegration! • Support for Java EE 6 and 7! • Extensible! • Can be scripted, automate repetitive tasks! • Test-driven development! • Eclipse and IntelliJ plugin S • Documentation for adding extensions W • NetBeans plugin! • NetBeans wizards based upon Forge O • Addon maintenance! • Specialization only for Java EE! • Lack of investment in new addons to cater to market demand! T
  • 26.
    OpenShift • OpenShiftOrigin, Online, Enterprise • Pluggable cartridges • Multiple languages, databases, app servers • Gears: small, medium, large • FREE account: 3 gears (1 GB disk, 0.5 GB RAM) • Linux namespace and control groups
  • 28.
    • Polyglot -language, datastore, app server! • Only Java EE 7 offering! • Community or commercial! • Pluggable cartridges! • Cool website! • Auto scaling in free plan! • Hybrid solution S • Ecosystem W • xPaaS O • Lack of PaaS leadership! • AWS Beanstalk! • CloudFoundry T
  • 29.
    Arquillian Highly extensibletesting platform for the JVM that enables to easily create automated tests
  • 36.
    Getting Started withJava EE 7 • Vanilla Java EE 7 application mvn archetype-generate --batch-mode -DarchetypeGroupId=org.codehaus.mojo.archetypes -DarchetypeArtifactId=webapp-javaee7 -DgroupId=org.javaee7.sample -DartifactId=javaee7-sample -Dpackage=org.javaee7.sample
  • 37.
    Getting Started withJava EE 7 + Arquillian • Testable Java EE 7 application mvn --batch-mode archetype:generate -DarchetypeGroupId=org.javaee-samples -DarchetypeArtifactId=javaee7-arquillian-archetype -DgroupId=org.samples.javaee7.arquillian -DartifactId=arquillian"
  • 38.
    Testable Java EE7 App • Generated profiles • wildfly-remote-arquillian • wildfly-managed-arquillian • glassfish-remote-arquillian • glassfish-embedded-arquillian
  • 39.
    Test on WildFly • Download WildFly 8.1 from wildfly.org • Unzip and start as bin/standalone.sh • Run the test as: mvn test -Pwildfly-remote-arquillian
  • 40.
    Test on GlassFish • Download GlassFish 4.1 from glassfish.org • Unzip and start as bin/asadmin start-domain • Run the test as: mvn test -Pglassfish-remote-wildfly
  • 41.
    Enable Arquillian •Using Forge • addon-install-from-git --url https://github.com/forge/ addon-arquillian.git • arquillian-setup --testFramework junit -- containerAdapter wildfly-remote
  • 42.
    Continuous Integration Development Jenkins Test Production 1 1 Started by git push 2 2 Run on test env 3 3 Check test status 4 4 Push changes to prod
  • 43.
    Acknowledgments • JohnYeary (@jyeary) • Antonio Goncalves (@agoncal) • Roberto Cortez (@radcortez) • Several other community members …