SlideShare a Scribd company logo
Submit Search
Upload
What's coming in Java EE 8
Report
Share
David Delabassee
DevRel - Java Platform Group - Oracle
Follow
•
5 likes
•
2,329 views
1
of
71
What's coming in Java EE 8
•
5 likes
•
2,329 views
Report
Share
Download Now
Download to read offline
Software
What's coming in Java EE 8 Presented at JavaOne LAD (June 2015)
Read more
David Delabassee
DevRel - Java Platform Group - Oracle
Follow
Recommended
Java EE 8 - An instant snapshot by
Java EE 8 - An instant snapshot
David Delabassee
10.7K views
•
91 slides
Best Way to Write SQL in Java by
Best Way to Write SQL in Java
Gerger
1.6K views
•
102 slides
Move from J2EE to Java EE by
Move from J2EE to Java EE
Hirofumi Iwasaki
17.8K views
•
65 slides
Have You Seen Java EE Lately? by
Have You Seen Java EE Lately?
Reza Rahman
37.1K views
•
28 slides
Seven Points for Applying Java EE 7 by
Seven Points for Applying Java EE 7
Hirofumi Iwasaki
24.2K views
•
67 slides
EJB and CDI - Alignment and Strategy by
EJB and CDI - Alignment and Strategy
David Delabassee
31.9K views
•
43 slides
More Related Content
What's hot
JavaCro'15 - Java EE 8 - An instant snapshot - David Delabassee by
JavaCro'15 - Java EE 8 - An instant snapshot - David Delabassee
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
1.5K views
•
68 slides
MVC 1.0 / JSR 371 by
MVC 1.0 / JSR 371
David Delabassee
12.7K views
•
42 slides
JSONB introduction and comparison with other frameworks by
JSONB introduction and comparison with other frameworks
Dmitry Kornilov
7.4K views
•
68 slides
Java EE 7 - Overview and Status by
Java EE 7 - Overview and Status
Java Usergroup Berlin-Brandenburg
5.7K views
•
38 slides
What's New in WebLogic 12.1.3 and Beyond by
What's New in WebLogic 12.1.3 and Beyond
Oracle
20.3K views
•
16 slides
Java EE 8: On the Horizon by
Java EE 8: On the Horizon
Josh Juneau
13.3K views
•
72 slides
What's hot
(16)
JavaCro'15 - Java EE 8 - An instant snapshot - David Delabassee by HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
JavaCro'15 - Java EE 8 - An instant snapshot - David Delabassee
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
•
1.5K views
MVC 1.0 / JSR 371 by David Delabassee
MVC 1.0 / JSR 371
David Delabassee
•
12.7K views
JSONB introduction and comparison with other frameworks by Dmitry Kornilov
JSONB introduction and comparison with other frameworks
Dmitry Kornilov
•
7.4K views
Java EE 7 - Overview and Status by Java Usergroup Berlin-Brandenburg
Java EE 7 - Overview and Status
Java Usergroup Berlin-Brandenburg
•
5.7K views
What's New in WebLogic 12.1.3 and Beyond by Oracle
What's New in WebLogic 12.1.3 and Beyond
Oracle
•
20.3K views
Java EE 8: On the Horizon by Josh Juneau
Java EE 8: On the Horizon
Josh Juneau
•
13.3K views
JavaScript Frameworks and Java EE – A Great Match by Reza Rahman
JavaScript Frameworks and Java EE – A Great Match
Reza Rahman
•
132.8K views
Finally, EE Security API JSR 375 by Alex Kosowski
Finally, EE Security API JSR 375
Alex Kosowski
•
13.4K views
GlassFish BOF by glassfish
GlassFish BOF
glassfish
•
13.7K views
Down-to-Earth Microservices with Java EE by Reza Rahman
Down-to-Earth Microservices with Java EE
Reza Rahman
•
103.6K views
2015 JavaOne EJB/CDI Alignment by David Blevins
2015 JavaOne EJB/CDI Alignment
David Blevins
•
30.7K views
Construindo aplicações com HTML5, WebSockets, e Java EE 7 by Bruno Borges
Construindo aplicações com HTML5, WebSockets, e Java EE 7
Bruno Borges
•
3.5K views
Java EE 6 Adoption in One of the World’s Largest Online Financial Systems by Arshal Ameen
Java EE 6 Adoption in One of the World’s Largest Online Financial Systems
Arshal Ameen
•
10.5K views
Testing Java EE Applications Using Arquillian by Reza Rahman
Testing Java EE Applications Using Arquillian
Reza Rahman
•
25.7K views
Java EE 7 from an HTML5 Perspective, JavaLand 2015 by Edward Burns
Java EE 7 from an HTML5 Perspective, JavaLand 2015
Edward Burns
•
3.4K views
Java EE 7 overview by Masoud Kalali
Java EE 7 overview
Masoud Kalali
•
2.7K views
Similar to What's coming in Java EE 8
What's Coming in Java EE 8 by
What's Coming in Java EE 8
PT.JUG
4.1K views
•
78 slides
Java EE 8 - An instant snapshot by
Java EE 8 - An instant snapshot
David Delabassee
1.7K views
•
66 slides
Java EE 8 - What’s new on the Web front by
Java EE 8 - What’s new on the Web front
David Delabassee
960 views
•
77 slides
Java EE 8 Adopt a JSR : JSON-P 1.1 & MVC 1.0 by
Java EE 8 Adopt a JSR : JSON-P 1.1 & MVC 1.0
David Delabassee
1.8K views
•
50 slides
Java API for JSON Binding - Introduction and update by
Java API for JSON Binding - Introduction and update
Martin Grebac
3.1K views
•
83 slides
112815 java ee8_davidd by
112815 java ee8_davidd
Takashi Ito
516 views
•
39 slides
Similar to What's coming in Java EE 8
(20)
What's Coming in Java EE 8 by PT.JUG
What's Coming in Java EE 8
PT.JUG
•
4.1K views
Java EE 8 - An instant snapshot by David Delabassee
Java EE 8 - An instant snapshot
David Delabassee
•
1.7K views
Java EE 8 - What’s new on the Web front by David Delabassee
Java EE 8 - What’s new on the Web front
David Delabassee
•
960 views
Java EE 8 Adopt a JSR : JSON-P 1.1 & MVC 1.0 by David Delabassee
Java EE 8 Adopt a JSR : JSON-P 1.1 & MVC 1.0
David Delabassee
•
1.8K views
Java API for JSON Binding - Introduction and update by Martin Grebac
Java API for JSON Binding - Introduction and update
Martin Grebac
•
3.1K views
112815 java ee8_davidd by Takashi Ito
112815 java ee8_davidd
Takashi Ito
•
516 views
Presente e Futuro: Java EE.next() by Bruno Borges
Presente e Futuro: Java EE.next()
Bruno Borges
•
1.6K views
What’s new in JSR 367 Java API for JSON Binding by Dmitry Kornilov
What’s new in JSR 367 Java API for JSON Binding
Dmitry Kornilov
•
1.5K views
JSON-B for CZJUG by Dmitry Kornilov
JSON-B for CZJUG
Dmitry Kornilov
•
1.3K views
What's new in the Java API for JSON Binding by Dmitry Kornilov
What's new in the Java API for JSON Binding
Dmitry Kornilov
•
1.1K views
Java EE for the Cloud by Dmitry Kornilov
Java EE for the Cloud
Dmitry Kornilov
•
2K views
Java EE 8 Overview (Japanese) by Logico
Java EE 8 Overview (Japanese)
Logico
•
984 views
XML-Free Programming : Java Server and Client Development without <> by Arun Gupta
XML-Free Programming : Java Server and Client Development without <>
Arun Gupta
•
1.1K views
Pushing JavaEE outside of the enterprise: Home Automation & IoT - David Delab... by Codemotion Tel Aviv
Pushing JavaEE outside of the enterprise: Home Automation & IoT - David Delab...
Codemotion Tel Aviv
•
659 views
The State of Java under Oracle at JCertif 2011 by Arun Gupta
The State of Java under Oracle at JCertif 2011
Arun Gupta
•
1.5K views
JavaOne 2014 BOF4241 What's Next for JSF? by Edward Burns
JavaOne 2014 BOF4241 What's Next for JSF?
Edward Burns
•
29.8K views
RESTful Services and Distributed OSGi - 04/2009 by Roland Tritsch
RESTful Services and Distributed OSGi - 04/2009
Roland Tritsch
•
3K views
Configuration for Java EE: Config JSR and Tamaya by Dmitry Kornilov
Configuration for Java EE: Config JSR and Tamaya
Dmitry Kornilov
•
4K views
JavaOne2015フィードバック @ 富山合同勉強会 by Takashi Ito
JavaOne2015フィードバック @ 富山合同勉強会
Takashi Ito
•
759 views
RESTful web service with JBoss Fuse by ejlp12
RESTful web service with JBoss Fuse
ejlp12
•
6.3K views
More from David Delabassee
JVMs in Containers - Best Practices by
JVMs in Containers - Best Practices
David Delabassee
726 views
•
37 slides
JVMs in Containers by
JVMs in Containers
David Delabassee
1.3K views
•
38 slides
Serverless Java Challenges & Triumphs by
Serverless Java Challenges & Triumphs
David Delabassee
1.2K views
•
46 slides
Serverless Java - Challenges and Triumphs by
Serverless Java - Challenges and Triumphs
David Delabassee
282 views
•
41 slides
Randstad Docker meetup - Serverless by
Randstad Docker meetup - Serverless
David Delabassee
322 views
•
37 slides
Java Serverless in Action - Voxxed Banff by
Java Serverless in Action - Voxxed Banff
David Delabassee
232 views
•
22 slides
More from David Delabassee
(20)
JVMs in Containers - Best Practices by David Delabassee
JVMs in Containers - Best Practices
David Delabassee
•
726 views
JVMs in Containers by David Delabassee
JVMs in Containers
David Delabassee
•
1.3K views
Serverless Java Challenges & Triumphs by David Delabassee
Serverless Java Challenges & Triumphs
David Delabassee
•
1.2K views
Serverless Java - Challenges and Triumphs by David Delabassee
Serverless Java - Challenges and Triumphs
David Delabassee
•
282 views
Randstad Docker meetup - Serverless by David Delabassee
Randstad Docker meetup - Serverless
David Delabassee
•
322 views
Java Serverless in Action - Voxxed Banff by David Delabassee
Java Serverless in Action - Voxxed Banff
David Delabassee
•
232 views
Serverless Kotlin by David Delabassee
Serverless Kotlin
David Delabassee
•
251 views
REST in an Async World by David Delabassee
REST in an Async World
David Delabassee
•
2.3K views
JAX-RS 2.1 Reloaded by David Delabassee
JAX-RS 2.1 Reloaded
David Delabassee
•
1.7K views
Java EE 8 - February 2017 update by David Delabassee
Java EE 8 - February 2017 update
David Delabassee
•
6K views
Java EE Next by David Delabassee
Java EE Next
David Delabassee
•
2.2K views
Java EE Next - BeJUG JavaOne Afterglow 2016 by David Delabassee
Java EE Next - BeJUG JavaOne Afterglow 2016
David Delabassee
•
433 views
HTTP/2 comes to Java by David Delabassee
HTTP/2 comes to Java
David Delabassee
•
5.9K views
Java EE 8 - Work in progress by David Delabassee
Java EE 8 - Work in progress
David Delabassee
•
2.5K views
HTTP/2 comes to Java (Dec. 2015 version) by David Delabassee
HTTP/2 comes to Java (Dec. 2015 version)
David Delabassee
•
690 views
HTTP/2 Comes to Java by David Delabassee
HTTP/2 Comes to Java
David Delabassee
•
2.9K views
HTTP/2 Comes to Java by David Delabassee
HTTP/2 Comes to Java
David Delabassee
•
10.8K views
Avatar 2.0 by David Delabassee
Avatar 2.0
David Delabassee
•
1.9K views
HTTP/2 Comes to Java - What Servlet 4.0 Means to You by David Delabassee
HTTP/2 Comes to Java - What Servlet 4.0 Means to You
David Delabassee
•
13.8K views
Pushing Java EE outside of the Enterprise - Home Automation by David Delabassee
Pushing Java EE outside of the Enterprise - Home Automation
David Delabassee
•
3.1K views
Recently uploaded
20231129 - Platform @ localhost 2023 - Application-driven infrastructure with... by
20231129 - Platform @ localhost 2023 - Application-driven infrastructure with...
sparkfabrik
5 views
•
46 slides
EV Charging App Case by
EV Charging App Case
iCoderz Solutions
5 views
•
1 slide
Quality Engineer: A Day in the Life by
Quality Engineer: A Day in the Life
John Valentino
6 views
•
18 slides
DSD-INT 2023 Process-based modelling of salt marsh development coupling Delft... by
DSD-INT 2023 Process-based modelling of salt marsh development coupling Delft...
Deltares
7 views
•
18 slides
Myths and Facts About Hospice Care: Busting Common Misconceptions by
Myths and Facts About Hospice Care: Busting Common Misconceptions
Care Coordinations
5 views
•
1 slide
Software evolution understanding: Automatic extraction of software identifier... by
Software evolution understanding: Automatic extraction of software identifier...
Ra'Fat Al-Msie'deen
9 views
•
33 slides
Recently uploaded
(20)
20231129 - Platform @ localhost 2023 - Application-driven infrastructure with... by sparkfabrik
20231129 - Platform @ localhost 2023 - Application-driven infrastructure with...
sparkfabrik
•
5 views
EV Charging App Case by iCoderz Solutions
EV Charging App Case
iCoderz Solutions
•
5 views
Quality Engineer: A Day in the Life by John Valentino
Quality Engineer: A Day in the Life
John Valentino
•
6 views
DSD-INT 2023 Process-based modelling of salt marsh development coupling Delft... by Deltares
DSD-INT 2023 Process-based modelling of salt marsh development coupling Delft...
Deltares
•
7 views
Myths and Facts About Hospice Care: Busting Common Misconceptions by Care Coordinations
Myths and Facts About Hospice Care: Busting Common Misconceptions
Care Coordinations
•
5 views
Software evolution understanding: Automatic extraction of software identifier... by Ra'Fat Al-Msie'deen
Software evolution understanding: Automatic extraction of software identifier...
Ra'Fat Al-Msie'deen
•
9 views
DSD-INT 2023 Simulating a falling apron in Delft3D 4 - Engineering Practice -... by Deltares
DSD-INT 2023 Simulating a falling apron in Delft3D 4 - Engineering Practice -...
Deltares
•
6 views
DSD-INT 2023 Wave-Current Interaction at Montrose Tidal Inlet System and Its ... by Deltares
DSD-INT 2023 Wave-Current Interaction at Montrose Tidal Inlet System and Its ...
Deltares
•
11 views
SAP FOR CONTRACT MANUFACTURING.pdf by Virendra Rai, PMP
SAP FOR CONTRACT MANUFACTURING.pdf
Virendra Rai, PMP
•
13 views
FIMA 2023 Neo4j & FS - Entity Resolution.pptx by Neo4j
FIMA 2023 Neo4j & FS - Entity Resolution.pptx
Neo4j
•
7 views
DSD-INT 2023 Thermobaricity in 3D DCSM-FM - taking pressure into account in t... by Deltares
DSD-INT 2023 Thermobaricity in 3D DCSM-FM - taking pressure into account in t...
Deltares
•
9 views
Sprint 226 by ManageIQ
Sprint 226
ManageIQ
•
5 views
Airline Booking Software by SharmiMehta
Airline Booking Software
SharmiMehta
•
6 views
Unleash The Monkeys by Jacob Duijzer
Unleash The Monkeys
Jacob Duijzer
•
7 views
The Era of Large Language Models.pptx by AbdulVahedShaik
The Era of Large Language Models.pptx
AbdulVahedShaik
•
5 views
BushraDBR: An Automatic Approach to Retrieving Duplicate Bug Reports by Ra'Fat Al-Msie'deen
BushraDBR: An Automatic Approach to Retrieving Duplicate Bug Reports
Ra'Fat Al-Msie'deen
•
8 views
Fleet Management Software in India by Fleetable
Fleet Management Software in India
Fleetable
•
11 views
DSD-INT 2023 Simulation of Coastal Hydrodynamics and Water Quality in Hong Ko... by Deltares
DSD-INT 2023 Simulation of Coastal Hydrodynamics and Water Quality in Hong Ko...
Deltares
•
14 views
Navigating container technology for enhanced security by Niklas Saari by Metosin Oy
Navigating container technology for enhanced security by Niklas Saari
Metosin Oy
•
14 views
DSD-INT 2023 Exploring flash flood hazard reduction in arid regions using a h... by Deltares
DSD-INT 2023 Exploring flash flood hazard reduction in arid regions using a h...
Deltares
•
5 views
What's coming in Java EE 8
1.
What’s coming in
Java EE 8 David Delabassee -‐ @delabassee Software Evangelist Java EE Org. -‐ Oracle June 2015 Copyright © 2015, Oracle and/or its affiliates. All rights reserved.
2.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. Agenda How did we get here? What do we want to do? How can you get involved? Preview of Java EE 8
3.
Safe Harbor Statement 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. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. 3
4.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. Java EE 7 ENTERPRISE EDITION ‣ Batch ‣ Concurrency ‣ Simplified JMS ‣ More annotated POJOs ‣ Less boilerplate code ‣ Cohesive integrated platform DEVELOPER PRODUCTIVITY ‣ WebSockets ‣ JSON ‣ Servlet 3.1 NIO ‣ REST MEETING ENTERPRISE DEMANDS Java EE 7 4
5.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. Industry Trends We're Seeing Cloud Mobile HTTP/2 SECURITY Reactive Programming User Experience 5
6.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. Feedback from the Community • Many sources – Users lists of java.net projects – JIRAs – JavaOne Java EE BOF and Java EE EG meeting – Outreach by evangelists • Consolidated into Community Survey – 47 questions – 15.000 answers 6
7.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. Community-‐Prioritized Features http://glassfish.org/survey 7
8.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. You asked for it, you got it! Java EE 8 Driven by Community Feedback
9.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. Java EE 8 Themes • HTML5 / Web Tier Enhancements • Ease of Development • Infrastructure for running in the Cloud 9
10.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. Java EE 8 Themes • HTML5 / Web Tier Enhancements • Ease of Development • Infrastructure for running in the Cloud 10
11.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. HTML5 Support / Web Tier Enhancements • JSON Binding • JSON Processing enhancements • Server-‐sent Events • Action-‐based MVC • HTTP/2 support 11
12.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. JSON-‐B • API to marshal/unmarshal Java objects to/from JSON – Similar to JAXB runtime API in XML world • Default mapping of classes to JSON – Annotations to customize the default mappings – JsonProperty, JsonTransient, JsonNillable, JsonValue, … Java API for JSON Binding 12
13.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. JSON-‐B • Draw from best practices of existing JSON binding implementations – Jackson, Genson, EclipseLink MOXy, Fleece, JSON-‐lib, Gson, Flexjson, Json-‐io, JSONiJ, Johnzon, Xstream, etc. • Switch JSON binding providers • Implementations compete on common ground Standard API 13
14.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. JSON-‐B // from default JsonbBuilder instance of the default JsonbProvider Jsonb jsonb = JsonbBuilder.create(); JsonbProvider myProvider = JsonbProvider.provider("foo.bar.ProviderImpl"); Jsonb jsonb = JsonbBuilder.newBuilder(myProvider); // UnMarshall Book book = jsonb.fromJson(new File("myBook.json"), Book.class); // Marshall jsonb.toJson(myObject, new File(“foo.json”)); jsonb.toJson(myObject, new PrintWriter(System.out)); 14
15.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. JSON-‐P 1.1 Java API for JSON Processing • Keep JSON-‐P spec up-‐to-‐date • Track new standards • Add editing operations to JsonObject and JsonArray • Java SE 8 • JSON Big Data 15
16.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. JSON-‐P 1.1 • String syntax for referencing a JSON value "/0/phone/mobile" JSON-‐Pointer – IETF RFC 6901 16
17.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. JSON-‐P 1.1 JsonArray contacts = … JsonPointer pointer = new JsonPointer("/0/name"); JsonValue value = pointer.getValue(contacts); [ { "name":"Duke", "gender":"M", "phones":{ "home":"650-‐123-‐4567", "mobile":"650-‐234-‐5678"}}, { "name":"Jane", "gender":"F", "phones":{ "mobile":"707-‐555-‐9999"}} ] 17
18.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. JSON-‐P 1.1 • String syntax for referencing a JSON value “/0/name" • Methods – getValue() – JSON operations: add(), replace(), remove() JSON-‐Pointer – IETF RFC 6901 JsonPointer pointer = new JsonPointer("/0/name"); JsonArray result = pointer.replace(contacts, Json.createValue("Alex")); 18
19.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. JSON-‐P 1.1 • Patch is a JSON document – Array of objects / operations for modifying a JSON document – add, replace, remove, move, copy, test JSON-‐Patch – IETF RFC 6902 [ {"op":"replace","path":"/0/phones/mobile","value":"650-‐111-‐222"}, {"op":"remove","path":"/1"} ] 19
20.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. JSON-‐P 1.1 [ { "op":"replace", "path":"/0/phones/mobile", "value":"650-‐111-‐2222"}, { "op":"remove", "path":"/1"} ] [ { "name":"Duke", "gender":"M", "phones":{ "home":"650-‐123-‐4567", "mobile":"650-‐234-‐5678"}}, { "name":"Jane", "gender":"F", "phones":{ "mobile":"707-‐555-‐9999"}} ] 20
21.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. JSON-‐P 1.1 [ { "op":"replace", "path":"/0/phones/mobile", "value":"650-‐111-‐2222"}, { "op":"remove", "path":"/1"} ] [ { "name":"Duke", "gender":"M", "phones":{ "home":"650-‐123-‐4567", "mobile":"650-‐111-‐2222"}}, { "name":"Jane", "gender":"F", "phones":{ "mobile":"707-‐555-‐9999"}} ] 21
22.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. JSON-‐P 1.1 [ { "op":"replace", "path":"/0/phones/mobile", "value":"650-‐111-‐2222"}, { "op":"remove", "path":"/1"} ] [ { "name":"Duke", "gender":"M", "phones":{ "home":"650-‐123-‐4567", "mobile":"650-‐111-‐2222"}} ] 22
23.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. JsonArray target = …; JsonArray patch = …; JsonPatch jsonPatch = new JsonPatch(patch); JsonArray result = jsonPatch.apply(target); JSON-‐P 1.1 JsonPatchBuilder builder = new JsonPatchBuilder(); JsonArray result = builder.add("/Joe/phones/office", "1234-‐567") .remove("/Amy/age") .apply(contacts); 23
24.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. JSON-‐P 1.1 JSON-‐Merge Patch – IETF RFC 7386 Orignal Patch Result {"a":"b"} {"a":"c"} {"a":"c"} {"a":"b"} {"b":"c"} {"a":"b", "b":"c"} {"a":"b"} {"a":null} { } {"a":"b", {"a":null} {"b":"c"} "b":"c"} { } {"a": {"a": {"bb": {"bb": {"ccc": {}}} null}}} 24
25.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. JSON-‐P 1.1 { "title": "Hello!", "author": { "familyName": null }, "tags": [ "example" ], "phoneNumber": "+01-‐123-‐456-‐7890" } { "title": "Goodbye!", "author": { "givenName": "John", "familyName": "Doe" }, "tags": [ "example", "sample" ], "content": "This will be unchanged" } { "title": "Hello!", "author": { "givenName": "John" }, "tags": [ "example" ], "content": "This will be unchanged", "phoneNumber": "+01-‐123-‐456-‐7890" } JSON-‐Merge Patch – IETF RFC 7386 25
26.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. JsonObject contact = …; // The target to be patched JsonObject patch = …; JsonValue output = JsonMergePatch.mergePatch(target, patch); JSON-‐P 1.1 JSON-‐Merge Patch – IETF RFC 7386 26
27.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. JSON-‐P 1.1 • Reverse operation – Given two objects returns the patch to apply (diff) JSON-‐Patch & JSON-‐Merge Patch Diff JsonValue output = JsonMergePatch.diff(original, target); JsonArray diff = JsonPatch.diff(original, target); 27
28.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. JSON-‐P 1.1 JSON Query collecting results in JsonArray JsonArray cars = ...; JsonArray audis = cars.getValuesAs(JsonObject.class).stream() .filter(x-‐>"Audi".equals(x.getString("brand"))) .map(x-‐>(x.getString("serial")) .collect(JsonCollectors.toJsonArray()); 28
29.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. JSON-‐P 1.1 • Keep JSON-‐P spec up-‐to-‐date • Track new standards • Add editing operations to JsonObject and JsonArray • Java SE 8 • JSON Big Data JSR 374 29
30.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. Server-‐sent Events • Part of HTML5 standardization • Server-‐to-‐client streaming of text data • Media type: “text/event-‐stream” • Long-‐lived HTTP connection – Client establishes connection – Server pushes update notifications to client 30
31.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. Server-‐sent Events • Servlet, WebSocket, JAX-‐RS or standalone API? • JAX-‐RS deemed most natural fit – Streaming HTTP resources already supported – Small extension • Server API: new media type; EventOutput • Client API: new handler for server side events – Convenience of mixing with other HTTP operations; new media type – Jersey already supports SSE 31
32.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. Server-‐sent Events @Path("tickers") public class StockTicker { … @Get @Produces("text/event-‐stream") public EventOutput getQuotes() { EventOutput eo = new EventOutput(); new StockThread(eo).start() return eo; } } JAX-‐RS resource class 32
33.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. JAX-‐RS StockThread class class StockThread extends Thread { private EventOutput eo; … @Override public void run() { try { … eo.send(new StockQuote("...")); } catch (IOException e) { … } } } Server-‐sent Events 33
34.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. WebTarget target = client.target("http://example.com/tickers"); EventSource eventSource = new EventSource(target) { @Override public void onEvent(InboundEvent inboundEvent) { StockQuote sq = inboundEvent.readData(StockQuote.class); // ... } }; eventSource.open(); JAX-‐RS Client Server-‐sent Events 34
35.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. MVC 1.0 • Why? – Java EE 8 Community Survey – UI landscape is not one size fits all Action-‐based Model-‐View-‐Controller architecture 35
36.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. MVC 1.0 • Model – CDI, Bean Validation, JPA • View – Facelets, JSP, SPI? • Controller – Invent new technology Vs. Leverage existing technologies? Glues together key Java EE technologies 36
37.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. Controller @Path("hello") @Controller public class HelloController { @GET @View("view1.xhtml") public void hello() { // do business stuff } } 37
38.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. Controller @Path("hello") public class HelloController { @GET @Controller public String hello() { // do business stuff return "viewA.jsp"; } } 38
39.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. Model @Named(“greeting”) @RequestScoped public class Greeting { private String message; public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } } 39
40.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. View <%@ page contentType=“text/html;charset=UTF-8” language=“java” %> <html> <head> <title>Hello</title> </head> <body> <p>Hello ${greeting.message}</p> </body> </html> 40
41.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. View <html> <head> <title>FreeMarker</title> </head> <body> <p>Hello ${user}</p> </body> </html> 41
42.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. JSR 371 • View Engine – JSP & Facelets – FreeMarker, Velocity, Thymeleaf, Mustache, Handlebars, Pebble, AsciiDoc • Validation • Exception Mapping Providers • Bootstrap via javax.ws.rs.core.Application • @Produces • CDI Events Early Draft Review 42
43.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. HTTP 1.1 circa 1999 • HoLB • HTTP uses TCP poorly - HTTP flows are short and bursty - TCP was built for long-‐lived flows • Solutions - File concatenations, Assets Inlining, Domain sharding, etc. Problems Vs Solutions 43
44.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. HTTP/2 • HTTP/2 – Hypertext Transfer Protocol version 2 -‐ RFC 7540 – HPACK -‐ Header Compression for HTTP/2 -‐ RFC 7541 • Reduce latency • Address the HOL blocking problem • Support parallelism • Retain semantics of HTTP 1.1 • Define interaction with HTTP 1.x Address the Limitations of HTTP 1.x 44
45.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. HTTP/2 • One TCP Connection • Request -‐> Stream – Multiplexed – Prioritised • Binary Framing Layer – Prioritisation – Flow Control – Server Push • Header Compression Multiplexed Binary Frames POST /upload HTTP/1.1 Host: www.test.com Content-‐Type: application/json Content-‐Length: 15 {“name”:“duke”} HTTP 1.1 HTTP/2 HEADERS frame DATA frame 45
46.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. HTTP/2 Server Push /index.html : stream 1 /style.css : stream 2 /logo.png : stream 4 Client Server stream 1 HEADERS stream 1 FRAME x stream 2 PROMISE stream 4 PROMISE 46
47.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. Servlet 4.0 • Request/response multiplexing – Servlet Request as HTTP/2 message • Stream prioritization – Add stream priority to HttpServletRequest • Server push • Binary framing • Upgrade from HTTP 1.1 HTTP/2 Features in Servlet API 47
48.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. Java EE 8 Themes • HTML5 / Web Tier Enhancements • Ease of Development • Infrastructure for running in the Cloud 48
49.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. Java EE 8 Themes • HTML5 / Web Tier Enhancements • Ease of Development • Infrastructure for running in the Cloud 49
50.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. Ease of Development • CDI alignment • JAX-‐RS injection alignment • Simplified messaging through CDI-‐based “MDBs” • WebSocket scopes • Pruning of EJB 2.x client view and IIOP interoperability • Security interceptors • … 50
51.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. JMS 2.1 • Alternative to EJB message-‐driven beans • Simpler JMS-‐specific annotations • Usable by any CDI bean • No need for MessageListener implementation New API to receive messages asynchronously 51
52.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. JMS @MessageDriven(activationConfig = { @ActivationConfigProperty(propertyName="connectionFactoryLookup", propertyValue="jms/myCF"), @ActivationConfigProperty(propertyName="destinationLookup", propertyValue="jms/myQueue"), @ActivationConfigProperty(propertyName="destinationType", propertyValue="javax.jms.queue")}) public class MyMDB implements MessageListener { public void onMessage(Message message) { // extract message body String body = message.getBody(String.class)); // process message body } } MDBs Today 52
53.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. JMS 2.1 @MessageDriven public class MyMessageBean implements JMSMessageDrivenBean { @JMSListener(lookup="java:global/Trades", type=JMSListener.Type.QUEUE) public void processTrade(TextMessage tradeMessage) { ... } } 53 MDBs Tomorrow?
54.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. • Java SE support • Modularity • Enhanced Events • Misc. – AOP – SPI – Interceptors and Decorators enhancements – Cleaning CDI 2.0 54
55.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. CDI 2.0 • Add new features to CDI without bloating the specification • “Sub specification”(aka “parts”) that can be used independently – SE – EE – more? • Will help CDI adoption Modularity 55
56.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. public class ProducerClass { @Inject Event<SomeEvent> someEvent; public void someMethod(...) { ... someEvent.fire(...); } } CDI 2.0 Synchronous Events public class ConsumerClass { public void someObserver(@Observes SomeEvent someEvent) { ... } } 56
57.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. CDI 2.0 Asynchronous Events public class ConsumerClass { public void someObserver(@ObservesAsync SomeEvent someEvent) { ... } } public class AsynchProducerClass { @Inject Event<Payload> someEvent; public void anotherMethod() { CompletionStage<…> completionStage someEvent.fireAsync(...); } } 57
58.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. CDI 2.0 Events Ordering public void importantObserver(@Observes @Priority(1) MyEvent evt) { ... } public void anotherObserver(@Observes @Priority(10) MyEvent evt) { ... } 58
59.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. Pruning Should we prune EJB 2.x remote and local client view (EJBObject, EJBLocalObject, EJBHome, and EJBLocalHome interfaces)? Should we prune CORBA, including support for interoperability by means of IIOP? Candidates for Proposed Optional status 59
60.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. Java EE 8 Themes • HTML5 / Web Tier Enhancements • Ease of Development • Infrastructure for running in the Cloud 60
61.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. Modernize the Infrastructure • Java EE Management 2.0 • Java EE Security 1.0 For On-‐Premise and for in the Cloud 61
62.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. Java EE Management 2.0 • Update to JSR 77 (“J2EE Management”) • REST-‐based interfaces to augment (or replace) current Management EJB APIs – Currently used OBJECT_NAME to become URL – Define CRUD operations over individual managed objects – Server-‐sent events used for event support • Simple deployment interfaces also to be considered as part of management API 62
63.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. Java EE Security 1.0 @IsAuthorized("hasRoles('Manager') && schedule.officeHrs") void transferFunds() @IsAuthorized("hasRoles('Manager') && hasAttribute('directReports', employee.id)") double getSalary(long employeeId); @IsAuthorized(ruleSourceName="java:app/payrollAuthRules", rule="report") void displayReport(); Authorization via CDI Interceptors 63
64.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. Java EE Security 1.0 Candidate Areas to Enhance Portability, Flexibility, Ease-‐of-‐Use • Authorization Interceptors • User Management • Role Mapping • Authentication • REST Authentication • Password Aliasing 64
65.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. Java EE 8 Themes • HTML5 / Web Tier Enhancements • Ease of Development • Infrastructure for running in the Cloud • Java SE 8 alignment 65
66.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. Java EE 8 JSRs • Java EE 8 Platform (JSR 366) • CDI 2.0 (JSR 365) • JSON Binding 1.0 (JSR 367) • JMS 2.1 (JSR 368) • Java Servlet 4.0 (JSR 369) • JAX-‐RS 2.1 (JSR 370) • MVC 1.0 (JSR 371) * • JSF 2.3 (JSR 372) • Java EE Management 2.0 (JSR 373) • JSON-‐P 1.1 (JSR 374) • Java EE Security 1.0 (JSR 375) So far….. 66
67.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. And More to Follow… • JPA • Bean Validation • JCache • Connector Architecture • WebSocket • Interceptors • EJB • JTA • Batch • Concurrency Utilities • JavaMail • … 67
68.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. Roadmap • Tentative Delivery Schedule – Q3 2014: Expert Group formed – Q3 2015: Early Draft – Q4 2015: Public Review – Q2 2016: Proposed Final Draft – H1 2017: Final Release • Contribute! 68
69.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. How to Get Involved • Join an Expert Group – http://javaee-‐spec.java.net • Adopt a JSR – http://glassfish.org/adoptajsr • The Aquarium – http://blogs.oracle.com/theaquarium • Java EE Reference Implementation – http://glassfish.org 69
70.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved. Obrigado! 70
71.
Copyright © 2015,
Oracle and/or its affiliates. All rights reserved.