SlideShare ist ein Scribd-Unternehmen logo
1 von 78
Downloaden Sie, um offline zu lesen
PT.JUG	
  -­‐	
  Lisbon	
  June	
  2015	
  	
  
David	
  Delabassee	
  -­‐	
  @delabassee	
  
Oracle	
  
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  
What's	
  Coming	
  in	
  Java	
  EE	
  8
1
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
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.	
  
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
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
Industry	
  Trends	
  We're	
  Seeing
Cloud
Mobile
HTTP/2
SECURITY
Reactive	
  Programming
User	
  Experience
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
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
Community-­‐Prioritized	
  Features
7
http://glassfish.org/survey
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  You	
  asked	
  for	
  it,	
  you	
  got	
  it!
8
Java	
  EE	
  8
Driven	
  by	
  Community	
  Feedback
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
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
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
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
JSON-­‐B
Which	
  of	
  these	
  APIs	
  do	
  you	
  think	
  is	
  important	
  to	
  be	
  included	
  in	
  Java	
  EE	
  8?	
  
Java	
  API	
  for	
  JSON	
  Binding
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
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
14
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);	
  
JsonParser	
  parser	
  =	
  marshaller.marshal(duke);	
  
marshaller.marshal(duke,	
  new	
  FileWriter("mascot.json"));	
  
	
  	
  {	
  
	
  	
  	
  	
  "name":"Duke",	
  
	
  	
  	
  	
  "gender":"M",	
  
	
  	
  	
  	
  "phones":{	
  
	
  	
  	
  	
  	
  	
  	
  "home":"650-­‐123-­‐4567",	
  
	
  	
  	
  	
  	
  	
  	
  "mobile":"650-­‐234-­‐5678"}	
  
	
  	
  }	
  
15
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-­‐B
Data	
  
Source
JSON
JAX-­‐RS
Java	
  Objects
16
JSR	
  367
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
JSON-­‐P	
  1.1
Java	
  API	
  for	
  JSON	
  Processing
17
• Keep	
  JSON-­‐P	
  spec	
  up-­‐to-­‐date	
  
• Track	
  new	
  standards	
  
• Add	
  editing	
  operations	
  to	
  JsonObject	
  and	
  JsonArray	
  
• Java	
  SE	
  8	
  
• JSON	
  Big	
  Data
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
18
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"}}	
  
]	
  
	
  	
  
19
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
20
	
  JsonPointer	
  pointer	
  =	
  new	
  JsonPointer("/0/name");	
  
	
  JsonArray	
  result	
  =	
  pointer.replace(contacts,	
  Json.createValue("Alex"));
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
21
[	
  
	
  	
  	
  {"op":"replace","path":"/0/phones/mobile","value":"650-­‐111-­‐222"},	
  
	
  	
  	
  {"op":"remove","path":"/1"}	
  
]
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"}}	
  
]	
  
	
  	
  
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"}},	
  
	
  	
  {	
  
	
  	
  	
  	
  "name":"Jane",	
  
	
  	
  	
  	
  "gender":"F",	
  
	
  	
  	
  	
  "phones":{	
  
	
  	
  	
  	
  	
  	
  	
  "mobile":"707-­‐555-­‐9999"}}	
  
]	
  
	
  	
  
23
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"}}	
  
]	
  
	
  	
  
24
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
25
	
  JsonPatchBuilder	
  builder	
  =	
  new	
  JsonPatchBuilder();	
  
	
  JsonArray	
  result	
  =	
  builder.add("/Joe/phones/office",	
  "1234-­‐567")	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  .remove("/Amy/age")	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  .apply(contacts);
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
JSON-­‐P	
  1.1
{	
  
	
  	
  	
  	
  	
  "title":	
  "Hello!",	
  
	
  	
  	
  	
  	
  "phoneNumber":	
  "+01-­‐123-­‐456-­‐7890",	
  
	
  	
  	
  	
  	
  "author":	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "familyName":	
  null	
  
	
  	
  	
  	
  	
  	
  },	
  
	
  	
  	
  	
  	
  	
  "tags":	
  [	
  "example"	
  ]	
  
	
  }	
  
26
{	
  
	
  	
  	
  	
  "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
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
27
JsonValue	
  output	
  =	
  JsonMergePatch.diff(original,	
  target);	
  
JsonArray	
  diff	
  =	
  JsonPatch.diff(original,	
  target);
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
JSON-­‐P	
  1.1
JSON	
  Query	
  using	
  Lambda	
  Operations
JsonArray	
  cars	
  =	
  ...;	
  
List<String>	
  audis	
  =	
  cars.getValuesAs(JsonObject.class).stream()	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  .filter(x-­‐>"Audi".equals(x.getString("brand")))	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  .map(x-­‐>(x.getString("serial"))	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  .collect(Collectors.toList());
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());
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
30
JSR	
  374
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
Server-­‐sent	
  Events
Should	
  we	
  also	
  standardize	
  a	
  Java	
  API	
  for	
  server-­‐sent	
  events?	
  
31
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
32
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
33
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
34
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)	
  {	
  …	
  }
}
}
35
Server-­‐sent	
  Events
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
36
Server-­‐sent	
  Events
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
Model	
  View	
  Controller	
  1.0	
  	
  (MVC)
Should	
  Java	
  EE	
  provide	
  support	
  for	
  MVC	
  alongside	
  JSF?	
  	
  
Is	
  there	
  any	
  one	
  de-­‐facto	
  standard	
  technology	
  in	
  this	
  space	
  to	
  which	
  we	
  
should	
  look	
  for	
  inspiration?
37
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	
  
