More Related Content
Similar to Java EE 7: Developing for the Cloud at Java Day, Istanbul, May 2012 (20)
More from Arun Gupta (20)
Java EE 7: Developing for the Cloud at Java Day, Istanbul, May 2012
- 1. Main sponsor
The
Java
EE
7
Pla,orm:
Developing
for
the
Cloud
Arun
Gupta,
Java
EE
&
GlassFish
Guy
blogs.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, 2009
3 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 release
4 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 Profile
5 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 Service
6 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 7. Java EE 7
7 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
• Basic form of SaaS
• Provide way for customers and users to leverage public,
private, and hybrid clouds
9 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-tenancy
10 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 JVM
Deployer
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 Service
resources (e.g. LDAP stripe, data
source instantiation and Database
Service
connection …) 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 …)
Container
13 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
@JMSConnectionFactoryDefinition(
name=“java:app/myJMSConnectionFactory”,
className=“javax.jms.QueueConnectionFactory”
resourceAdapterName=“myJMSRA”) !
!
@JMSDestinationDefinition(
name=“java:app/myQueue”,
className=“javax.jms.Queue”
destinationName=“myQueue1”)!
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
@MailSessionDefinition(!
name=“java:app/mailSession”,
host=“example.com”
from=“MyService@example.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
@ConnectorResourceDefinition(!
name=“java:app/myCustomConnector”,!
className=“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 Demand
Single node Java EE Multi-Node Dynamic Self Adjusting
Non-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
DiabloCloud
20 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 21. Walkthrough (2)
SimplyCRM
DiabloCloud
ApplicaDon
Developer
Writes
App
21 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 22. Walkthrough (3)
SimplyCRM
DiabloCloud
Signs up as a customer
PaaS
Customer
PaaS
Account
Manager
22 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 23. Walkthrough (4)
SimplyCRM
DiabloCloud
Submits the application
Application System
Administrator
Submitter
App
23 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 24. Walkthrough (5)
ExtraServices
DiabloCloud
Discovers
App
24 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
App
25 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 26. Walkthrough (7)
ExtraServices
DiabloCloud
Deployer
System
Administrator
Customizes and
deploys the application
App
26 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 27. Walkthrough (8)
ExtraServices
DiabloCloud
Deployer
System
Administrator
Provisions on
Cloud
infrastructure
App
27 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 28. Walkthrough (9)
ExtraServices
DiabloCloud
Deployer
System
Administrator
Provisioned and
Deployed App
28 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 29. Walkthrough (10)
ExtraServices
DiabloCloud
Access the application
End-‐Users
Provisioned and
Deployed App
29 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 application
30 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 application
31 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 32. Demo
PaaSing a Java EE Application in the Cloud
glassfish.org/javaone2011
32 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 33. Conference Planning in the Cloud
Java 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
Database
34 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/tenantId!
35 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 Profile
36 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 37. Java EE 7 – Candidate JSRs
Web
JAX-RS JSF 2.2 Jcache 1.0
Container EL 3.0 (JSR 107)
CDI Extensions 2.0 JSP 2.2
Extensions
Bean Validation 1.1
Concurrency
Servlet 3.1 Utilities 1.0
(JSR 236)
State
CDI 1.1 / Interceptors 1.1 / JSR 250 1.1 Management 1.0
(JSR 350)
Batch
Managed Beans 1.0 EJB 3.2 Processing 1.0
(JSR 352)
JSON 1.0
JPA 2.1 JTA 1.1 JMS 2.0 (JSR 353)
37 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 38. Java EE 7 Early Draft
• Requires Java SE 7
• Added new roles
• Resource definition metadata
– DataSourceDefinition,
JMSConnectionFactoryDefinition,
JMSDestinationDefinition, MailSessionDefinition,
ConnectorResourceDefinition!
– Pre-provisioned or shared resource
38 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 39. Java EE 7 Early Draft
• Default Data Source java:comp/defaultDataSource!
• Default JMS Connection Factory java:comp/
defaultJMSConnectionFactory!
• Tenant Identifier: java:comp/tenantId!
• Made optional
– EJB Entity Beans, EJB QL, JAX-RPC, Deployment API, JAXR
39 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 40. Java Persistence API 2.1
• @NamedStoredProcedureQuery,
StoredProcedureQuery!
• Bulk update/delete using Criteria!
• User-defined functions using FUNCTION!
• Persistence Context Synchronization
40 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 41. 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 Async
41 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 42. 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
• . . .
42 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 43. 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
• . . .
43 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 44. Enterprise JavaBeans 3.2
• Three-part specification
– Core CMT transactions on Managed Beans, Non-persistent timer
and Async method to Lite
– Optional CMP, BMP, Entity Beans, EJB QL, JAX-RPC Web
service endpoint
– Interceptors
• Alignment with JMS 2.0
44 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 45. 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
quanDty)
{
//...
}
}
45 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 46. 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 arguments
46 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 47. 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
47 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 48. Status and Schedule
• All JSRs up and running
• Early Drafts
– Java EE 7 Platform, JSF 2.2, JAX-RS 2.0, JPA 2.1, CDI 1.1, EJB 3.2,
JMS 2.0, Bean Validation 1.1, Expression Language 3.0
• Final release target: Q2 2013
48 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 49. GlassFish Roadmap
GlassFish 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
49 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 50. 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
50 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 51. 51 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.