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