38
Action-­‐based	
  Model-­‐View-­‐Controller	
  architecture
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?
39
Glues	
  together	
  key	
  Java	
  EE	
  technologies
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.
Controller
@Path("hello")
@Controller
public class HelloController {
@GET
@View("view1.xhtml")
public void hello() {
…
}
}
40
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";
}
}
41
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;
}
}
42
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.
View
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC …>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html">
<h:head>
<title>Facelet!</title>
</h:head>
<h:body>
<p>${greeting.message} to BCN</p>
</h:body>
</html>
43
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>
44
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.
View
<html>
<head>
<title>FreeMarker</title>
</head>
<body>
<p>Hello ${user}</p>
</body>
</html>
45
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
46
	
  	
  	
  	
  	
  	
  Early	
  Draft	
  Review
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
HTTP	
  1.1	
  circa	
  1999
47
• 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
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
HTTP/2
• “HTTP/2	
  is	
  nearly	
  done	
  standardization”	
  
– 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
48
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
49
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
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
HTTP/2
Server	
  Push
/index.html	
  :	
  stream	
  1	
  
/style.css	
  :	
  stream	
  2	
  
/script.js	
  :	
  stream	
  4
Client Server
stream	
  1	
  
HEADERS
stream	
  1	
  
FRAME	
  x
stream	
  2	
  
PROMISE
stream	
  4	
  
PROMISE
50
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
HTTP/2
Header	
  Compression
51
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
52
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
53
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	
  
• …
54
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
55
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
56
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
57
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
• Java	
  SE	
  support	
  
• Modularity	
  
• Enhanced	
  Events	
  
• Misc.	
  
– AOP	
  
– SPI	
  
– Interceptors	
  and	
  Decorators	
  enhancements	
  
– Cleaning	
  
58
CDI	
  2.0
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
59
Modularity
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
   60
public	
  class	
  ProducerClass	
  {	
  
	
   @Inject	
  Event<SomeEvent>	
  someEvent;	
  
	
   public	
  void	
  someMethod(...)	
  {	
  
	
   	
   ...	
  
	
   	
   someEvent.fire(...);	
  
	
   }	
  
}
CDI	
  2.0
Asynchronous	
  Events
public	
  class	
  AnotherClass	
  {	
  
	
  	
  	
  	
  	
  	
  public	
  void	
  someObserver(@Observes	
  SomeEvent	
  someEvent)	
  {	
  
	
  	
  	
  ...	
  
	
  	
  	
  	
  	
  	
  }	
  
}
public	
  class	
  AsynchProducerClass	
  {	
  	
  	
  	
  	
  
	
  	
  	
  	
  	
  @Inject	
  Event<Payload>	
  someEvent;	
  
	
  	
  	
  	
  	
  public	
  void	
  anotherMethod()	
  {	
  
	
  	
  	
  CompletionStage<…>	
  completionStage	
  someEvent.fireAsync(...);	
  
	
  	
  	
  	
  	
  }	
  
}
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
   61
CDI	
  2.0
Events	
  Ordering
public	
  void	
  importantObserver(@Observes	
  @Priority(1)	
  MyEvent	
  evt)	
  
{	
  
...	
  
}	
  
public	
  void	
  anotherObserver(@Observes	
  @Priority(10)	
  MyEvent	
  evt)	
  
{	
  
...	
  
}
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
62
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
63
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
64
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
65
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
66
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
Java	
  EE	
  Security	
  1.0
User	
  Management
• Allow	
  application	
  to	
  manage	
  its	
  own	
  users	
  and	
  	
  groups	
  
– Without	
  need	
  to	
  access	
  server	
  configuration	
  
• Users	
  stored	
  in	
  application-­‐specified	
  repository	
  (e.g.	
  LDAP)	
  
• User	
  service	
  manipulates	
  users	
  from	
  user	
  source	
  	
  
LDAPUserInfo UserService
UserSource	
  
Definition
67
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
Java	
  EE	
  Security	
  1.0
User	
  Management
@LdapUserSourceDefinition(	
  
	
  	
  name="java:app/ldapUserSource",	
  
	
  	
  ldapUrl="ldap://someURL",	
  
	
  	
  ldapUser="ElDap",	
  
	
  	
  ldapPassword="${ALIAS=LdapPW}",	
  
	
  	
  ...	
  
)	
  
public	
  class	
  MyAuthenticator	
  {	
  
	
  	
  @Resource(lookup="java:app/ldapUserSource")	
  
	
  	
  private	
  UserService	
  userService;	
  
	
  	
  private	
  boolean	
  isAccountEnabled(String	
  username)	
  {	
  
	
  	
  	
  	
  return	
  userService.loadUserByUsername(username).isEnabled();	
  
	
  	
  }	
  
	
  	
  ...	
  
}
68
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
Java	
  EE	
  Security	
  1.0
Password	
  Aliasing
• Standardized	
  syntax	
  for	
  password	
  aliases	
  
	
  	
  	
  	
  	
  
• Standardized	
  ‘secure	
  credentials	
  archive’	
  
– Co-­‐bundle	
  alias	
  and	
  password	
  with	
  App	
  	
  
– Used	
  by	
  platform	
  as	
  credential	
  store	
  for	
  resolving	
  alias
69
@DataSourceDefinition(	
  	
  
	
  	
  	
  name="java:app/MyDataSource",	
  	
  
	
  	
  	
  className="com.example.MyDataSource",	
  …	
  
	
  	
  	
  user="duke",	
  	
  
	
  	
  	
  password="${ALIAS=dukePassword}")
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	
  
70
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
71
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…..
72
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	
  
