The Java EE 7 Platform: Developing for the Cloud

  • 4,474 views
Uploaded on

Slides used by Arun P. Gupta on his "The Java EE 7 Platform: Developing for the Cloud" talk for the Codemotion 2012 in Madrid.

Slides used by Arun P. Gupta on his "The Java EE 7 Platform: Developing for the Cloud" talk for the Codemotion 2012 in Madrid.

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
4,474
On Slideshare
0
From Embeds
0
Number of Embeds
4

Actions

Shares
Downloads
130
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide
  • Java EE 6 was released over 2 years. Lets take a look at the top 10 features that are generally appreciated by users.Complete list of compatible vendors:http://www.oracle.com/technetwork/java/javaee/overview/compatibility-jsp-136984.html
  • One <pinky finger to mouth> BILLION downloads ..<Pause .. As if audience member in row one is saying something>Oh, 40 million downloadsBy far the #1 development platform for enterprise applicationsAnd Java EE 6 has taken offFastest roll-out by application server implementers… in fact, just two days ago the we got our seventh implementation … from Apache! (applause?)... So, are we done yet? (Or are those some storm clouds on the horizon?)This page shows the list of Java EE compliant vendors. The complete list is at: http://www.oracle.com/technetwork/java/javaee/overview/compatibility-jsp-136984.htmlThere is a mix of open source and commercial vendors. Java EE 6 has seen the fastest implementation of a Java EE release ever. Its just over 2 years and there 8 compliant (2 from Apache) implementations. Caucho and Apache TomEE are the new players to the game because of Web Profile.
  • But all of these solutions, across the whole IaaS, PaaS, and SaaS spectrum, require enterprises to buy into vendor-specific offerings. And while a big part of Java EE’s success has been vendor value-add, it’s also been very successful in helping avoid vendor lock-in thanks to portability. Today, all the major stakeholders in the EE area stand in agreement that we need to move EE forward rapidly for the cloud.Already many of these are Java based and some even on Java EE but we need common standards here – to much is left to the developer and implementer
  • At Oracle, and working with our partners, we’ve got three areas of focus, three areas of investment going on in Java EE.Focused on cloud. Public and private cloud. Working in IaaSenvironments. SupportingElasticity and ContinuousAvailability.Focused on modularity. Leveraging the work Adam described in Java SE.Focused on emergingweb standards, including HTML5, JSON and websockets.Let’stake a look at some of whatwe’redoing in enterprise Java for the cloud.
  • Initially our Java EE applications were deployed on a single node with a single point of failure. Over a period of time, the Java EE applications could be deployed on multiple instances spanning multiple machines/nodes. This allows the application to scale very easily and also provide session failover capabilities. The Java EE 7 moves the bar further. It will allow QoS attributes to be specified as part of services metadata that will provide the lower and upper bounds of the Java EE cluster. This cluster will be self-adjusting, dynamically expanding and shrinking based upon metrics defined by the user. The minimum number of instances will be automatically started and more instances will be added if the metrics are met. Some typical examples are:60% of CPU is utilized across the cluster80% of memory is utilized in the cluster100 concurrent sessions
  • Lets take an example scenario that puts all the concepts explained so far in a perspective.A software company writes an application, submits it to a PaaS provider, then any number of tenants sign up for the application, deploy it, their end users access it.
  • SimplyCRM, a vendor of a CRM product, decides to enter the software-on-demand space
  • Steve, an Application Developer at SimplyCRM, creates a version of the company's flagship CRM product packaged as a PaaS Application.
  • Once the application has been tested and is cleared for production use, Steve hands off the application to Sandra, an employee at SimplyCRM who is the point of contact with the PaaS Providers the company intends to partner with. Sandra signs up SimplyCRM as a PaaS Customer of DiabloCloud, a PaaS Provider. As part of the deal, the two companies agree on the terms under which usage of the SimplyCRM application will be billed to DiabloCloud Customers.Sandra then submits the application on the DiabloCloud infrastructure, acting as the Application Submitter. She then interacts with Dean, DiabloCloud'sPaaS Administrator, to publish the application so that other PaaS Customers can find it
  • As the Application Submitter, Sandra is responsible for insuring that the necessary artifacts and metadata for customization and configuration are available so that other Customers can reconfigure and customize the application when they deploy it for their own use (and/or use by their own end users).
  • Some time later, ExtraServices Inc., a consultancy, discovers SimplyCRM 's PaaS Application offering on top of DiabloCloud.
  • Wishing to move to an on-demand CRM system, ExtraServices Inc. signs up as a PaaS Customer of DiabloCloud, interacting with their PaaS Account Manager.
  • Ed, ExtraServices' Deployer, works with DiabloCloud's System Administrator Danny to ensure that the SimplyCRM application is customized and deployed to address the needs of ExtraServices. This includes making sure that the expected ExtraServices Inc. End-Users of the application have proper credentials to access it.
  • Danny (System Administrator) verifies the application has been provisioned and configured to meet ExtraServices Inc.'s needs.
  • And the app is now ready.
  • Finally, Erika, a End-User at ExtraServices Inc., starts using the SimplyCRM application running on the DiabloCloud infrastructure.
  • ExtraServicesInc’sApplication administrator can manage the application.
  • DiabloCloud will meter ExtraServices Inc.' use of cloud resources in general and of the SimplyCRM application. It will then bill ExtraServices Inc. for their usage and, if properly authorized by SimplyCRM, for any costs associated with the ExtraServices Inc.'s usage of the SimplyCRM application.
  • This demo show how to PaaSify a Java EE application using early work that has started in GlassFish 4.0.Complete script and video of this demo at: http://glassfish.org/javaone2011
  • Complete script and video of this demo at: http://glassfish.org/javaone2011
  • Complete script and video of this demo at: http://glassfish.org/javaone2011
  • In addition to updates to existing JSRs, there are new JSRs in the works to fill gaps in the Java EE platform. As noted, Java EE platform is continually evolving to meet the needs of server-side java computing.This diagram shows the list of JSRs targeted at the Java EE 7 platform.Gray boxes: base specs and can be extended easilyBlue boxes: minor updatesOrange: Getting major updatesGreen boxes: New candidate JSRsAll JSRs are not lead by only Oracle, RedHat and IBM are contributing
  • GlassFish Server 3 continues the pace of 2 releases per year (GlassFish v3 was December, 2009, so we’ll count that as 2010 to keep it simple). As you can see, the Oracle Acquisition has not had an impact on the cadence of Oracle-delivered releases outlined in red, although we did release GlassFish Server 3.0.1 was added 100 days after acquisition to bring GlassFish into compliance with Oracle product standards (platforms, branding, etc). GlassFish 3.1 added support for clustering, high availability, and centralized administration for Java EE 6 applications – the first app server to do so. Then 3.1.1 was a bugifx release and now 3.1.2 is scheduled for Jan 2012. GlassFish 4 will be the release vehicle for Java EE 7 and is scheduled for late 2012.

