EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date:...
Transcript of EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date:...
![Page 1: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/1.jpg)
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.
![Page 2: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/2.jpg)
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
![Page 3: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/3.jpg)
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
![Page 4: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/4.jpg)
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
![Page 5: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/5.jpg)
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.
Industry Trends We're SeeingClou
d
Mobile
HTTP/2SECURITY
Reactive Programming
User Experience
5
![Page 6: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/6.jpg)
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
![Page 7: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/7.jpg)
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.
Community-‐Prioritized Features
http://glassfish.org/survey
7
![Page 8: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/8.jpg)
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.
You asked for it, you got it!
Java EE 8Driven by Community Feedback
![Page 9: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/9.jpg)
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
![Page 10: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/10.jpg)
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
![Page 11: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/11.jpg)
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
![Page 12: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/12.jpg)
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
![Page 13: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/13.jpg)
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
![Page 14: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/14.jpg)
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.
JSON-‐B// from default JsonbBuilder instance of the default JsonbProviderJsonb jsonb = JsonbBuilder.create();
JsonbProvider myProvider = JsonbProvider.provider("foo.bar.ProviderImpl");Jsonb jsonb = JsonbBuilder.newBuilder(myProvider);
// UnMarshallBook book = jsonb.fromJson(new File("myBook.json"), Book.class);
// Marshalljsonb.toJson(myObject, new File(“foo.json”));jsonb.toJson(myObject, new PrintWriter(System.out));
14
![Page 15: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/15.jpg)
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.
JSON-‐P 1.1Java 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
![Page 16: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/16.jpg)
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
![Page 17: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/17.jpg)
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.
JSON-‐P 1.1JsonArray 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
![Page 18: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/18.jpg)
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
![Page 19: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/19.jpg)
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
![Page 20: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/20.jpg)
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
![Page 21: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/21.jpg)
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
![Page 22: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/22.jpg)
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
![Page 23: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/23.jpg)
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
![Page 24: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/24.jpg)
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.
JSON-‐P 1.1JSON-‐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
![Page 25: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/25.jpg)
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
![Page 26: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/26.jpg)
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.1JSON-‐Merge Patch – IETF RFC 7386
26
![Page 27: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/27.jpg)
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
![Page 28: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/28.jpg)
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.
JSON-‐P 1.1JSON 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
![Page 29: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/29.jpg)
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
![Page 30: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/30.jpg)
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
![Page 31: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/31.jpg)
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
![Page 32: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/32.jpg)
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
![Page 33: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/33.jpg)
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
![Page 34: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/34.jpg)
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
![Page 35: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/35.jpg)
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
![Page 36: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/36.jpg)
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
![Page 37: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/37.jpg)
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
![Page 38: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/38.jpg)
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.
Controller
@Path("hello") public class HelloController {
@GET@Controllerpublic String hello() {
// do business stuff return "viewA.jsp";
} }
38
![Page 39: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/39.jpg)
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
![Page 40: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/40.jpg)
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
![Page 41: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/41.jpg)
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
![Page 42: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/42.jpg)
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
![Page 43: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/43.jpg)
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
![Page 44: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/44.jpg)
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
![Page 45: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/45.jpg)
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
![Page 46: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/46.jpg)
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.
HTTP/2Server 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
![Page 47: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/47.jpg)
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
![Page 48: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/48.jpg)
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
![Page 49: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/49.jpg)
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
![Page 50: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/50.jpg)
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
![Page 51: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/51.jpg)
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
![Page 52: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/52.jpg)
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
![Page 53: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/53.jpg)
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?
![Page 54: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/54.jpg)
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
![Page 55: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/55.jpg)
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
![Page 56: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/56.jpg)
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.
public class ProducerClass {
@Inject Event<SomeEvent> someEvent;
public void someMethod(...) { ... someEvent.fire(...); }
}
CDI 2.0Synchronous Events
public class ConsumerClass {
public void someObserver(@Observes SomeEvent someEvent) { ...
}
}
56
![Page 57: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/57.jpg)
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.
CDI 2.0Asynchronous 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
![Page 58: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/58.jpg)
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.
CDI 2.0Events Ordering
public void importantObserver(@Observes @Priority(1) MyEvent evt) { ... }
public void anotherObserver(@Observes @Priority(10) MyEvent evt) { ... }
58
![Page 59: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/59.jpg)
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
![Page 60: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/60.jpg)
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
![Page 61: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/61.jpg)
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
![Page 62: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/62.jpg)
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
![Page 63: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/63.jpg)
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
![Page 64: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/64.jpg)
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.
Java EE Security 1.0Candidate Areas to Enhance Portability, Flexibility, Ease-‐of-‐Use
• Authorization Interceptors • User Management • Role Mapping • Authentication • REST Authentication • Password Aliasing
64
![Page 65: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/65.jpg)
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
![Page 66: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/66.jpg)
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
![Page 67: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/67.jpg)
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
![Page 68: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/68.jpg)
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
![Page 69: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/69.jpg)
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
![Page 70: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/70.jpg)
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.
Obrigado!
70
![Page 71: EE8 JavaOne LAD PDF - Oracle Cloud · • JPA’ • … Title: EE8 JavaOne LAD PDF Created Date: 8/3/2015 8:02:08 AM](https://reader030.fdocuments.us/reader030/viewer/2022040413/5f12ec58940d9203646f05b0/html5/thumbnails/71.jpg)
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.