• …
73
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!
74
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
75
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
GlassFish
http://glassfish.org
Java	
  EE	
  Reference	
  Implementation
76
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
Obrigado!
77
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  

Weitere ähnliche Inhalte

Was ist angesagt?

Top 50 java ee 7 best practices [con5669]
Top 50 java ee 7 best practices [con5669]Top 50 java ee 7 best practices [con5669]
Top 50 java ee 7 best practices [con5669]Ryan Cuprak
 
JavaOne 2011: Migrating Spring Applications to Java EE 6
JavaOne 2011: Migrating Spring Applications to Java EE 6JavaOne 2011: Migrating Spring Applications to Java EE 6
JavaOne 2011: Migrating Spring Applications to Java EE 6Bert Ertman
 
Introducing Java 8
Introducing Java 8Introducing Java 8
Introducing Java 8PT.JUG
 
Java EE 7 from an HTML5 Perspective, JavaLand 2015
Java EE 7 from an HTML5 Perspective, JavaLand 2015Java EE 7 from an HTML5 Perspective, JavaLand 2015
Java EE 7 from an HTML5 Perspective, JavaLand 2015Edward Burns
 
Java EE Revisits GoF Design Patterns
Java EE Revisits GoF Design PatternsJava EE Revisits GoF Design Patterns
Java EE Revisits GoF Design PatternsMurat Yener
 
WebSocket in Enterprise Applications 2015
WebSocket in Enterprise Applications 2015WebSocket in Enterprise Applications 2015
WebSocket in Enterprise Applications 2015Pavel Bucek
 
Java EE 8 - An instant snapshot
Java EE 8 - An instant snapshot Java EE 8 - An instant snapshot
Java EE 8 - An instant snapshot David Delabassee
 
JavaOne - 10 Tips for Java EE 7 with PrimeFaces
JavaOne - 10 Tips for Java EE 7 with PrimeFacesJavaOne - 10 Tips for Java EE 7 with PrimeFaces
JavaOne - 10 Tips for Java EE 7 with PrimeFacesMert Çalışkan
 
EJB and CDI - Alignment and Strategy
EJB and CDI - Alignment and StrategyEJB and CDI - Alignment and Strategy
EJB and CDI - Alignment and StrategyDavid Delabassee
 
Enterprise Java Web Application Frameworks Sample Stack Implementation
Enterprise Java Web Application Frameworks   Sample Stack ImplementationEnterprise Java Web Application Frameworks   Sample Stack Implementation
Enterprise Java Web Application Frameworks Sample Stack ImplementationMert Çalışkan
 
2015 JavaOne EJB/CDI Alignment
2015 JavaOne EJB/CDI Alignment2015 JavaOne EJB/CDI Alignment
2015 JavaOne EJB/CDI AlignmentDavid Blevins
 
jDays2015 - JavaEE vs. Spring Smackdown
jDays2015 - JavaEE vs. Spring SmackdownjDays2015 - JavaEE vs. Spring Smackdown
jDays2015 - JavaEE vs. Spring SmackdownMert Çalışkan
 
Ankara JUG Ağustos 2013 - Oracle ADF
Ankara JUG Ağustos 2013 - Oracle ADFAnkara JUG Ağustos 2013 - Oracle ADF
Ankara JUG Ağustos 2013 - Oracle ADFAnkara JUG
 
HTTP/2 comes to Java. What Servlet 4.0 means to you. DevNexus 2015
HTTP/2 comes to Java.  What Servlet 4.0 means to you. DevNexus 2015HTTP/2 comes to Java.  What Servlet 4.0 means to you. DevNexus 2015
HTTP/2 comes to Java. What Servlet 4.0 means to you. DevNexus 2015Edward Burns
 
Adopt-a-JSR for JSON Processing 1.1, JSR 374
Adopt-a-JSR for JSON Processing 1.1, JSR 374Adopt-a-JSR for JSON Processing 1.1, JSR 374
Adopt-a-JSR for JSON Processing 1.1, JSR 374Heather VanCura
 

Was ist angesagt? (20)

JavaCro'15 - HUJAKing – Expansion of Java Community - Branko Mihaljević, Alek...
JavaCro'15 - HUJAKing – Expansion of Java Community - Branko Mihaljević, Alek...JavaCro'15 - HUJAKing – Expansion of Java Community - Branko Mihaljević, Alek...
JavaCro'15 - HUJAKing – Expansion of Java Community - Branko Mihaljević, Alek...
 
Top 50 java ee 7 best practices [con5669]
Top 50 java ee 7 best practices [con5669]Top 50 java ee 7 best practices [con5669]
Top 50 java ee 7 best practices [con5669]
 
JavaCro'15 - Java Certification – in theory and practice - Branko Mihaljević,...
JavaCro'15 - Java Certification – in theory and practice - Branko Mihaljević,...JavaCro'15 - Java Certification – in theory and practice - Branko Mihaljević,...
JavaCro'15 - Java Certification – in theory and practice - Branko Mihaljević,...
 
JavaOne 2011: Migrating Spring Applications to Java EE 6
JavaOne 2011: Migrating Spring Applications to Java EE 6JavaOne 2011: Migrating Spring Applications to Java EE 6
JavaOne 2011: Migrating Spring Applications to Java EE 6
 
Introducing Java 8
Introducing Java 8Introducing Java 8
Introducing Java 8
 
Java EE 7 from an HTML5 Perspective, JavaLand 2015
Java EE 7 from an HTML5 Perspective, JavaLand 2015Java EE 7 from an HTML5 Perspective, JavaLand 2015
Java EE 7 from an HTML5 Perspective, JavaLand 2015
 