Transcript

  • 1. Main sponsorThe Java EE 7 Platform: Developing for the CloudArun Gupta, Java EE & GlassFish Guyblogs.oracle.com/arungupta, @arungupta
  • 2. The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle.2 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 3. Java EE 6 Platform December 10, 20093 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 4. Java EE 6 – Key Statistics • 40+ Million Java EE 6 Component Downloads • #1 Choice for Enterprise Developers • #1 Application Development Platform • Fastest implementation of a Java EE release4 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 5. Top Ten Features in Java EE 6 1. EJB packaging in a WAR 2. Servlet and CDI extension points 3. Optional web.xml 4. Type-safe dependency injection 5. CDI Events 6. JSF standardizing on Facelets 7. EJBContainer API 8. @Schedule 9. EJB No Interface View 10. Web Profile5 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 6. Today’s Cloud Offerings are all Proprietary Infrastructure as Platform as Software as a Service a Service a Service6 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 7. Java EE 77 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 8. Java EE 7 and 8 – Focus Areas Cloud Modularity HTML5• Provisioning • Building on Jigsaw • Emerging Web Standards require a• Elastic & Autonomic • Focus on OSGi interop programming model Scalability • Supporting Profiles & • JSON, WebSockets,• Multi-Tenancy Modular Applications off-line, APIs & DOM 8 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 9. Java EE 7 Focus: Platform as a Service • Next logical step for Java EE – J2EE  Java EE 6 : The Java EE Platform provides services – Java EE 7 : The Java EE Platform IS a service • PaaS support entails evolutionary change • Provide way for customers and users to leverage public, private, and hybrid clouds9 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 10. Java EE 7 PaaS Roadmap • Define new platform roles to accommodate PaaS model • Add metadata – For service provisioning and configuration – For QoS, elasticity – For sharing of applications and resources – For (re)configurability and customization • Add useful APIs for cloud environment – JAX-RS client API, Caching API, State Management, JSON,… • Extend existing APIs with support for multi-tenancy10 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 11. Roles Developer PaaS Provider PaaS Customer/ JVM JVM JVM JVM JVM JVM JVM JVM JVM Tenant Machine Machine Machine PaaS Product Provider JVM JVM JVM JVM JVM JVM JVM JVM JVMDeployer Machine Machine Machine PaaS Account Tenant 1 Tenant 2 Tenant 3 Manager Application Submitter PaaS Administrator Application Administrator 11 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 12. Existing Java EE model Database 1 Provision and Initialize Service • Configure Java EE resources – JDBC, JMS etc LDAP Service • Deploy Application EAR 2 Provision and Initialize Messaging 3 Provision and Initialize Service Application 4 Provision and Initialize Container 5 Deploy Application (EAR/GAR/SAR …)12 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 13. Java EE 7 Model: Auto-Provision Services from Application Dependencies• Provision and deploy application 1 Provision and Initialize Cloud Administration Serviceresources (e.g. LDAP stripe, datasource instantiation and Database Serviceconnection …) 2 Provision and Initialize• Extensible Deployment Models LDAP Supporting Multiple Frameworks 3 Provision and Initialize Service • Spring, Seam, Play … Messaging 4 Provision and Initialize Service Application 5 Deploy Application (EAR/GAR/SAR …) Container13 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 14. Services • Cloud apps consume services – Persistence, queueing, mail, caching, … • Service metadata facilitates ease of use when deploying into the cloud @DataSourceDefinition( name=“java:app/jdbc/myDB”, className=“oracle.jdbc.pool.OracleDataSource”, isolationLevel=TRANSACTION_REPEATABLE_READ, initialPoolSize=5 )14 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 15. Services • Cloud apps consume services – Persistence, queueing, mail, caching, … • Service metadata facilitates ease of use when deploying into the cloud @JMSConnectionFactory ( name=“java:app/myJMSConnectionFactory”, resourceType=“javax.jms.QueueConnectionFactory”) @JMSDestination( name=“java:app/myQueue”, resourceType=“javax.jms.Queue”)15 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 16. Services • Cloud apps consume services – Persistence, queueing, mail, caching, … • Service metadata facilitates ease of use when deploying into the cloud @MailSession ( name=“java:app/mailSession”, from=“MyService@ExtraServices.com” )16 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 17. Services • Cloud apps consume services – Persistence, queueing, mail, caching, … • Service metadata facilitates ease of use when deploying into the cloud @ConnectorService ( name=“java:app/myCustomConnector”, type=“com.extraServices.customConnector.class”, properties = {…} )17 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 18. Elasticity Java EE 7 Focus: Move the Bar Right Elasticity Continuum Java EE Cluster Elastic Cluster Elastic Cluster Capacity Ca on DemandSingle node Java EE Multi-Node Dynamic Self AdjustingNon-Elastic Multi-Instance Clustering SLA Driven Elasticity • Service Levels • Minimum and Maximum Instances • Futures – Self Adjustment, Capacity On Demand 18 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 19. Example Scenario “A software company writes an application, submits it to a PaaS provider, then any number of tenants sign up for the application, deploy it, their end users access it”19 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 20. Walkthrough (1) SimplyCRM DiabloCloud20 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 21. Walkthrough (2) SimplyCRM DiabloCloud Application Developer Writes App21 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 22. Walkthrough (3) SimplyCRM DiabloCloud Signs up as a customer PaaS Customer PaaS Account Manager22 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 23. Walkthrough (4) SimplyCRM DiabloCloud Submits the application Application System Administrator Submitter App23 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 24. Walkthrough (5) ExtraServices DiabloCloud Discovers App24 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 25. Walkthrough (6) ExtraServices DiabloCloud Signs up as a customer PaaS Customer PaaS Account Manager App25 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 26. Walkthrough (7) ExtraServices DiabloCloud Deployer System Administrator Customizes and deploys the application App26 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 27. Walkthrough (8) ExtraServices DiabloCloud Deployer System Administrator Provisions on Cloud infrastructure App27 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 28. Walkthrough (9) ExtraServices DiabloCloud Deployer System Administrator Provisioned and Deployed App28 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 29. Walkthrough (10) ExtraServices DiabloCloud Access the application End-Users Provisioned and Deployed App29 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 30. Walkthrough (11) ExtraServices DiabloCloud End-Users Access the application Provisioned and Deployed App Administrator Administers the application30 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 31. Walkthrough (12) ExtraServices DiabloCloud System Administrator Monitors End-Users Access the application Provisioned and Deployed App Administrator Administers the application31 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 32. Demo PaaSing a Java EE Application in the Cloud glassfish.org/javaone201132 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 33. Conference Planning in the CloudJava EE Application JSF JPA Deploy Services EJB Metadata <glassfish-services> <service-description init-type="LB" name="ConferencePlanner-lb"> <template id="LBNative"/> <configurations> <configuration name="https-port" value="50443"/> <configuration name="ssl-enabled" value="false"/> <configuration name="http-port" value="50080"/> </configurations></service-description> <service-description init-type="JavaEE" name="ConferencePlanner"> <characteristics> <characteristic name="service-type" value="JavaEE"/> </characteristics> <configurations> <configuration name="max.clustersize" value="4"/> <configuration name="min.clustersize" value="2"/> </configurations> </service-description> ... </glassfish-services>33 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 34. Service Provisioning Load Balancer Java EE Java EE ... Java EE Database34 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 35. Multi-tenancy in Java EE 7 • Support for separate isolated instances of the same app for different tenants – One application instance per tenant – Tenants correspond to units of isolation – Multitenant apps are declared as such – Each instance customized and deployed for a single tenant – Limited form of SaaS • Mapping to tenant done by the container • Tenant id available to application – E.g., under java:comp/tenantId35 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 36. Java EE 7 Is Not Just Cloud-y • Alignment of ManagedBeans across CDI, EJB, JSF, … – POJO  ManagedBean  Enterprise JavaBean – Extension of container-managed transactions beyond EJB • Further simplifications for ease-of-development – JAX-RS 2.0 Client API, hypermedia, bean validation, … – JMS 2.0 focus on ease-of-development – Expanded use of dependency injection – Expanded service metadata; improved configuration • Pruning – EJB CMP and BMP, JAX-RPC, Deployment API • Update to Web Profile36 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 37. Java EE 7 – Candidate JSRs Web Jcache 1.0 JAX-RS JSP 2.2 CDI Container JSF 2.2 Extensions 2.0 EL 3.0 (JSR 107) Extension Bean Validation 1.1 s Concurrency Servlet 3.1 Utilities 1.0 State CDI 1.1 / Interceptors 1.1 / JSR 250 1.1 Management 1.0 Batch Managed Beans 1.0 EJB 3.2 Processing 1.0 JPA 2.1 JTA 1.1 JMS 2.0 JSON 1.037 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 38. Java Persistence API 2.1 • @NamedStoredProcedureQuery, StoredProcedureQuery • Bulk update/delete using Criteria • User-defined functions using FUNCTION • Persistence Context Synchronization38 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 39. Java API for RESTful Web Services 2.0 • Client-side API • Validation • Hypermedia • Alignment with CDI • Server-side content negotiation (qs) • Filters and Entity Interceptors • Client-side and Server-side Async39 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 40. JavaServer Faces 2.2 • Queue control for Ajax requests • File Upload component (Non-Ajax & Ajax) • Injection in all JSF artifacts – including converters & validators • @FaceletsResourceResolver • Instantiating composite components in Java • ...40 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 41. Contexts & Dependency Injection 1.1 • Embedded mode to startup outside Java EE container • Global ordering of interceptors and decorators • API for managing built-in contexts • Send Servlet events as CDI events • ...41 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 42. Enterprise JavaBeans 3.2 • Three-part specification – Core CMT transactions on Managed Beans, Non-persistent timer and Async method to Lite – Optional Entity Beans, JAX-RPC Web service endpoint – Interceptors • Alignment with JMS 2.042 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 43. Bean Validation 1.1 • Open: Spec, Reference Implementation, TCK • Method-level validation @MethodValidated public class OrderService { • Dependency Injection public OrderService(@NotNull CreditCardProcessor creditCardProcessor) { //... } public void placeOrder( @NotNull @Size(min=3, max=20) String customerCode, @NotNull @Valid Item item, @Min(1) int quantity) { //... } }43 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 44. Java Message Service 2.0 • Connection, Session and other objects are AutoCloseable • Simplified API – Less verbose – Reduce the number of objects needed to send/receive message – Allow resource injection – Alternative, not replacement, for standard API – Remove JMSException, where possible • New methods – no need for redundant arguments44 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 45. Transparency • Oracle’s Java EE 7 JSRs are run in the open on java.net – http://javaee-spec.java.net – One project per spec – e.g., jpa-spec, jax-rs-spec, jms-spec… • Publicly viewable Expert Group mail archive – Users observer list gets copies of all Expert Group emails • Publicly viewable download area • Publicly viewable issue tracker • Commitment to update to JCP 2.8 Process45 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 46. Status and Schedule• All JSRs up and running• Early Drafts – JSF 2.2, JAX-RS 2.0, JPA 2.1, CDI 1.1, EJB 3.2, JMS 2.0, Bean Validation 1.1• Final release target: Q2 2013• Date-driven release: Anything not ready will be deferred to Java EE 8 46 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 47. GlassFish RoadmapGlassFish v3 GlassFish Server 3.1 GlassFish Server 3.1.2• Java EE 6 support • Centralized administration • Bug Fixes• Single instance • Clustering / HA • Incremental features• GlassFish Enterprise Mgr • GlassFish Server Control 2009 2010 2011 2012 2013 GlassFish Server 3.0.1 GlassFish Server 3.1.1 GlassFish Server 4 • Oracle branding • Bug fixes • Java EE 7 • Oracle platform support • Updated components • Multitenancy • Oracle interoperability • Incremental features • PaaS-enablement 47 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 48. Call to Action • Java EE 7 Expert Group Project – http://javaee-spec.java.net • Java EE 7 Reference Implementation – http://glassfish.org • The Aquarium – http://blogs.oracle.com/theaquarium48 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 49. 49 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.