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 …