Java EE Revisits GoF Design Patterns
Java EE Revisits GoF Design PatternsJava EE Revisits GoF Design Patterns
Java EE Revisits GoF Design Patterns
 
WebSocket in Enterprise Applications 2015
WebSocket in Enterprise Applications 2015WebSocket in Enterprise Applications 2015
WebSocket in Enterprise Applications 2015
 
JavaCro'15 - Everything a Java EE Developer needs to know about the JavaScrip...
JavaCro'15 - Everything a Java EE Developer needs to know about the JavaScrip...JavaCro'15 - Everything a Java EE Developer needs to know about the JavaScrip...
JavaCro'15 - Everything a Java EE Developer needs to know about the JavaScrip...
 
Java EE 8 - An instant snapshot
Java EE 8 - An instant snapshot Java EE 8 - An instant snapshot
Java EE 8 - An instant snapshot
 
JavaOne - 10 Tips for Java EE 7 with PrimeFaces
JavaOne - 10 Tips for Java EE 7 with PrimeFacesJavaOne - 10 Tips for Java EE 7 with PrimeFaces
JavaOne - 10 Tips for Java EE 7 with PrimeFaces
 
EJB and CDI - Alignment and Strategy
EJB and CDI - Alignment and StrategyEJB and CDI - Alignment and Strategy
EJB and CDI - Alignment and Strategy
 
Enterprise Java Web Application Frameworks Sample Stack Implementation
Enterprise Java Web Application Frameworks   Sample Stack ImplementationEnterprise Java Web Application Frameworks   Sample Stack Implementation
Enterprise Java Web Application Frameworks Sample Stack Implementation
 
MVC 1.0 / JSR 371
MVC 1.0 / JSR 371MVC 1.0 / JSR 371
MVC 1.0 / JSR 371
 
2015 JavaOne EJB/CDI Alignment
2015 JavaOne EJB/CDI Alignment2015 JavaOne EJB/CDI Alignment
2015 JavaOne EJB/CDI Alignment
 
jDays2015 - JavaEE vs. Spring Smackdown
jDays2015 - JavaEE vs. Spring SmackdownjDays2015 - JavaEE vs. Spring Smackdown
jDays2015 - JavaEE vs. Spring Smackdown
 
Ankara JUG Ağustos 2013 - Oracle ADF
Ankara JUG Ağustos 2013 - Oracle ADFAnkara JUG Ağustos 2013 - Oracle ADF
Ankara JUG Ağustos 2013 - Oracle ADF
 
HTTP/2 comes to Java. What Servlet 4.0 means to you. DevNexus 2015
HTTP/2 comes to Java.  What Servlet 4.0 means to you. DevNexus 2015HTTP/2 comes to Java.  What Servlet 4.0 means to you. DevNexus 2015
HTTP/2 comes to Java. What Servlet 4.0 means to you. DevNexus 2015
 
Adopt-a-JSR for JSON Processing 1.1, JSR 374
Adopt-a-JSR for JSON Processing 1.1, JSR 374Adopt-a-JSR for JSON Processing 1.1, JSR 374
Adopt-a-JSR for JSON Processing 1.1, JSR 374
 
JavaCro'15 - HTTP2 Comes to Java! - David Delabassee
JavaCro'15 - HTTP2 Comes to Java! - David DelabasseeJavaCro'15 - HTTP2 Comes to Java! - David Delabassee
JavaCro'15 - HTTP2 Comes to Java! - David Delabassee
 

Andere mochten auch

Useful Design Patterns for Enterprise Applications with Java
Useful Design Patterns for Enterprise Applications with JavaUseful Design Patterns for Enterprise Applications with Java
Useful Design Patterns for Enterprise Applications with JavaPT.JUG
 
Microservices
MicroservicesMicroservices
MicroservicesPT.JUG
 
Putting Hypermedia Back in REST with JAX-RS
Putting Hypermedia Back in REST with JAX-RSPutting Hypermedia Back in REST with JAX-RS
Putting Hypermedia Back in REST with JAX-RSPT.JUG
 
Flame Graphs, uma (boa) alternativa para profiling de apps Java
Flame Graphs, uma (boa) alternativa para profiling de apps JavaFlame Graphs, uma (boa) alternativa para profiling de apps Java
Flame Graphs, uma (boa) alternativa para profiling de apps JavaPT.JUG
 
50 new features of Java EE 7 in 50 minutes
50 new features of Java EE 7 in 50 minutes50 new features of Java EE 7 in 50 minutes
50 new features of Java EE 7 in 50 minutesAntonio Goncalves
 
Java EE 7 Batch processing in the Real World
Java EE 7 Batch processing in the Real WorldJava EE 7 Batch processing in the Real World
Java EE 7 Batch processing in the Real WorldRoberto Cortez
 
metrics - performance monitoring or business value optimization?
metrics - performance monitoring or business value optimization?metrics - performance monitoring or business value optimization?
metrics - performance monitoring or business value optimization?João Nelas
 
JBoss Brings More Power to your Business Processes (PTJUG)
JBoss Brings More Power to your Business Processes (PTJUG)JBoss Brings More Power to your Business Processes (PTJUG)
JBoss Brings More Power to your Business Processes (PTJUG)Eric D. Schabell
 
Apache Camel
Apache CamelApache Camel
Apache CamelPT.JUG
 
JMockit & Hamcrest
JMockit & HamcrestJMockit & Hamcrest
JMockit & HamcrestPT.JUG
 
