SlideShare a Scribd company logo
Submit Search
Upload
Login
Signup
Java EE 7: Developing for the Cloud at Geecon, JEEConf, Johannesburg
Report
Arun Gupta
Follow
Arun Gupta
May. 16, 2012
•
0 likes
•
6,279 views
1
of
79
Java EE 7: Developing for the Cloud at Geecon, JEEConf, Johannesburg
May. 16, 2012
•
0 likes
•
6,279 views
Download Now
Download to read offline
Report
Technology
Java EE 7: Developing for the Cloud at Geecon and JEEConf, Johannesburg 2012 Tons of code samples.
Arun Gupta
Follow
Arun Gupta
Recommended
Java EE 7: Developing for the Cloud at Java Day, Istanbul, May 2012
Arun Gupta
1.7K views
•
51 slides
PaaSing a Java EE 6 Application at Geecon 2012
Arun Gupta
1.4K views
•
41 slides
GlassFish REST Administration Backend at JavaOne India 2012
Arun Gupta
2.1K views
•
38 slides
JAX-RS 2.0: RESTful Web services on steroids at Geecon 2012
Arun Gupta
1.8K views
•
54 slides
The Java EE 7 Platform: Developing for the Cloud
codemotion_es
3.5K views
•
49 slides
JAX-RS 2.0: RESTful Web services on steroids
codemotion_es
3.2K views
•
48 slides
More Related Content
What's hot
Websocket 1.0
Arun Gupta
5.1K views
•
57 slides
Java Summit Chennai: Java EE 7
Arun Gupta
1.4K views
•
49 slides
Jfokus 2012: PaaSing a Java EE Application
Arun Gupta
1K views
•
41 slides
TDC 2011: OSGi-enabled Java EE Application
Arun Gupta
1.6K views
•
56 slides
GlassFish REST Administration Backend
Arun Gupta
1.6K views
•
39 slides
The Java EE 7 Platform: Developing for the Cloud
Arun Gupta
1.6K views
•
31 slides
What's hot
(20)
Websocket 1.0
Arun Gupta
•
5.1K views
Java Summit Chennai: Java EE 7
Arun Gupta
•
1.4K views
Jfokus 2012: PaaSing a Java EE Application
Arun Gupta
•
1K views
TDC 2011: OSGi-enabled Java EE Application
Arun Gupta
•
1.6K views
GlassFish REST Administration Backend
Arun Gupta
•
1.6K views
The Java EE 7 Platform: Developing for the Cloud
Arun Gupta
•
1.6K views
Jfokus 2012 : The Java EE 7 Platform: Developing for the Cloud
Arun Gupta
•
1.2K views
Java EE Technical Keynote at JavaOne Latin America 2011
Arun Gupta
•
651 views
JAX-RS 2.0: What’s New in JSR 339 ?
Arun Gupta
•
10.2K views
Java EE 7 at JAX London 2011 and JFall 2011
Arun Gupta
•
990 views
Java Summit Chennai: JAX-RS 2.0
Arun Gupta
•
1.4K views
The Java EE 7 Platform: Developing for the Cloud (FISL 12)
Arun Gupta
•
1.5K views
The Java EE 7 Platform: Productivity & HTML5 at JavaOne Latin America 2012
Arun Gupta
•
2.5K views
Creating Quick and Powerful Web applications with Oracle, GlassFish and NetBe...
Arun Gupta
•
2.5K views
GlassFish Community Update @ JavaOne 2011
Arun Gupta
•
1.2K views
Java EE / GlassFish Strategy & Roadmap @ JavaOne 2011
Arun Gupta
•
1.5K views
GIDS 2012: PaaSing a Java EE Application
Arun Gupta
•
1.3K views
GIDS 2012: Java Message Service 2.0
Arun Gupta
•
1.5K views
GlassFish 3.1 at JCertif 2011
Arun Gupta
•
1.1K views
Running your Java EE 6 applications in the Cloud
Arun Gupta
•
1.1K views
Viewers also liked
Melhore o Desenvolvimento do Time com DevOps na Nuvem
Bruno Borges
3.9K views
•
36 slides
Novidades do Java SE 8
Bruno Borges
3.3K views
•
37 slides
JavaFX - Straight from the trenches
Anderson Braz
1.3K views
•
33 slides
From Swing to JavaFX
Yuichi Sakuraba
13.4K views
•
27 slides
JEE Conf: Архитектура Android приложений: полезные и вредные советы
dmalykhanov
4.2K views
•
38 slides
JDK: CPU, PSU, LU, FR — WTF?!
Alexey Fyodorov
2.2K views
•
8 slides
Viewers also liked
(20)
Melhore o Desenvolvimento do Time com DevOps na Nuvem
Bruno Borges
•
3.9K views
Novidades do Java SE 8
Bruno Borges
•
3.3K views
JavaFX - Straight from the trenches
Anderson Braz
•
1.3K views
From Swing to JavaFX
Yuichi Sakuraba
•
13.4K views
JEE Conf: Архитектура Android приложений: полезные и вредные советы
dmalykhanov
•
4.2K views
JDK: CPU, PSU, LU, FR — WTF?!
Alexey Fyodorov
•
2.2K views
Pragmatic functional refactoring with java 8 (1)
RichardWarburton
•
3.7K views
мифы о спарке
Evgeny Borisov
•
1.1K views
Ejb3 Presentation
Saurabh Raisinghani
•
2.9K views
Scalable Java Application Development on AWS
Mikalai Alimenkou
•
3.1K views
JetBrains IDEハンズオン
Yusuke Yamamoto
•
1.3K views
EJB 3.1 by Bert Ertman
Stephan Janssen
•
4.3K views
Enterprise Java Beans 3 - Business Logic
Emprovise
•
1.6K views
EJB and CDI - Alignment and Strategy
David Delabassee
•
31.9K views
Curso Java Avanzado 5 Ejb
Emilio Aviles Avila
•
7.5K views
Introduction to EJB
Return on Intelligence
•
5.9K views
Enterprise Java Beans - EJB
Peter R. Egli
•
12.3K views
EJB .
ayyagari.vinay
•
13.4K views
Lecture 8 Enterprise Java Beans (EJB)
Fahad Golra
•
5.3K views
Enterprise JavaBeans(EJB)
Armen Arzumanyan
•
1.4K views
Similar to Java EE 7: Developing for the Cloud at Geecon, JEEConf, Johannesburg
Introduction to java_ee
Yogesh Bindwal
2.1K views
•
30 slides
Sun Java EE 6 Overview
sbobde
2.6K views
•
38 slides
JMS 2.0
Arun Gupta
2.6K views
•
52 slides
Java ee 7 platform developing for the cloud kshitiz saxena
IndicThreads
455 views
•
43 slides
SPEC INDIA Java Case Study
SPEC INDIA
2.1K views
•
25 slides
Java EE7 in action
Ankara JUG
945 views
•
29 slides
Similar to Java EE 7: Developing for the Cloud at Geecon, JEEConf, Johannesburg
(20)
Introduction to java_ee
Yogesh Bindwal
•
2.1K views
Sun Java EE 6 Overview
sbobde
•
2.6K views
JMS 2.0
Arun Gupta
•
2.6K views
Java ee 7 platform developing for the cloud kshitiz saxena
IndicThreads
•
455 views
SPEC INDIA Java Case Study
SPEC INDIA
•
2.1K views
Java EE7 in action
Ankara JUG
•
945 views
JavaOne Update zur Java Plattform
Java Usergroup Berlin-Brandenburg
•
962 views
Java EE 6 & GlassFish v3: Paving the path for the future - Tech Days 2010 India
Arun Gupta
•
992 views
JavaCro'14 - WebLogic-GlassFish-JaaS Strategy and Roadmap – Duško Vukmanović
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
•
2.5K views
Handling Service Orchestration in the Cloud for GlassFish - JavaOne, San Fran...
Sivakumar Thyagarajan
•
1.3K views
Java EE 6 and GlassFish portfolio
Alexis Moussine-Pouchkine
•
708 views
Servidores de Aplicação: por que ainda precisamos deles?
Bruno Borges
•
1K views
Enterprise java unit-1_chapter-1
sandeep54552
•
627 views
Introduction To JavaFX 2.0
Boulder Java User's Group
•
3.7K views
JDK versions and OpenJDK
Wolfgang Weigend
•
1.8K views
Enterprise Java in 2012 and Beyond, by Juergen Hoeller
Codemotion
•
551 views
Virtual dev-day-java7-keynote-1641807
Vinay H G
•
504 views
Java EE 6 & GlassFish v3: Paving the path for the future - Spark IT 2010
Arun Gupta
•
1.3K views
JUG Darmstadt - Java EE 7 - Auf in die Wolken!
Markus Eisele
•
1.7K views
JavaEE 6 and GlassFish v3 at SFJUG
Marakana Inc.
•
764 views
More from Arun Gupta
5 Skills To Force Multiply Technical Talents.pdf
Arun Gupta
22 views
•
54 slides
Machine Learning using Kubernetes - AI Conclave 2019
Arun Gupta
716 views
•
49 slides
Machine Learning using Kubeflow and Kubernetes
Arun Gupta
2.3K views
•
57 slides
Secure and Fast microVM for Serverless Computing using Firecracker
Arun Gupta
1.3K views
•
42 slides
Building Java in the Open - j.Day at OSCON 2019
Arun Gupta
780 views
•
16 slides
Why Amazon Cares about Open Source
Arun Gupta
856 views
•
5 slides
More from Arun Gupta
(20)
5 Skills To Force Multiply Technical Talents.pdf
Arun Gupta
•
22 views
Machine Learning using Kubernetes - AI Conclave 2019
Arun Gupta
•
716 views
Machine Learning using Kubeflow and Kubernetes
Arun Gupta
•
2.3K views
Secure and Fast microVM for Serverless Computing using Firecracker
Arun Gupta
•
1.3K views
Building Java in the Open - j.Day at OSCON 2019
Arun Gupta
•
780 views
Why Amazon Cares about Open Source
Arun Gupta
•
856 views
Machine learning using Kubernetes
Arun Gupta
•
353 views
Building Cloud Native Applications
Arun Gupta
•
458 views
Chaos Engineering with Kubernetes
Arun Gupta
•
2.1K views
How to be a mentor to bring more girls to STEAM
Arun Gupta
•
470 views
Java in a World of Containers - DockerCon 2018
Arun Gupta
•
2.3K views
The Serverless Tidal Wave - SwampUP 2018 Keynote
Arun Gupta
•
345 views
Introduction to Amazon EKS - KubeCon 2018
Arun Gupta
•
3.5K views
Mastering Kubernetes on AWS - Tel Aviv Summit
Arun Gupta
•
2.4K views
Top 10 Technology Trends Changing Developer's Landscape
Arun Gupta
•
2.5K views
Container Landscape in 2017
Arun Gupta
•
1.4K views
Java EE and NoSQL using JBoss EAP 7 and OpenShift
Arun Gupta
•
1.5K views
Docker, Kubernetes, and Mesos recipes for Java developers
Arun Gupta
•
3.4K views
Thanks Managers!
Arun Gupta
•
1.9K views
Migrate your traditional VM-based Clusters to Containers
Arun Gupta
•
2.9K views
Recently uploaded
GDSC ZHCET Google Study Jams 23.pdf
AbhishekSingh313342
19 views
•
34 slides
Empowering City Clerks
OnBoard
82 views
•
12 slides
Navigating the Future
OnBoard
35 views
•
48 slides
9C Monthly Newsletter - SEPT 2023
PublishingTeam
234 views
•
11 slides
GDSC Cloud Lead Presentation.pptx
AbhinavNautiyal8
72 views
•
13 slides
h2 meet pdf test.pdf
JohnLee971654
64 views
•
4 slides
Recently uploaded
(20)
GDSC ZHCET Google Study Jams 23.pdf
AbhishekSingh313342
•
19 views
Empowering City Clerks
OnBoard
•
82 views
Navigating the Future
OnBoard
•
35 views
9C Monthly Newsletter - SEPT 2023
PublishingTeam
•
234 views
GDSC Cloud Lead Presentation.pptx
AbhinavNautiyal8
•
72 views
h2 meet pdf test.pdf
JohnLee971654
•
64 views
GIT AND GITHUB (1).pptx
GDSCCVRGUPoweredbyGo
•
36 views
Webhook Testing Strategy
Dimpy Adhikary
•
82 views
V3Cube Gojek Clone - Rebrand With Superiority
V3cube
•
61 views
Google cloud Study Jam 2023.pptx
GDSCNiT
•
438 views
10 reasons to choose Galaxy Tab S9 for work on the go
Samsung Business USA
•
54 views
EuroBSDCon 2023 - (auto)Installing BSD Systems - Cases using pfSense, TrueNAS...
Vinícius Zavam
•
67 views
Chandrayaan 3.pptx
PrasunJha12
•
31 views
How to reduce expenses on monitoring
RomanKhavronenko
•
23 views
Solving today’s Traffic Problems with Sustainable Ride Hailing Solution
On Demand Clone
•
27 views
Mastering Automation Quality: Exploring UiPath's Test Suite for Seamless Test...
DianaGray10
•
38 views
Uber Clone Script - Keys to Understanding the Ride Hailing Industry
eSiteWorld TechnoLabs Pvt. Ltd.
•
26 views
UiPath Tips and Techniques for Debugging - Session 3
DianaGray10
•
49 views
Framing Few Shot Knowledge Graph Completion with Large Language Models
MODUL Technology GmbH
•
44 views
Product Research Presentation-Maidy Veloso.pptx
MaidyVeloso
•
22 views
Java EE 7: Developing for the Cloud at Geecon, JEEConf, Johannesburg
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.
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 10 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
11.
Existing Java EE
model Database 1 Provision and Initialize Service • Configure Java EE resources – JDBC, JMS etc LDAP 2 Service • Deploy Application EAR Provision and Initialize Messaging 3 Provision and Initialize Service Application 4 Provision and Initialize Container 5 Deploy Application (EAR/ GAR/SAR …) 11 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
12.
Java EE 7
Model: Auto-Provision Services from Application Dependencies Cloud Administration • Provision and deploy application 1 Provision and Initialize Service resources (e.g. LDAP stripe, data source instantiation and Database 2 Service connection …) 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 12 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
13.
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! ) ! 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 @JMSConnectionFactoryDefinition( name=“java:app/myJMSConnectionFactory”, className=“javax.jms.QueueConnectionFactory” resourceAdapterName=“myJMSRA”) ! ! @JMSDestinationDefinition( name=“java:app/myQueue”, className=“javax.jms.Queue” destinationName=“myQueue1”)! 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 @MailSessionDefinition(! name=“java:app/mailSession”, host=“example.com” from=“MyService@example.com”! ) ! 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 @ConnectorResourceDefinition(! name=“java:app/myCustomConnector”,! className=“com.extraServices.CustomConnector.class”,! properties= {…}! ) ! 16 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
17.
Resource/Service Metadata
• Which service ? – Application require an instance, not a particular one – Application require a particular instance, with specific properties • Services scoped to application, or shareable • Quality-of-service attributes such as pool size, elasticity • Usecases – Need only SQL and JTA transactions; use PaaS platform defaults – Needs Oracle database, initial/minimum/maximum poolsize, JNDI name – Pre-provisioned MySQL, JNDI name, host/port – Apps sharing JMS queues by referring to global JNDI name 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.
JPA 2.1
Stored Procedures @Entity @NamedStoredProcedureQuery(name="topGiftsStoredProcedure", procedureName="Top10Gifts") public class Product { . . . }! StoredProcedreQuery query = EntityManager.createNamedStoredProcedureQuery("topGiftsStoredProcedure");! query.registerStoredProcedureParameter(1, String.class, ParameterMode.INOUT);! query.setParameter(1, "top10");! query.registerStoredProcedureParameter(2, Integer.class, ParameterMode.IN);! query.setParameter(2, 100);! // there are other setParameter methods for defining the temporal type . . .! query.execute();! String response = query.getOutputParameterValue(1);! ! 41 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
42.
JPA 2.1
Update/Delete using Criteria CriteriaUpdate<Customer> q = cb.createCriteriaUpdate(Customer.class); Root<Customer> c = q.from(Customer.class); q.set(c.get(Customer_.status), "outstanding") .where(cb.lt(c.get(Customer_.balance), 10000)); . . .! @PersistenceContext EntityManager em; UPDATE Customer c! Query query = em.createQuery(q); SET c.status = 'outstanding'! query.executeUpdate(); WHERE c.balance < 10000! ! CriteriaDelete<Customer> q = cb.createCriteriaDelete(Customer.class); Root<Customer> c = q.from(Customer.class); q.where(cb.equal(c.get(Customer_.status), "inactive"), cb.isEmpty(c.get(Customer_.orders))); . . .! @PersistenceContext EntityManager em; DELETE FROM Customer c Query query = em.createQuery(q); WHERE c.status = 'inactive' query.executeUpdate(); AND c.orders IS EMPTY! 42 !Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
43.
Java API for
RESTful Web Services 2.0 • Client-side API • Filters and Entity Interceptors • Client-side and Server-side Async • Validation • Server-side content negotiation (qs) • Hypermedia • Alignment with CDI 43 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
44.
JAX-RS 2.0
Client-side API URL url = new URL("http://.../atm/balance"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setDoInput(true); conn.setDoOutput(false); BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream())); String line; while ((line = br.readLine()) != null) { out.println(line); }! Client client = ClientFactory.newClient();! String balance = client.target("http://.../atm/balance")! .request("text/plain")! .get(String.class);! 44 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
45.
JAX-RS 2.0
Filters and Interceptors @Provider class LoggingFilter implements RequestFilter, ResponseFilter {! @Override public FilterAction preFilter(FilterContext ctx) throws IOException { logRequest(ctx.getRequest()); return FilterAction.NEXT; } ! @Override public FilterAction postFilter(FilterContext ctx) throws IOException { logResponse(ctx.getResponse()); return FilterAction.NEXT; } }! 45 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
46.
JAX-RS 2.0
Client-side Async Client client = ClientFactory.newClient(); Future<String> future = client.target("http://.../atm/{card}/balance") .pathParam("card", "1111222233334444") .queryParam("pin", "1234") .request("text/plain") .async() .get( new InvocationCallback<String>() { public void completed(String result) { } public void failed(InvocationException e) { } } );! 46 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
47.
JAX-RS 2.0
Server-side Async @Path("/async") class ProductResource { @Context ExecutionContext ctx; # @GET @Suspend public Product longOp() { Executors.newSingleThreadExecutor().submit( new Runnable() { public void run() { Proruct product = longQueryFromDatabase(); ctx.resume(product); } } ); } }! 47 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
48.
JAX-RS 2.0
Integration with Bean Validation @Path("/") class ProductResource {! @POST @Consumes(MediaType.APPLICATION_FORM_URLENCODED) public void addProduct(@NotNull @FormParam("productName") String name, @NotNull @Category @FormParam("category") String category) { . . . } }! 48 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
49.
JAX-RS 2.0
Server-side Content Negotiation @Path("/") class ProductResource {! @GET @Produces({ "text/xml;qs=0.75", "application/json"}) public Product[] getProducts() { . . . } }! 49 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
50.
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 • . . . 50 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
51.
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 • . . . 51 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
52.
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 52 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
53.
Enterprise JavaBeans 3.2
Under discussion • Alignment with JMS 2.0 • QoS – @MaxConcurrency, @Poolsize! • Non persistent timers and Async invocations in EJB.Lite • Support for CMT in ManagedBeans – Subset of transaction attributes – BMT are already supported using UserTransaction! 53 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
54.
Bean Validation 1.1
• Open: Spec, Reference Implementation, TCK • Alignment with Dependency Injection • Method-level validation – Constraints on parameters and return values – Check pre-/post-conditions 54 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
55.
Bean Validation 1.1
Code Sample @MethodValidated public class OrderService { public OrderService(@NotNull CreditCardProcessor creditCardProcessor) { . . . } public void placeOrder( @NotNull @Size(min=3, max=20) String customerCode, @NotNull @Valid Item item, @Min(1) int quantity) { . . . } @NotNull @Size(min=1) public Set<CreditCardProcessor> getCreditCardProcessors() { ... } @NotNull @Future public Date getNextAvailableDeliveryDate() { ... } ! } ! 55 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
56.
Java Message Service
2.0 • 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 • Connection, Session and other objects are AutoCloseable • New methods – no need for redundant arguments 56 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
57.
JMS 1.1
Sending messages in Java EE @Resource(lookup = "jms/connFactory") ConnectionFactory cf; ! @Resource(lookup="jms/inboundQueue")! Destination dest;! ! public void sendMessage (String payload) throws JMSException {! Connection conn = cf.createConnection(); Session sess = ! conn.createSession(false,Session.AUTO_ACKNOWLEDGE); MessageProducer producer = sess.createProducer(dest); TextMessage textMessage = sess.createTextMessage(payload); messageProducer.send(textMessage); connection.close(); }! 57 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
58.
JMS 2.0
Sending messages in Java EE @Resource(lookup = "jms/connFactory") Need to create ConnectionFactory cf; ! intermediate objects @Resource(lookup="jms/inboundQueue")! just to satisfy the API Destination dest;! ! public void sendMessage (String payload) throws JMSException {! Connection conn = cf.createConnection(); Session sess = ! conn.createSession(false,Session.AUTO_ACKNOWLEDGE); MessageProducer producer = sess.createProducer(dest); TextMessage textMessage = sess.createTextMessage(payload); messageProducer.send(textMessage); connection.close(); }! 58 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
59.
JMS 2.0
Sending messages in Java EE @Resource(lookup = "jms/connFactory") ConnectionFactory cf; ! @Resource(lookup="jms/inboundQueue")! Redundant Destination dest;! arguments ! public void sendMessage (String payload) throws JMSException {! Connection conn = cf.createConnection(); Session sess = ! conn.createSession(false,Session.AUTO_ACKNOWLEDGE); MessageProducer producer = sess.createProducer(dest); TextMessage textMessage = sess.createTextMessage(payload); messageProducer.send(textMessage); connection.close(); }! 59 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
60.
JMS 2.0
Sending messages in Java EE @Resource(lookup = "jms/connFactory") ConnectionFactory cf; ! @Resource(lookup="jms/inboundQueue")! Destination dest;! Boilerplate code ! public void sendMessage (String payload) throws JMSException {! Connection conn = cf.createConnection(); Session sess = ! conn.createSession(false,Session.AUTO_ACKNOWLEDGE); MessageProducer producer = sess.createProducer(dest); TextMessage textMessage = sess.createTextMessage(payload); messageProducer.send(textMessage); connection.close(); }! 60 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
61.
JMS 2.0
Sending messages in Java EE public void sendMessage (String payload) throws JMSException {! try {! Connection conn = null;! con = cf.createConnection(); Session sess = ! conn.createSession(false,Session.AUTO_ACKNOWLEDGE); MessageProducer producer = sess.createProducer(dest); TextMessage textMessage=sess.createTextMessage(payload); messageProducer.send(textMessage); ! } finally { connection.close();! } }! Need to close connections after use 61 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
62.
JMS 2.0
Sending messages in Java EE public void sendMessage (String payload) {! Connection conn = null;! try {! con = cf.createConnection(); Session sess = ! conn.createSession(false,Session.AUTO_ACKNOWLEDGE); MessageProducer producer = sess.createProducer(dest); TextMessage textMessage=sess.createTextMessage(payload); messageProducer.send(textMessage); ! } catch (JMSException e1) {! // do something! } finally {! And there's try { always exception if (conn!=null) connection.close();! handling to add } catch (JMSException e2){! // do something else! }! } }! 62 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
63.
JMS 1.1 –
Sending a Message (Java EE) Standard API @Resource(lookup = "jms/connectionFactory ") ConnectionFactory connectionFactory; @Resource(lookup="jms/inboundQueue") Queue inboundQueue; public void sendMessageOld (String payload) throws JMSException { try (Connection connection = connectionFactory.createConnection()) { Session session = connection.createSession(); MessageProducer messageProducer = session.createProducer(inboundQueue); TextMessage textMessage = session.createTextMessage(payload); messageProducer.send(textMessage); } ! } ! 63 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
64.
JMS 2.0 –
Sending a Message (Java EE) New Simplified API @Resource(mappedName="jms/contextFactory") ! ConnectionFactory connectionFactory;! ! @Resource(mappedName="jms/inboundQueue") ! Queue inboundQueue;! ! public void sendMessage(String payload) {! try (JMSContext context = connectionFactory.createContext();){! context.send(inboundQueue,payload);! }! }! 64 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
65.
JMS 2.0 –
Sending a Message (Java EE) New Simplified API (With Injection) @Inject! @JMSConnectionFactory("jms/contextFactory") ! JMSContext context;! ! @Resource(mappedName="jms/inboundQueue") ! Queue inboundQueue;! ! public void sendMessage(String payload) {! context.send(inboundQueue,payload);! }! 65 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
66.
JMS 1.1 –
Receiving a Message Synchronously Standard API @Resource(lookup = "jms/connectionFactory") ConnectionFactory connectionFactory;! @Resource(lookup="jms/inboundQueue") Queue inboundQueue; public String receiveMessageOld() throws JMSException { try (Connection connection = connectionFactory.createConnection()) { connection.start(); Session session = connection.createSession(); MessageConsumer messageConsumer = session.createConsumer(inboundQueue); TextMessage textMessage = (TextMessage)messageConsumer.receive(); String payload = textMessage.getText(); return payload; } } ! 66 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
67.
JMS 2.0 –
Receiving a Message Synchronously New Simplified API @Resource(lookup = "jms/connectionFactory") ConnectionFactory connectionFactory; @Resource(lookup="jms/inboundQueue") Queue inboundQueue; public String receiveMessageNew() { try (JMSContext context = connectionFactory.createContext()) { JMSConsumer consumer = context.createConsumer(inboundQueue); return consumer.receivePayload(String.class); } } ! 67 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
68.
JMS 2.0 –
Receiving a Message Synchronously New Simplified API (With Injection) @Inject @JMSConnectionFactory("jms/connectionFactory") private JMSContext context; @Resource(lookup="jms/inboundQueue") Queue inboundQueue; public String receiveMessageNew() { JMSConsumer consumer = context.createConsumer(inboundQueue); return consumer.receivePayload(String.class); } ! 68 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
69.
JSON – Standard
API • Advantages – Applications can use standard types – Leaner, portable applications • Two JSRs – Processing/Parsing JSON (JSON-P) – Binding JSON <-> Java objects (JSON-B) – Similar to JAXP and JAXB – Close collaboration between the two 69 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
70.
JSON 1.0 (JSR
353) javax.json.* • Object model API to represent JSON – Similar to DOM API in XML world • Streaming API to produce/consume JSON – Similar to StAX API in XML world JSR Supporters – fasterxml.com (Jackson) – Doug Crockford (json.org) • Spec: json-processing-spec.java.net • Reference Implementation: jsonp.java.net 70 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
71.
JSON 1.0 (JSR
353) • DOM-based APIs (javax.json.* package) – JSONBuilder – Builds a JSON object – JSONReader – Reads a JSON object or array from the stream – JSONWriter – Writes a JSON object or array to the stream • Streaming APIs (javax.json.stream.* package) – JsonGenerator – Streaming JSON generator – JsonParser – Allows forward, read-only access to JSON 71 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
72.
JSON 1.0 (JSR
353) Code Sample – JsonBuilder JsonObject value = new JsonBuilder() { .beginObject() "firstName": "John", .add("firstName", "John") "lastName": "Smith", .add("lastName", "Smith") "age": 25, add("age", 25) "address" : { .beginObject("address”) .add("streetAddress", "21 2nd Street”) "streetAddress", "21 2nd Street", .add("city", "New York”)