JavaEE& 8 · Safe&Harbor&Statement...
Transcript of JavaEE& 8 · Safe&Harbor&Statement...
![Page 1: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/html5/thumbnails/1.jpg)
David Delabassee -‐ @delabassee Oracle
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.
Java EE 8
1
![Page 2: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/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?
1
2
3
Preview of Java EE 8
![Page 3: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/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: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/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: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/html5/thumbnails/5.jpg)
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.
Industry Trends We're Seeing
Clou
d
Mobile
HTTP/2
SECURITYReactive Programming
User Experience
5
![Page 6: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/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 2013 Java EE BOF and Java EE EG meeting –Outreach by evangelists
• Consolidated into Community Survey
6
![Page 7: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/html5/thumbnails/7.jpg)
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.
Java EE 8 Community Survey
• 3 parts over 3½ months – 47 questions – 15 fill-‐ins – 1000’s of comments
• 4500+ respondents • Prioritization of most-‐popular features
7
![Page 8: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/html5/thumbnails/8.jpg)
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. 8
![Page 9: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/html5/thumbnails/9.jpg)
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.
Community-‐Prioritized Features
9
http://glassfish.org/survey
![Page 10: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/html5/thumbnails/10.jpg)
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.
You asked for it, you got it!
10
Java EE 8Driven by Community Feedback
![Page 11: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/html5/thumbnails/11.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
11
![Page 12: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/html5/thumbnails/12.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
12
![Page 13: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/html5/thumbnails/13.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
13
![Page 14: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/html5/thumbnails/14.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
14
![Page 15: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/html5/thumbnails/15.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
15
![Page 16: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/html5/thumbnails/16.jpg)
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.
JSON-‐B@Entity public class Person { @Id String name; String gender; @ElementCollection Map<String,String> phones; ... // getters and setters }
Person duke = new Person(); duke.setName("Duke"); duke.setGender("M"); phones = new HashMap<String,String>(); phones.put("home", "650-‐123-‐4567"); phones.put("mobile", "650-‐234-‐5678"); duke.setPhones(phones);
Marshaller marshaller = new JsonContext().createMarshaller().setPrettyPrinting(true); marshaller.marshal(duke, System.out);
{ "name":"Duke", "gender":"M", "phones":{ "home":"650-‐123-‐4567", "mobile":"650-‐234-‐5678"} }
16
![Page 17: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/html5/thumbnails/17.jpg)
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.
• All the way from client to database – JSON-‐B will provide JAX-‐RS a standard way to support “application/json” media type
JSON-‐B
JPA JSON-‐BData Source
JSONJAX-‐RSJava Objects
17
JSR 367
![Page 18: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/html5/thumbnails/18.jpg)
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.
JSON-‐P 1.1Java API for JSON Processing
18
• Keep JSON-‐P spec up-‐to-‐date • Track new standards • Add editing operations to JsonObject and JsonArray • Java SE 8 • JSON Big Data
![Page 19: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/html5/thumbnails/19.jpg)
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.
JSON-‐P: Java API for JSON Processing 1.1
• String syntax for referencing a JSON value "/0/phone/mobile"
JSON-‐Pointer – IETF RFC 6901
19
![Page 20: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/html5/thumbnails/20.jpg)
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.
JSON-‐P 1.1JsonArray contacts = … JsonPointer p = Json.createPointer("/0/phones/mobile"); JsonValue v = p.getValue(contacts);
[ { "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: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/html5/thumbnails/21.jpg)
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.
JSON-‐P: Java API for JSON Processing 1.1
• String syntax for referencing a JSON value “/0/phone/mobile"
• Methods – getValue() – JSON Patch operations: add(), replace(), remove(), move(), copy(), test()
JSON-‐Pointer – IETF RFC 6901
21
![Page 22: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/html5/thumbnails/22.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 [ {"op":"replace","path":"/0/phones/mobile","value":"650-‐111-‐222"}, {"op":"remove","path":"/1"} ]
– apply Vs. diff
JSON-‐Patch – IETF RFC 6902
22
![Page 23: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/html5/thumbnails/23.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"}} ]
23
![Page 24: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/html5/thumbnails/24.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"}} ]
24
![Page 25: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/html5/thumbnails/25.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"}} ]
25
![Page 26: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/html5/thumbnails/26.jpg)
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.
JSON-‐P 1.1JSON Query using Lambda Operations
JsonArray contacts = ...; List<String> femaleNames = contacts.getValuesAs(JsonObject.class).stream() .filter(x-‐>"F".equals(x.getString("gender"))) .map(x-‐>(x.getString("name")) .collect(Collectors.toList());
26
![Page 27: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/html5/thumbnails/27.jpg)
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.
JSON-‐P 1.1JSON Query collecting results in JsonArray
JsonArray contacts = ...; JsonArray femaleNames = contacts.getValuesAs(JsonObject.class).stream() .filter(x-‐>"F".equals(x.getString("gender"))) .map(x-‐>(x.getString("name")) .collect(JsonCollectors.toJsonArray());
27
![Page 28: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/html5/thumbnails/28.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
28
JSR 374
![Page 29: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/html5/thumbnails/29.jpg)
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.
Server-‐sent Events
Should we also standardize a Java API for server-‐sent events?
29
![Page 30: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/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: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/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: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/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: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/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) { … } } }
33
Server-‐sent Events
![Page 34: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/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
34
Server-‐sent Events
![Page 35: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/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
35
Action-‐based Model-‐View-‐Controller architecture
![Page 36: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/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?
36
Glues together key Java EE technologies
![Page 37: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/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() {
…}
}
37
![Page 38: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/html5/thumbnails/38.jpg)
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.
Controller
@Path("hello") public class HelloController {
@GET@Controllerpublic String hello() {
… return "viewA.jsp";
} }
38
![Page 39: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/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: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/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: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/html5/thumbnails/41.jpg)
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.
JSR 371• View Engine
– JSP & Facelets – FreeMarker, Velocity, Thymeleaf, Mustache, Handlebars & Pebble
• Validation • Exception Mapping Providers • Bootstrap via javax.ws.rs.core.Application • @Produces • CDI Events
41
Early Draft Review
![Page 42: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/html5/thumbnails/42.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
42
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
![Page 43: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/html5/thumbnails/43.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
43
![Page 44: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/html5/thumbnails/44.jpg)
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.
JSF 2.3
• CDI Alignment –@Inject FacesContext, ExternalContext, etc. – Rely on CDI for EL resolving – CDI managed versions of Validator and Converter – Invoking CDI managed bean methods directly from Ajax, etc.
• “Adjustments” for MVC – Facelets, JSF scopes, etc.
• Misc. –Multi-‐field validation, etc.
44
![Page 45: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/html5/thumbnails/45.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
45
![Page 46: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/html5/thumbnails/46.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 • …
46
![Page 47: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/html5/thumbnails/47.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
47
![Page 48: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/html5/thumbnails/48.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 } }
JMS MDBs Today
48
![Page 49: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/html5/thumbnails/49.jpg)
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.
JMS 2.1
public class MyListenerBean {
@JMSListener(destinationLookup="jms/myQueue")
@Transactional
public void myCallback(Message message) {
...
}
}
Allow any Java EE bean to be a listener
49
![Page 50: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/html5/thumbnails/50.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
50
CDI 2.0
![Page 51: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/html5/thumbnails/51.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 • Will help CDI adoption • Parts
– SE – EE –more?
51
Modularity
![Page 52: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/html5/thumbnails/52.jpg)
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. 52
public class ProducerClass {
@Inject Event<SomeEvent> someEvent;
public void someMethod(...) { ... someEvent.fire(...); }
}
CDI 2.0Asynchronous Events
public class AnotherClass {
public void someObserver(@Observes SomeEvent someEvent) { ...
}
}
public class AsynchProducerClass {
@Inject Event<Payload> someEvent;
public void anotherMethod() {
CompletionStage<…> completionStage someEvent.fireAsync(...);
}
}
![Page 53: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/html5/thumbnails/53.jpg)
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. 53
CDI 2.0Events Ordering
public void importantObserver(@Observes @Priority(1) MyEvent evt) { ... }
public void anotherObserver(@Observes @Priority(10) MyEvent evt) { ... }
![Page 54: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/html5/thumbnails/54.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
54
![Page 55: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/html5/thumbnails/55.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
55
![Page 56: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/html5/thumbnails/56.jpg)
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.
Modernize the Infrastructure
• Java EE Management 2.0 – REST-‐based APIs for Management and Deployment
• Java EE Security 1.0 – Authorization – Password Aliasing – User Management – Role Mapping – Authentication – REST Authentication
For On-‐Premise and for in the Cloud
56
![Page 57: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/html5/thumbnails/57.jpg)
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.
Management and Deployment APIs
Should we define new APIs to deploy and manage applications?
Should such new Deployment and Management APIs be REST APIs or JMX APIs?
57
![Page 58: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/html5/thumbnails/58.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
58
![Page 59: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/html5/thumbnails/59.jpg)
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.
Security Simplifications
Should we consider adding Security Interceptors in Java EE 8?
Should we simplify authorization by introducing an EL-‐enabled authorization annotation?
59
![Page 60: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/html5/thumbnails/60.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
60
![Page 61: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/html5/thumbnails/61.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 • Password Aliasing • User Management • Role Mapping • Authentication • REST Authentication
61
![Page 62: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/html5/thumbnails/62.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
62
![Page 63: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/html5/thumbnails/63.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…..
63
![Page 64: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/html5/thumbnails/64.jpg)
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.
And More to Follow…
• Bean Validation • EL • Concurrency Utilities • Connector Architecture • WebSocket • Interceptors • JPA
• EJB • JTA • JCache • Batch • JavaMail • …
64
![Page 65: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/html5/thumbnails/65.jpg)
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.
Roadmap• Tentative Delivery Schedule
–Q3 2014: JSR 369 Expert Group formed –Q1 2015: early draft –Q3 2015: public review –Q4 2015: proposed final draft –Q3 2016: final release
• TBC! • Contribute!
![Page 66: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/html5/thumbnails/66.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
![Page 67: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/html5/thumbnails/67.jpg)
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.
Thanks
67
![Page 68: JavaEE& 8 · Safe&Harbor&Statement The&following&is&intended&to&outline&our&general&productdirection.&Itis&intended&for& information&purposes&only,&and&may¬be&incorporated&into](https://reader036.fdocuments.in/reader036/viewer/2022070721/5ee1c030ad6a402d666c8499/html5/thumbnails/68.jpg)
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. 68