An OpenShift Primer for Developers to get your Code into the Cloud (PTJUG)
An OpenShift Primer for Developers to get your Code into the Cloud (PTJUG)An OpenShift Primer for Developers to get your Code into the Cloud (PTJUG)
An OpenShift Primer for Developers to get your Code into the Cloud (PTJUG)Eric D. Schabell
 
Introducing Infinispan
Introducing InfinispanIntroducing Infinispan
Introducing InfinispanPT.JUG
 
Using JPA applications in the era of NoSQL: Introducing Hibernate OGM
Using JPA applications in the era of NoSQL: Introducing Hibernate OGMUsing JPA applications in the era of NoSQL: Introducing Hibernate OGM
Using JPA applications in the era of NoSQL: Introducing Hibernate OGMPT.JUG
 

Andere mochten auch (16)

CDI: How do I ?
CDI: How do I ?CDI: How do I ?
CDI: How do I ?
 
Useful Design Patterns for Enterprise Applications with Java
Useful Design Patterns for Enterprise Applications with JavaUseful Design Patterns for Enterprise Applications with Java
Useful Design Patterns for Enterprise Applications with Java
 
Microservices
MicroservicesMicroservices
Microservices
 
Putting Hypermedia Back in REST with JAX-RS
Putting Hypermedia Back in REST with JAX-RSPutting Hypermedia Back in REST with JAX-RS
Putting Hypermedia Back in REST with JAX-RS
 
Just enough app server
Just enough app serverJust enough app server
Just enough app server
 
Flame Graphs, uma (boa) alternativa para profiling de apps Java
Flame Graphs, uma (boa) alternativa para profiling de apps JavaFlame Graphs, uma (boa) alternativa para profiling de apps Java
Flame Graphs, uma (boa) alternativa para profiling de apps Java
 
50 new features of Java EE 7 in 50 minutes
50 new features of Java EE 7 in 50 minutes50 new features of Java EE 7 in 50 minutes
50 new features of Java EE 7 in 50 minutes
 
Java EE 7 Batch processing in the Real World
Java EE 7 Batch processing in the Real WorldJava EE 7 Batch processing in the Real World
Java EE 7 Batch processing in the Real World
 
metrics - performance monitoring or business value optimization?
metrics - performance monitoring or business value optimization?metrics - performance monitoring or business value optimization?
metrics - performance monitoring or business value optimization?
 
JBoss Brings More Power to your Business Processes (PTJUG)
JBoss Brings More Power to your Business Processes (PTJUG)JBoss Brings More Power to your Business Processes (PTJUG)
JBoss Brings More Power to your Business Processes (PTJUG)
 
MySQL
MySQLMySQL
MySQL
 
Apache Camel
Apache CamelApache Camel
Apache Camel
 
JMockit & Hamcrest
JMockit & HamcrestJMockit & Hamcrest
JMockit & Hamcrest
 
An OpenShift Primer for Developers to get your Code into the Cloud (PTJUG)
An OpenShift Primer for Developers to get your Code into the Cloud (PTJUG)An OpenShift Primer for Developers to get your Code into the Cloud (PTJUG)
An OpenShift Primer for Developers to get your Code into the Cloud (PTJUG)
 
Introducing Infinispan
Introducing InfinispanIntroducing Infinispan
Introducing Infinispan
 
Using JPA applications in the era of NoSQL: Introducing Hibernate OGM
Using JPA applications in the era of NoSQL: Introducing Hibernate OGMUsing JPA applications in the era of NoSQL: Introducing Hibernate OGM
Using JPA applications in the era of NoSQL: Introducing Hibernate OGM
 

Ähnlich wie What's Coming in Java EE 8

What's coming in Java EE 8
What's coming in Java EE 8What's coming in Java EE 8
What's coming in Java EE 8David Delabassee
 
Java EE 8 - An instant snapshot
Java EE 8 - An instant snapshotJava EE 8 - An instant snapshot
Java EE 8 - An instant snapshotDavid Delabassee
 
Java EE 8 Adopt a JSR : JSON-P 1.1 & MVC 1.0
Java EE 8 Adopt a JSR : JSON-P 1.1 & MVC 1.0Java EE 8 Adopt a JSR : JSON-P 1.1 & MVC 1.0
Java EE 8 Adopt a JSR : JSON-P 1.1 & MVC 1.0David Delabassee
 
Java EE 8 - What’s new on the Web front
Java EE 8 - What’s new on the Web frontJava EE 8 - What’s new on the Web front
Java EE 8 - What’s new on the Web frontDavid Delabassee
 
Presente e Futuro: Java EE.next()
Presente e Futuro: Java EE.next()Presente e Futuro: Java EE.next()
Presente e Futuro: Java EE.next()Bruno Borges
 
112815 java ee8_davidd
112815 java ee8_davidd112815 java ee8_davidd
112815 java ee8_daviddTakashi Ito
 
Java API for JSON Binding - Introduction and update
Java API for JSON Binding - Introduction and updateJava API for JSON Binding - Introduction and update
Java API for JSON Binding - Introduction and updateMartin Grebac
 
JavaOne2015フィードバック @ 富山合同勉強会
JavaOne2015フィードバック @ 富山合同勉強会JavaOne2015フィードバック @ 富山合同勉強会
JavaOne2015フィードバック @ 富山合同勉強会Takashi Ito
 
What’s new in JSR 367 Java API for JSON Binding
What’s new in JSR 367 Java API for JSON BindingWhat’s new in JSR 367 Java API for JSON Binding
What’s new in JSR 367 Java API for JSON BindingDmitry Kornilov
 
What's new in the Java API for JSON Binding
What's new in the Java API for JSON BindingWhat's new in the Java API for JSON Binding
What's new in the Java API for JSON BindingDmitry Kornilov
 
