Java EE 7: Developing for the Cloud Arun Gupta, Java EE & GlassFish Guy 1 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 8 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. Insert Information Protection Policy Classification from Slide 8 Java EE 6 Platform December 10, 2009 3 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 8 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 Profile 4 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 8 Java EE 6 Implementations Fastest implementations of a Java EE release ever! 5 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 8 Today’s Cloud Offerings are all Proprietary Infrastructure as a Service 6 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Platform as a Service Insert Information Protection Policy Classification from Slide 8 Software as a Service Java EE 7 7 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 8 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 clouds 8 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 8 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-tenancy 9 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 8 Cloud Services, Not Just APIs • Tenant applications consume services • PaaS administrators host, configure, and manage application and infrastructure services • Existing APIs in Java EE need to be updated to be service-enabled and tenant-aware – Example: pluggable services Tenant App Tenant App Tenant App Java EE Application Level Services Queuing Service Persistence Service Caching Service … PaaS Infrastructure Services Security Service Provisioning Service File Service Platform as a Service - Services IaaS Infrastructure Services Virt VIP VLAN Volume LBR Infrastructure as a Service 10 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. … Insert Information Protection Policy Classification from Slide 8 … Roles Developer PaaS Customer/ Tenant Deployer PaaS Provider JVM JVM JVM JVM JVM JVM JVM JVM JVM Machine Machine Machine JVM JVM JVM JVM JVM JVM JVM JVM JVM Machine Machine Machine Tenant 1 Tenant 2 Application Submitter Copyright © 2012, Oracle and/or its affiliates. All rights reserved. PaaS Account Manager PaaS Administrator Application Administrator 11 Tenant 3 PaaS Product Provider Insert Information Protection Policy Classification from Slide 8 Existing Java EE model 1 • Configure Java EE resources – JDBC, JMS etc • Deploy Application EAR 2 3 4 5 12 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Provision and Initialize Database Service Provision and Initialize LDAP Service Provision and Initialize Messaging Service Provision and Initialize Application Container Deploy Application (EAR/GAR/SAR …) Insert Information Protection Policy Classification from Slide 8 Java EE 7 Model: Auto-Provision Services from Application Dependencies • Provision and deploy application resources (e.g. LDAP stripe, data source instantiation and connection …) • Extensible Deployment Models Supporting Multiple Frameworks 1 2 3 Provision and Initialize Provision and Initialize Cloud Administration Service Database Service Provision and Initialize LDAP Service Provision and Initialize Messaging Service • Spring, Seam, Play … 4 5 13 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Deploy Application (EAR/GAR/SAR …) Insert Information Protection Policy Classification from Slide 8 Application Container 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. Insert Information Protection Policy Classification from Slide 8 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. Insert Information Protection Policy Classification from Slide 8 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. Insert Information Protection Policy Classification from Slide 8 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. Insert Information Protection Policy Classification from Slide 8 Elasticity Java EE 7 Focus: Move the Bar Right Elasticity Continuum Java EE Cluster Elastic Cluster Elastic Cluster Capacity Ca on Demand Single node Non-Elastic Java EE Multi-Node Multi-Instance Clustering Dynamic Self Adjusting 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. Insert Information Protection Policy Classification from Slide 8 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. Insert Information Protection Policy Classification from Slide 8 Walkthrough (1) SimplyCRM 20 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. DiabloCloud Insert Information Protection Policy Classification from Slide 8 Walkthrough (2) SimplyCRM DiabloCloud Application Developer Writes App 21 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 8 Walkthrough (3) SimplyCRM PaaS Customer 22 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. DiabloCloud Signs up as a customer Insert Information Protection Policy Classification from Slide 8 PaaS Account Manager Walkthrough (4) SimplyCRM Application Submitter DiabloCloud Submits the application System Administrator App 23 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 8 Walkthrough (5) ExtraServices DiabloCloud Discovers 24 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 8 App Walkthrough (6) ExtraServices PaaS Customer DiabloCloud Signs up as a customer PaaS Account Manager App 25 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 8 Walkthrough (7) ExtraServices DiabloCloud Deployer System Administrator Customizes and deploys the application App 26 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 8 Walkthrough (8) ExtraServices DiabloCloud Deployer System Administrator Provisions on Cloud infrastructure App 27 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 8 Walkthrough (9) ExtraServices DiabloCloud Deployer System Administrator Provisioned and Deployed App 28 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 8 Walkthrough (10) ExtraServices DiabloCloud Access the application End-Users 29 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 8 Provisioned and Deployed App Walkthrough (11) ExtraServices End-Users DiabloCloud Access the application Provisioned and Deployed App Administrator 30 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Administers the application Insert Information Protection Policy Classification from Slide 8 Walkthrough (12) ExtraServices DiabloCloud System Administrator Monitors End-Users Access the application Provisioned and Deployed App Administrator 31 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Administers the application Insert Information Protection Policy Classification from Slide 8 Demo PaaSing a Java EE Application in the Cloud 32 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 8 Conference Planning in the Cloud Java EE Application JSF JPA EJB Services Metadata Deploy http://glassfish.org/javaone2011 33 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. <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> Insert Information Protection Policy Classification from Slide 8 Service Provisioning Load Balancer Java EE Java EE ... Database 34 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 8 Java EE 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/tenantId 35 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 8 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 Profile 36 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 8 Java EE 7 – Candidate JSRs JAX-RS 2.0 Servlet 3.1 CDI 1.1 / Interceptors 1.1 / JSR 250 1.1 Managed Beans 1.0 JPA 2.1 37 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. EJB 3.2 JTA 1.1 Jcache 1.0 (JSR 107) JSP 2.2 EL 3.0 JSF 2.2 JMS 2.0 Insert Information Protection Policy Classification from Slide 8 Bean Validation 1.1 CDI Extension s Web Container Extensions Concurrency Utilities 1.0 State Management 1.0 Batch Processing 1.0 JSON 1.0 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 Process 38 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 8 Status and Schedule • All JSRs up and running • Early Drafts: JSF 2.2, JAX-RS 2.0, JPA 2.1, CDI 1.1 • Final release target: Q3 2012 • Date-driven release: Anything not ready will be deferred to Java EE 8 39 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 8 GlassFish Roadmap GlassFish v3 • Java EE 6 support • Single instance • GlassFish Enterprise Mgr 2009 2010 GlassFish Server 3.1 GlassFish Server 3.1.2 • Centralized administration • Clustering / HA • GlassFish Server Control • Bug Fixes • Incremental features 2011 GlassFish Server 3.0.1 GlassFish Server 3.1.1 • Oracle branding • Oracle platform support • Oracle interoperability • Bug fixes • Updated components • Incremental features 40 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 8 2012 GlassFish Server 4 • Java EE 7 • Multitenancy • PaaS-enablement 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/theaquarium 41 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 8 Java EE 7: Developing for the Cloud Arun Gupta, Java EE & GlassFish Guy blogs.oracle.com/arungupta, @arungupta, arun.p.gupta@oracle.com 42 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 8 43 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 8