20160123 java one2015_feedback @ Osaka
20160123 java one2015_feedback @ Osaka20160123 java one2015_feedback @ Osaka
20160123 java one2015_feedback @ OsakaTakashi Ito
 
Java EE 8 Overview (Japanese)
Java EE 8 Overview (Japanese)Java EE 8 Overview (Japanese)
Java EE 8 Overview (Japanese)Logico
 
Pushing JavaEE outside of the enterprise: Home Automation & IoT - David Delab...
Pushing JavaEE outside of the enterprise: Home Automation & IoT - David Delab...Pushing JavaEE outside of the enterprise: Home Automation & IoT - David Delab...
Pushing JavaEE outside of the enterprise: Home Automation & IoT - David Delab...Codemotion Tel Aviv
 
Enterprise java unit-1_chapter-1
Enterprise java unit-1_chapter-1Enterprise java unit-1_chapter-1
Enterprise java unit-1_chapter-1sandeep54552
 
The State of Java under Oracle at JCertif 2011
The State of Java under Oracle at JCertif 2011The State of Java under Oracle at JCertif 2011
The State of Java under Oracle at JCertif 2011Arun Gupta
 
Java EE7 in action
Java EE7 in actionJava EE7 in action
Java EE7 in actionAnkara JUG
 
RESTful Services and Distributed OSGi - 04/2009
RESTful Services and Distributed OSGi - 04/2009RESTful Services and Distributed OSGi - 04/2009
RESTful Services and Distributed OSGi - 04/2009Roland Tritsch
 
Have You Seen Java EE Lately?
Have You Seen Java EE Lately?Have You Seen Java EE Lately?
Have You Seen Java EE Lately?Reza Rahman
 

Ähnlich wie What's Coming in Java EE 8 (20)

What's coming in Java EE 8
What's coming in Java EE 8What's coming in Java EE 8
What's coming in Java EE 8
 
Java EE 8 - An instant snapshot
Java EE 8 - An instant snapshotJava EE 8 - An instant snapshot
Java EE 8 - An instant snapshot
 
Java EE 8 Adopt a JSR : JSON-P 1.1 & MVC 1.0
Java EE 8 Adopt a JSR : JSON-P 1.1 & MVC 1.0Java EE 8 Adopt a JSR : JSON-P 1.1 & MVC 1.0
Java EE 8 Adopt a JSR : JSON-P 1.1 & MVC 1.0
 
Java EE 8 - What’s new on the Web front
Java EE 8 - What’s new on the Web frontJava EE 8 - What’s new on the Web front
Java EE 8 - What’s new on the Web front
 
Presente e Futuro: Java EE.next()
Presente e Futuro: Java EE.next()Presente e Futuro: Java EE.next()
Presente e Futuro: Java EE.next()
 
112815 java ee8_davidd
112815 java ee8_davidd112815 java ee8_davidd
112815 java ee8_davidd
 
Java API for JSON Binding - Introduction and update
Java API for JSON Binding - Introduction and updateJava API for JSON Binding - Introduction and update
Java API for JSON Binding - Introduction and update
 
JavaOne2015フィードバック @ 富山合同勉強会
JavaOne2015フィードバック @ 富山合同勉強会JavaOne2015フィードバック @ 富山合同勉強会
JavaOne2015フィードバック @ 富山合同勉強会
 
Java EE for the Cloud
Java EE for the CloudJava EE for the Cloud
Java EE for the Cloud
 
JSON-B for CZJUG
JSON-B for CZJUGJSON-B for CZJUG
JSON-B for CZJUG
 
What’s new in JSR 367 Java API for JSON Binding
What’s new in JSR 367 Java API for JSON BindingWhat’s new in JSR 367 Java API for JSON Binding
What’s new in JSR 367 Java API for JSON Binding
 
What's new in the Java API for JSON Binding
What's new in the Java API for JSON BindingWhat's new in the Java API for JSON Binding
What's new in the Java API for JSON Binding
 
20160123 java one2015_feedback @ Osaka
20160123 java one2015_feedback @ Osaka20160123 java one2015_feedback @ Osaka
20160123 java one2015_feedback @ Osaka
 
Java EE 8 Overview (Japanese)
Java EE 8 Overview (Japanese)Java EE 8 Overview (Japanese)
Java EE 8 Overview (Japanese)
 
Pushing JavaEE outside of the enterprise: Home Automation & IoT - David Delab...
Pushing JavaEE outside of the enterprise: Home Automation & IoT - David Delab...Pushing JavaEE outside of the enterprise: Home Automation & IoT - David Delab...
Pushing JavaEE outside of the enterprise: Home Automation & IoT - David Delab...
 
Enterprise java unit-1_chapter-1
Enterprise java unit-1_chapter-1Enterprise java unit-1_chapter-1
Enterprise java unit-1_chapter-1
 
The State of Java under Oracle at JCertif 2011
The State of Java under Oracle at JCertif 2011The State of Java under Oracle at JCertif 2011
The State of Java under Oracle at JCertif 2011
 
Java EE7 in action
Java EE7 in actionJava EE7 in action
Java EE7 in action
 
RESTful Services and Distributed OSGi - 04/2009
RESTful Services and Distributed OSGi - 04/2009RESTful Services and Distributed OSGi - 04/2009
RESTful Services and Distributed OSGi - 04/2009
 
Have You Seen Java EE Lately?
Have You Seen Java EE Lately?Have You Seen Java EE Lately?
Have You Seen Java EE Lately?
 

Mehr von PT.JUG

Overview of Eclipse technologies
Overview of Eclipse technologiesOverview of Eclipse technologies
Overview of Eclipse technologiesPT.JUG
 
To SOA or not to SOA
To SOA or not to SOATo SOA or not to SOA
To SOA or not to SOAPT.JUG
 
Introduction to Grails Framework
Introduction to Grails FrameworkIntroduction to Grails Framework
Introduction to Grails FrameworkPT.JUG
 
Apresentação LifeRay
Apresentação LifeRayApresentação LifeRay
Apresentação LifeRayPT.JUG
 
Oracle Java Strategy Lg V3
Oracle Java Strategy Lg V3Oracle Java Strategy Lg V3
Oracle Java Strategy Lg V3PT.JUG
 
Scripting na JVM
Scripting na JVMScripting na JVM
Scripting na JVMPT.JUG
 
The tale of the Fénix architecture
The tale of the Fénix architectureThe tale of the Fénix architecture
The tale of the Fénix architecturePT.JUG
 
Lightweight Grids With Terracotta
Lightweight Grids With TerracottaLightweight Grids With Terracotta
Lightweight Grids With TerracottaPT.JUG
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web ToolkitPT.JUG
 
Developers Java: O que as empresas dizem que precisam mesmo mesmo
Developers Java: O que as empresas dizem que precisam mesmo mesmoDevelopers Java: O que as empresas dizem que precisam mesmo mesmo
Developers Java: O que as empresas dizem que precisam mesmo mesmoPT.JUG
 

Mehr von PT.JUG (10)

Overview of Eclipse technologies
Overview of Eclipse technologiesOverview of Eclipse technologies
Overview of Eclipse technologies
 
To SOA or not to SOA
To SOA or not to SOATo SOA or not to SOA
To SOA or not to SOA
 
Introduction to Grails Framework
Introduction to Grails FrameworkIntroduction to Grails Framework
Introduction to Grails Framework
 
Apresentação LifeRay
Apresentação LifeRayApresentação LifeRay
Apresentação LifeRay
 
Oracle Java Strategy Lg V3
Oracle Java Strategy Lg V3Oracle Java Strategy Lg V3
Oracle Java Strategy Lg V3
 
Scripting na JVM
Scripting na JVMScripting na JVM
Scripting na JVM
 
The tale of the Fénix architecture
The tale of the Fénix architectureThe tale of the Fénix architecture
The tale of the Fénix architecture
 
Lightweight Grids With Terracotta
Lightweight Grids With TerracottaLightweight Grids With Terracotta
Lightweight Grids With Terracotta
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkit
 
Developers Java: O que as empresas dizem que precisam mesmo mesmo
Developers Java: O que as empresas dizem que precisam mesmo mesmoDevelopers Java: O que as empresas dizem que precisam mesmo mesmo
Developers Java: O que as empresas dizem que precisam mesmo mesmo
 

Kürzlich hochgeladen

Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Kaya Weers
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integrationmarketing932765
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observabilityitnewsafrica
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Nikki Chapple
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 

Kürzlich hochgeladen (20)

Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 

What's Coming in Java EE 8

  • 1. PT.JUG  -­‐  Lisbon  June  2015     David  Delabassee  -­‐  @delabassee   Oracle   Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.     What's  Coming  in  Java  EE  8 1
  • 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? 1 2 3 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.  
  • 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
  • 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
  • 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 7 http://glassfish.org/survey
  • 8. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.                                  You  asked  for  it,  you  got  it! 8 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 Which  of  these  APIs  do  you  think  is  important  to  be  included  in  Java  EE  8?   Java  API  for  JSON  Binding 12
  • 13. 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 13
  • 14. 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 14
  • 15. 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);   JsonParser  parser  =  marshaller.marshal(duke);   marshaller.marshal(duke,  new  FileWriter("mascot.json"));      {          "name":"Duke",          "gender":"M",          "phones":{                "home":"650-­‐123-­‐4567",                "mobile":"650-­‐234-­‐5678"}      }   15
  • 16. 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-­‐B Data   Source JSON JAX-­‐RS Java  Objects 16 JSR  367
  • 17. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   JSON-­‐P  1.1 Java  API  for  JSON  Processing 17 • Keep  JSON-­‐P  spec  up-­‐to-­‐date   • Track  new  standards   • Add  editing  operations  to  JsonObject  and  JsonArray   • Java  SE  8   • JSON  Big  Data
  • 18. 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 18
  • 19. 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"}}   ]       19
  • 20. 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 20  JsonPointer  pointer  =  new  JsonPointer("/0/name");    JsonArray  result  =  pointer.replace(contacts,  Json.createValue("Alex"));
  • 21. 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 21 [        {"op":"replace","path":"/0/phones/mobile","value":"650-­‐111-­‐222"},        {"op":"remove","path":"/1"}   ]
  • 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-­‐234-­‐5678"}},      {          "name":"Jane",          "gender":"F",          "phones":{                "mobile":"707-­‐555-­‐9999"}}   ]       22
  • 23. 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"}}   ]       23
  • 24. 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"}}   ]       24
  • 25. 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 25  JsonPatchBuilder  builder  =  new  JsonPatchBuilder();    JsonArray  result  =  builder.add("/Joe/phones/office",  "1234-­‐567")                                                        .remove("/Amy/age")                                                        .apply(contacts);
  • 26. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   JSON-­‐P  1.1 {            "title":  "Hello!",            "phoneNumber":  "+01-­‐123-­‐456-­‐7890",            "author":  {                          "familyName":  null              },              "tags":  [  "example"  ]    }   26 {          "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
  • 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 27 JsonValue  output  =  JsonMergePatch.diff(original,  target);   JsonArray  diff  =  JsonPatch.diff(original,  target);
  • 28. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   JSON-­‐P  1.1 JSON  Query  using  Lambda  Operations JsonArray  cars  =  ...;   List<String>  audis  =  cars.getValuesAs(JsonObject.class).stream()                                                    .filter(x-­‐>"Audi".equals(x.getString("brand")))                                                    .map(x-­‐>(x.getString("serial"))                                                    .collect(Collectors.toList()); 28
  • 29. 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()); 29
  • 30. 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 30 JSR  374
  • 31. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   Server-­‐sent  Events Should  we  also  standardize  a  Java  API  for  server-­‐sent  events?   31
  • 32. 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 32
  • 33. 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 33
  • 34. 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 34
  • 35. 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)  {  …  } } } 35 Server-­‐sent  Events
  • 36. 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 36 Server-­‐sent  Events
  • 37. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   Model  View  Controller  1.0    (MVC) Should  Java  EE  provide  support  for  MVC  alongside  JSF?     Is  there  any  one  de-­‐facto  standard  technology  in  this  space  to  which  we   should  look  for  inspiration? 37
  • 38. 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   38 Action-­‐based  Model-­‐View-­‐Controller  architecture
  • 39. 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? 39 Glues  together  key  Java  EE  technologies
  • 40. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. Controller @Path("hello") @Controller public class HelloController { @GET @View("view1.xhtml") public void hello() { … } } 40
  • 41. 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"; } } 41
  • 42. 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; } } 42
  • 43. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. View <?xml version='1.0' encoding='UTF-8' ?> <!DOCTYPE html PUBLIC …> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://xmlns.jcp.org/jsf/html"> <h:head> <title>Facelet!</title> </h:head> <h:body> <p>${greeting.message} to BCN</p> </h:body> </html> 43
  • 44. 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> 44
  • 45. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. View <html> <head> <title>FreeMarker</title> </head> <body> <p>Hello ${user}</p> </body> </html> 45
  • 46. 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 46            Early  Draft  Review
  • 47. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   HTTP  1.1  circa  1999 47 • 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
  • 48. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   HTTP/2 • “HTTP/2  is  nearly  done  standardization”   – 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 48
  • 49. 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 49 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
  • 50. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   HTTP/2 Server  Push /index.html  :  stream  1   /style.css  :  stream  2   /script.js  :  stream  4 Client Server stream  1   HEADERS stream  1   FRAME  x stream  2   PROMISE stream  4   PROMISE 50
  • 51. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   HTTP/2 Header  Compression 51
  • 52. 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 52
  • 53. 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 53
  • 54. 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   • … 54
  • 55. 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 55
  • 56. 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 56
  • 57. 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 57
  • 58. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   • Java  SE  support   • Modularity   • Enhanced  Events   • Misc.   – AOP   – SPI   – Interceptors  and  Decorators  enhancements   – Cleaning   58 CDI  2.0
  • 59. 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 59 Modularity
  • 60. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   60 public  class  ProducerClass  {     @Inject  Event<SomeEvent>  someEvent;     public  void  someMethod(...)  {       ...       someEvent.fire(...);     }   } CDI  2.0 Asynchronous  Events public  class  AnotherClass  {              public  void  someObserver(@Observes  SomeEvent  someEvent)  {        ...              }   } public  class  AsynchProducerClass  {                    @Inject  Event<Payload>  someEvent;            public  void  anotherMethod()  {        CompletionStage<…>  completionStage  someEvent.fireAsync(...);            }   }
  • 61. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   61 CDI  2.0 Events  Ordering public  void  importantObserver(@Observes  @Priority(1)  MyEvent  evt)   {   ...   }   public  void  anotherObserver(@Observes  @Priority(10)  MyEvent  evt)   {   ...   }
  • 62. 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 62
  • 63. 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 63
  • 64. 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 64
  • 65. 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 65
  • 66. 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 66
  • 67. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   Java  EE  Security  1.0 User  Management • Allow  application  to  manage  its  own  users  and    groups   – Without  need  to  access  server  configuration   • Users  stored  in  application-­‐specified  repository  (e.g.  LDAP)   • User  service  manipulates  users  from  user  source     LDAPUserInfo UserService UserSource   Definition 67
  • 68. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   Java  EE  Security  1.0 User  Management @LdapUserSourceDefinition(      name="java:app/ldapUserSource",      ldapUrl="ldap://someURL",      ldapUser="ElDap",      ldapPassword="${ALIAS=LdapPW}",      ...   )   public  class  MyAuthenticator  {      @Resource(lookup="java:app/ldapUserSource")      private  UserService  userService;      private  boolean  isAccountEnabled(String  username)  {          return  userService.loadUserByUsername(username).isEnabled();      }      ...   } 68
  • 69. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   Java  EE  Security  1.0 Password  Aliasing • Standardized  syntax  for  password  aliases             • Standardized  ‘secure  credentials  archive’   – Co-­‐bundle  alias  and  password  with  App     – Used  by  platform  as  credential  store  for  resolving  alias 69 @DataSourceDefinition(          name="java:app/MyDataSource",          className="com.example.MyDataSource",  …        user="duke",          password="${ALIAS=dukePassword}")
  • 70. 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   70
  • 71. 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 71
  • 72. 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….. 72
  • 73. 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   • … 73
  • 74. 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! 74
  • 75. 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 75
  • 76. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   GlassFish http://glassfish.org Java  EE  Reference  Implementation 76
  • 77. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   Obrigado! 77
  • 78. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.