SlideShare a Scribd company logo
1 of 71
Download to read offline
What’s	
  coming	
  in	
  Java	
  EE	
  8
David	
  Delabassee	
  -­‐	
  @delabassee	
  
Software	
  Evangelist	
  
Java	
  EE	
  Org.	
  -­‐	
  Oracle	
  
June	
  2015
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
Agenda
How	
  did	
  we	
  get	
  here?	
  
What	
  do	
  we	
  want	
  to	
  do?	
  
How	
  can	
  you	
  get	
  involved?
Preview	
  of	
  Java	
  EE	
  8
Safe	
  Harbor	
  Statement
The	
  following	
  is	
  intended	
  to	
  outline	
  our	
  general	
  product	
  direction.	
  It	
  is	
  intended	
  for	
  
information	
  purposes	
  only,	
  and	
  may	
  not	
  be	
  incorporated	
  into	
  any	
  contract.	
  It	
  is	
  not	
  a	
  
commitment	
  to	
  deliver	
  any	
  material,	
  code,	
  or	
  functionality,	
  and	
  should	
  not	
  be	
  relied	
  upon	
  
in	
  making	
  purchasing	
  decisions.	
  The	
  development,	
  release,	
  and	
  timing	
  of	
  any	
  features	
  or	
  
functionality	
  described	
  for	
  Oracle’s	
  products	
  remains	
  at	
  the	
  sole	
  discretion	
  of	
  Oracle.
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
   3
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
Java	
  EE	
  7
ENTERPRISE
EDITION
‣ Batch
‣ Concurrency
‣ Simplified JMS
‣ More annotated POJOs
‣ Less boilerplate code
‣ Cohesive integrated platform
DEVELOPER
PRODUCTIVITY
‣ WebSockets
‣ JSON
‣ Servlet 3.1 NIO
‣ REST
MEETING 

ENTERPRISE
DEMANDS
Java EE 7
4
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
Industry	
  Trends	
  We're	
  Seeing
Cloud
Mobile
HTTP/2
SECURITY
Reactive	
  Programming
User	
  Experience
5
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
http://glassfish.org/survey
7
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  You	
  asked	
  for	
  it,	
  you	
  got	
  it!
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
• API	
  to	
  marshal/unmarshal	
  Java	
  objects	
  to/from	
  JSON	
  
– Similar	
  to	
  JAXB	
  runtime	
  API	
  in	
  XML	
  world	
  
• Default	
  mapping	
  of	
  classes	
  to	
  JSON	
  
– Annotations	
  to	
  customize	
  the	
  default	
  mappings	
  
– JsonProperty,	
  JsonTransient,	
  JsonNillable,	
  JsonValue,	
  …
Java	
  API	
  for	
  JSON	
  Binding
12
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
JSON-­‐B
• Draw	
  from	
  best	
  practices	
  of	
  existing	
  JSON	
  binding	
  implementations	
  
– Jackson,	
  Genson,	
  EclipseLink	
  MOXy,	
  Fleece,	
  JSON-­‐lib,	
  Gson,	
  Flexjson,	
  Json-­‐io,	
  
JSONiJ,	
  Johnzon,	
  Xstream,	
  etc.	
  
• Switch	
  JSON	
  binding	
  providers	
  
• Implementations	
  compete	
  on	
  common	
  ground
Standard	
  API
13
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
JSON-­‐B
// from default JsonbBuilder instance of the default JsonbProvider
Jsonb jsonb = JsonbBuilder.create();
JsonbProvider myProvider =
JsonbProvider.provider("foo.bar.ProviderImpl");
Jsonb jsonb = JsonbBuilder.newBuilder(myProvider);
// UnMarshall
Book book = jsonb.fromJson(new File("myBook.json"), Book.class);
// Marshall
jsonb.toJson(myObject, new File(“foo.json”));
jsonb.toJson(myObject, new PrintWriter(System.out));
14
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
JSON-­‐P	
  1.1
Java	
  API	
  for	
  JSON	
  Processing
• Keep	
  JSON-­‐P	
  spec	
  up-­‐to-­‐date	
  
• Track	
  new	
  standards	
  
• Add	
  editing	
  operations	
  to	
  JsonObject	
  and	
  JsonArray	
  
• Java	
  SE	
  8	
  
• JSON	
  Big	
  Data
15
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
JSON-­‐P	
  1.1
• String	
  syntax	
  for	
  referencing	
  a	
  JSON	
  value	
  
	
   "/0/phone/mobile"
JSON-­‐Pointer	
  –	
  IETF	
  RFC	
  6901
16
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
JSON-­‐P	
  1.1
JsonArray	
  contacts	
  =	
  …	
  
JsonPointer	
  pointer	
  =	
  new	
  JsonPointer("/0/name");	
  
JsonValue	
  value	
  =	
  pointer.getValue(contacts);	
  
[	
  
	
  {	
  
	
  	
  	
  	
  "name":"Duke",	
  
	
  	
  	
  	
  "gender":"M",	
  
	
  	
  	
  	
  "phones":{	
  
	
  	
  	
  	
  	
  	
  	
  "home":"650-­‐123-­‐4567",	
  
	
  	
  	
  	
  	
  	
  	
  "mobile":"650-­‐234-­‐5678"}},	
  
	
  	
  {	
  
	
  	
  	
  	
  "name":"Jane",	
  
	
  	
  	
  	
  "gender":"F",	
  
	
  	
  	
  	
  "phones":{	
  
	
  	
  	
  	
  	
  	
  	
  "mobile":"707-­‐555-­‐9999"}}	
  
]	
  
	
  	
  
17
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
JSON-­‐P	
  1.1
• String	
  syntax	
  for	
  referencing	
  a	
  JSON	
  value	
  
	
   “/0/name"	
  
• Methods	
  
– getValue()	
  
– JSON	
  operations:	
  add(),	
  replace(),	
  remove()
JSON-­‐Pointer	
  –	
  IETF	
  RFC	
  6901
	
  JsonPointer	
  pointer	
  =	
  new	
  JsonPointer("/0/name");	
  
	
  JsonArray	
  result	
  =	
  pointer.replace(contacts,	
  Json.createValue("Alex"));
18
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
JSON-­‐P	
  1.1
• Patch	
  is	
  a	
  JSON	
  document	
  
– Array	
  of	
  objects	
  /	
  operations	
  for	
  modifying	
  a	
  JSON	
  document	
  
– add,	
  replace,	
  remove,	
  move,	
  copy,	
  test
JSON-­‐Patch	
  –	
  IETF	
  RFC	
  6902
[	
  
	
  	
  	
  {"op":"replace","path":"/0/phones/mobile","value":"650-­‐111-­‐222"},	
  
	
  	
  	
  {"op":"remove","path":"/1"}	
  
]
19
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
JSON-­‐P	
  1.1
[	
  
	
  {	
  
	
  	
  "op":"replace",	
  
	
  	
  "path":"/0/phones/mobile",	
  
	
  	
  "value":"650-­‐111-­‐2222"},	
  
	
  {	
  
	
  	
  "op":"remove",	
  
	
  	
  "path":"/1"}	
  
]
[	
  
	
  {	
  
	
  	
  	
  	
  "name":"Duke",	
  
	
  	
  	
  	
  "gender":"M",	
  
	
  	
  	
  	
  "phones":{	
  
	
  	
  	
  	
  	
  	
  	
  "home":"650-­‐123-­‐4567",	
  
	
  	
  	
  	
  	
  	
  	
  "mobile":"650-­‐234-­‐5678"}},	
  
	
  	
  {	
  
	
  	
  	
  	
  "name":"Jane",	
  
	
  	
  	
  	
  "gender":"F",	
  
	
  	
  	
  	
  "phones":{	
  
	
  	
  	
  	
  	
  	
  	
  "mobile":"707-­‐555-­‐9999"}}	
  
]	
  
	
  	
  
20
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
JSON-­‐P	
  1.1
[	
  
	
  {	
  
	
  	
  "op":"replace",	
  
	
  	
  "path":"/0/phones/mobile",	
  
	
  	
  "value":"650-­‐111-­‐2222"},	
  
	
  {	
  
	
  	
  "op":"remove",	
  
	
  	
  "path":"/1"}	
  
]
[	
  
	
  {	
  
	
  	
  	
  	
  "name":"Duke",	
  
	
  	
  	
  	
  "gender":"M",	
  
	
  	
  	
  	
  "phones":{	
  
	
  	
  	
  	
  	
  	
  	
  "home":"650-­‐123-­‐4567",	
  
	
  	
  	
  	
  	
  	
  	
  "mobile":"650-­‐111-­‐2222"}},	
  
	
  	
  {	
  
	
  	
  	
  	
  "name":"Jane",	
  
	
  	
  	
  	
  "gender":"F",	
  
	
  	
  	
  	
  "phones":{	
  
	
  	
  	
  	
  	
  	
  	
  "mobile":"707-­‐555-­‐9999"}}	
  
]	
  
	
  	
  
21
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
JSON-­‐P	
  1.1
[	
  
	
  {	
  
	
  	
  "op":"replace",	
  
	
  	
  "path":"/0/phones/mobile",	
  
	
  	
  "value":"650-­‐111-­‐2222"},	
  
	
  {	
  
	
  	
  "op":"remove",	
  
	
  	
  "path":"/1"}	
  
]
[	
  
	
  {	
  
	
  	
  	
  	
  "name":"Duke",	
  
	
  	
  	
  	
  "gender":"M",	
  
	
  	
  	
  	
  "phones":{	
  
	
  	
  	
  	
  	
  	
  	
  "home":"650-­‐123-­‐4567",	
  
	
  	
  	
  	
  	
  	
  	
  "mobile":"650-­‐111-­‐2222"}}	
  
]	
  
	
  	
  
22
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
	
  JsonArray	
  target	
  =	
  …;	
  
	
  JsonArray	
  patch	
  =	
  …;	
  
	
  	
  
	
  JsonPatch	
  jsonPatch	
  =	
  new	
  JsonPatch(patch);	
  
	
  JsonArray	
  result	
  =	
  jsonPatch.apply(target);
JSON-­‐P	
  1.1
	
  JsonPatchBuilder	
  builder	
  =	
  new	
  JsonPatchBuilder();	
  
	
  JsonArray	
  result	
  =	
  builder.add("/Joe/phones/office",	
  "1234-­‐567")	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  .remove("/Amy/age")	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  .apply(contacts);
23
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
JSON-­‐P	
  1.1
JSON-­‐Merge	
  Patch	
  –	
  IETF	
  RFC	
  7386
Orignal	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  Patch	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  Result	
  
{"a":"b"}	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  {"a":"c"}	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  {"a":"c"}	
  
{"a":"b"}	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  {"b":"c"}	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  {"a":"b",	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "b":"c"}	
  
{"a":"b"}	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  {"a":null}	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  {	
  }	
  
{"a":"b",	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  {"a":null}	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  {"b":"c"}	
  
	
  "b":"c"}	
  
{	
  }	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  {"a":	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  {"a":	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  {"bb":	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  {"bb":	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  {"ccc":	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  {}}}	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  null}}}	
  
24
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
JSON-­‐P	
  1.1
{	
  
	
  	
  	
  	
  	
  "title":	
  "Hello!",	
  
	
  	
  	
  	
  	
  "author":	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "familyName":	
  null	
  
	
  	
  	
  	
  	
  	
  },	
  
	
  	
  	
  	
  	
  	
  "tags":	
  [	
  "example"	
  ],	
  
	
  	
  	
  	
  	
  	
  "phoneNumber":	
  "+01-­‐123-­‐456-­‐7890"	
  
	
  }	
  
{	
  
	
  	
  	
  	
  "title":	
  "Goodbye!",	
  
	
  	
  	
  	
  "author":	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  "givenName":	
  "John",	
  
	
  	
  	
  	
  	
  	
  	
  	
  "familyName":	
  "Doe"	
  
	
  	
  	
  	
  	
  },	
  
	
  	
  	
  	
  	
  "tags":	
  [	
  "example",	
  "sample"	
  ],	
  
	
  	
  	
  	
  	
  "content":	
  "This	
  will	
  be	
  unchanged"	
  
	
  }	
  
	
  	
  
{	
  
	
  	
  	
  	
  	
  "title":	
  "Hello!",	
  
	
  	
  	
  	
  	
  "author":	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "givenName":	
  "John"	
  
	
  	
  	
  	
  	
  	
  },	
  
	
  	
  	
  	
  	
  	
  "tags":	
  [	
  "example"	
  ],	
  
	
  	
  	
  	
  	
  	
  "content":	
  "This	
  will	
  be	
  unchanged",	
  
	
  	
  	
  	
  	
  	
  "phoneNumber":	
  "+01-­‐123-­‐456-­‐7890"	
  
	
  }	
  
	
  	
  
JSON-­‐Merge	
  Patch	
  –	
  IETF	
  RFC	
  7386
25
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
	
  JsonObject	
  contact	
  =	
  …;	
  //	
  The	
  target	
  to	
  be	
  patched	
  
	
  JsonObject	
  patch	
  =	
  …;	
  
	
  	
  
	
  JsonValue	
  output	
  =	
  JsonMergePatch.mergePatch(target,	
  patch);
JSON-­‐P	
  1.1
JSON-­‐Merge	
  Patch	
  –	
  IETF	
  RFC	
  7386
26
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
JSON-­‐P	
  1.1
• Reverse	
  operation	
  
– Given	
  two	
  objects	
  returns	
  the	
  patch	
  to	
  apply	
  (diff)	
  
JSON-­‐Patch	
  &	
  JSON-­‐Merge	
  Patch	
  Diff
JsonValue	
  output	
  =	
  JsonMergePatch.diff(original,	
  target);	
  
JsonArray	
  diff	
  =	
  JsonPatch.diff(original,	
  target);
27
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
JSON-­‐P	
  1.1
JSON	
  Query	
  collecting	
  results	
  in	
  JsonArray
JsonArray	
  cars	
  =	
  ...;	
  
JsonArray	
  audis	
  =	
  cars.getValuesAs(JsonObject.class).stream()	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  .filter(x-­‐>"Audi".equals(x.getString("brand")))	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  .map(x-­‐>(x.getString("serial"))	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  .collect(JsonCollectors.toJsonArray());
28
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
JSON-­‐P	
  1.1
• Keep	
  JSON-­‐P	
  spec	
  up-­‐to-­‐date	
  
• Track	
  new	
  standards	
  
• Add	
  editing	
  operations	
  to	
  JsonObject	
  and	
  JsonArray	
  
• Java	
  SE	
  8	
  
• JSON	
  Big	
  Data
JSR	
  374
29
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
Server-­‐sent	
  Events
• Part	
  of	
  HTML5	
  standardization	
  
• Server-­‐to-­‐client	
  streaming	
  of	
  text	
  data	
  
• Media	
  type:	
  “text/event-­‐stream”	
  
• Long-­‐lived	
  HTTP	
  connection	
  
– Client	
  establishes	
  connection	
  
– Server	
  pushes	
  update	
  notifications	
  to	
  client
30
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
Server-­‐sent	
  Events
• Servlet,	
  WebSocket,	
  JAX-­‐RS	
  or	
  standalone	
  API?	
  
• JAX-­‐RS	
  deemed	
  most	
  natural	
  fit	
  
– Streaming	
  HTTP	
  resources	
  already	
  supported	
  
– Small	
  extension	
  
• Server	
  API:	
  new	
  media	
  type;	
  EventOutput	
  	
  
• Client	
  API:	
  new	
  handler	
  for	
  server	
  side	
  events	
  
– Convenience	
  of	
  mixing	
  with	
  other	
  HTTP	
  operations;	
  new	
  media	
  type	
  
– Jersey	
  already	
  supports	
  SSE
31
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
Server-­‐sent	
  Events
@Path("tickers")	
  
public	
  class	
  StockTicker	
  {	
  
…	
  
	
  	
  	
  @Get	
  
	
  	
  	
  @Produces("text/event-­‐stream")	
  
	
  	
  	
  public	
  EventOutput	
  getQuotes()	
  {	
  
	
  	
  	
  	
  	
  	
  	
  EventOutput	
  eo	
  =	
  new	
  EventOutput();	
  
	
  	
  	
  	
  	
  	
  	
  new	
  StockThread(eo).start()	
  
	
  	
  	
  	
  	
  	
  	
  return	
  eo;	
  
	
  	
  	
  }	
  
}
JAX-­‐RS	
  resource	
  class
32
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
JAX-­‐RS	
  StockThread	
  class
class	
  StockThread	
  extends	
  Thread	
  {	
  
	
  private	
  EventOutput	
  eo;	
  
	
  …	
  
	
  @Override
public	
  void	
  run()	
  {
	
  	
  	
  	
  	
  	
  	
  try	
  {
…
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  eo.send(new	
  StockQuote("..."));	
  
	
  	
  	
  	
  	
  	
  	
  }	
  catch	
  (IOException	
  e)	
  {	
  …	
  }
}
}
Server-­‐sent	
  Events
33
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
WebTarget	
  target	
  =	
  client.target("http://example.com/tickers");	
  
EventSource	
  eventSource	
  =	
  new	
  EventSource(target)	
  {	
  
	
  	
  	
  @Override	
  
	
  	
  	
  public	
  void	
  onEvent(InboundEvent	
  inboundEvent)	
  {	
  
	
  	
  	
  	
  	
  StockQuote	
  sq	
  =	
  inboundEvent.readData(StockQuote.class);	
  
	
  	
  	
  	
  	
  //	
  ...	
  
	
  	
  	
  	
  }	
  
	
  	
  };	
  
eventSource.open();
JAX-­‐RS	
  Client
Server-­‐sent	
  Events
34
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
MVC	
  1.0
• Why?	
  
– Java	
  EE	
  8	
  Community	
  Survey	
  
– UI	
  landscape	
  is	
  not	
  one	
  size	
  fits	
  all	
  
Action-­‐based	
  Model-­‐View-­‐Controller	
  architecture
35
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
MVC	
  1.0
• Model	
  
– CDI,	
  Bean	
  Validation,	
  JPA	
  
• View	
  
– Facelets,	
  JSP,	
  SPI?	
  
• Controller	
  
– Invent	
  new	
  technology	
  Vs.	
  Leverage	
  existing	
  technologies?
Glues	
  together	
  key	
  Java	
  EE	
  technologies
36
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
Controller
@Path("hello")
@Controller
public class HelloController {
@GET
@View("view1.xhtml")
public void hello() {
// do business stuff
}
}
37
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
Controller
@Path("hello")
public class HelloController {
@GET
@Controller
public String hello() {
// do business stuff
return "viewA.jsp";
}
}
38
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
Model
@Named(“greeting”)
@RequestScoped
public class Greeting {
private String message;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
39
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
View
<%@ page contentType=“text/html;charset=UTF-8”
language=“java” %>
<html>
<head>
<title>Hello</title>
</head>
<body>
<p>Hello ${greeting.message}</p>
</body>
</html>
40
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
View
<html>
<head>
<title>FreeMarker</title>
</head>
<body>
<p>Hello ${user}</p>
</body>
</html>
41
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
JSR	
  371
• View	
  Engine	
  
– JSP	
  &	
  Facelets	
  
– FreeMarker,	
  Velocity,	
  Thymeleaf,	
  Mustache,	
  Handlebars,	
  Pebble,	
  AsciiDoc	
  
• Validation	
  
• Exception	
  Mapping	
  Providers	
  
• Bootstrap	
  via	
  javax.ws.rs.core.Application	
  
• @Produces	
  
• CDI	
  Events
	
  	
  	
  	
  	
  	
  Early	
  Draft	
  Review
42
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
HTTP	
  1.1	
  circa	
  1999
• HoLB	
  
• HTTP	
  uses	
  TCP	
  poorly	
  
- HTTP	
  flows	
  are	
  short	
  and	
  bursty	
  
- TCP	
  was	
  built	
  for	
  long-­‐lived	
  flows	
  
• Solutions	
  
- File	
  concatenations,	
  Assets	
  Inlining,	
  Domain	
  sharding,	
  etc.
Problems	
  Vs	
  Solutions
43
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
HTTP/2
• HTTP/2	
  
– Hypertext	
  Transfer	
  Protocol	
  version	
  2	
  -­‐	
  RFC	
  7540	
  
– HPACK	
  -­‐	
  Header	
  Compression	
  for	
  HTTP/2	
  -­‐	
  RFC	
  7541	
  
• Reduce	
  latency	
  
• Address	
  the	
  HOL	
  blocking	
  problem	
  
• Support	
  parallelism	
  
• Retain	
  semantics	
  of	
  HTTP	
  1.1	
  
• Define	
  interaction	
  with	
  HTTP	
  1.x
Address	
  the	
  Limitations	
  of	
  HTTP	
  1.x
44
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
HTTP/2
• One	
  TCP	
  Connection	
  
• Request	
  -­‐>	
  Stream	
  
– Multiplexed	
  
– Prioritised	
  
• Binary	
  Framing	
  Layer	
  
– Prioritisation	
  
– Flow	
  Control	
  
– Server	
  Push	
  
• Header	
  Compression
Multiplexed	
  Binary	
  Frames POST	
  /upload	
  HTTP/1.1	
  
Host:	
  www.test.com	
  
Content-­‐Type:	
  application/json	
  
Content-­‐Length:	
  15	
  
{“name”:“duke”}
HTTP	
  1.1 HTTP/2
HEADERS	
  frame
DATA	
  frame
45
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
HTTP/2
Server	
  Push
/index.html	
  :	
  stream	
  1	
  
/style.css	
  :	
  stream	
  2	
  
/logo.png	
  :	
  stream	
  4
Client Server
stream	
  1	
  
HEADERS
stream	
  1	
  
FRAME	
  x
stream	
  2	
  
PROMISE
stream	
  4	
  
PROMISE
46
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
Servlet	
  4.0
• Request/response	
  multiplexing	
  
– Servlet	
  Request	
  as	
  HTTP/2	
  message	
  
• Stream	
  prioritization	
  
– Add	
  stream	
  priority	
  to	
  HttpServletRequest	
  
• Server	
  push	
  
• Binary	
  framing	
  
• Upgrade	
  from	
  HTTP	
  1.1
HTTP/2	
  Features	
  in	
  Servlet	
  API
47
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
Java	
  EE	
  8	
  Themes
• HTML5	
  /	
  Web	
  Tier	
  Enhancements	
  
• Ease	
  of	
  Development	
  
• Infrastructure	
  for	
  running	
  in	
  the	
  Cloud
48
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
Java	
  EE	
  8	
  Themes
• HTML5	
  /	
  Web	
  Tier	
  Enhancements	
  
• Ease	
  of	
  Development	
  
• Infrastructure	
  for	
  running	
  in	
  the	
  Cloud
49
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
Ease	
  of	
  Development
• CDI	
  alignment	
  
• JAX-­‐RS	
  injection	
  alignment	
  
• Simplified	
  messaging	
  through	
  CDI-­‐based	
  “MDBs”	
  
• WebSocket	
  scopes	
  
• Pruning	
  of	
  EJB	
  2.x	
  client	
  view	
  and	
  IIOP	
  interoperability	
  
• Security	
  interceptors	
  
• …
50
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
JMS	
  2.1
• Alternative	
  to	
  EJB	
  message-­‐driven	
  beans	
  
• Simpler	
  JMS-­‐specific	
  annotations	
  
• Usable	
  by	
  any	
  CDI	
  bean	
  
• No	
  need	
  for	
  MessageListener	
  implementation
New	
  API	
  to	
  receive	
  messages	
  asynchronously
51
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
JMS
@MessageDriven(activationConfig	
  =	
  {	
  
	
  	
  @ActivationConfigProperty(propertyName="connectionFactoryLookup",	
  propertyValue="jms/myCF"),	
  
	
  	
  @ActivationConfigProperty(propertyName="destinationLookup",	
  propertyValue="jms/myQueue"),	
  
	
  	
  @ActivationConfigProperty(propertyName="destinationType",	
  propertyValue="javax.jms.queue")})	
  
public	
  class	
  MyMDB	
  implements	
  MessageListener	
  {	
  
	
  	
  	
  public	
  void	
  onMessage(Message	
  message)	
  {	
  
	
  	
  	
  	
  	
  	
  	
  //	
  extract	
  message	
  body	
  
	
  	
  	
  	
  	
  	
  	
  String	
  body	
  =	
  message.getBody(String.class));	
  
	
  	
  	
  	
  	
  	
  	
  //	
  process	
  message	
  body	
  
	
  	
  	
  }	
  
}	
  	
  
MDBs	
  Today
52
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
JMS	
  2.1
@MessageDriven	
  
public	
  class	
  MyMessageBean	
  implements	
  JMSMessageDrivenBean	
  {	
  
	
  	
  	
  
	
  	
  @JMSListener(lookup="java:global/Trades",	
  type=JMSListener.Type.QUEUE)	
  
	
  	
  public	
  void	
  processTrade(TextMessage	
  tradeMessage)	
  {	
  
	
  	
  	
  	
  ...	
  
	
  	
  }	
  
}
53
MDBs	
  Tomorrow?
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
• Java	
  SE	
  support	
  
• Modularity	
  
• Enhanced	
  Events	
  
• Misc.	
  
– AOP	
  
– SPI	
  
– Interceptors	
  and	
  Decorators	
  enhancements	
  
– Cleaning	
  
CDI	
  2.0
54
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
CDI	
  2.0
• Add	
  new	
  features	
  to	
  CDI	
  without	
  bloating	
  the	
  specification	
  
• “Sub	
  specification”(aka	
  “parts”)	
  that	
  can	
  be	
  used	
  independently	
  
– SE	
  
– EE	
  
– more?	
  
• Will	
  help	
  CDI	
  adoption
Modularity
55
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
public	
  class	
  ProducerClass	
  {	
  
	
   @Inject	
  Event<SomeEvent>	
  someEvent;	
  
	
   public	
  void	
  someMethod(...)	
  {	
  
	
   	
   ...	
  
	
   	
   someEvent.fire(...);	
  
	
   }	
  
}
CDI	
  2.0
Synchronous	
  Events
public	
  class	
  ConsumerClass	
  {	
  
	
  	
  	
  	
  	
  	
  public	
  void	
  someObserver(@Observes	
  SomeEvent	
  someEvent)	
  {	
  
	
  	
  	
  ...	
  
	
  	
  	
  	
  	
  	
  }	
  
}
56
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
CDI	
  2.0
Asynchronous	
  Events
public	
  class	
  ConsumerClass	
  {	
  
	
  	
  	
  	
  	
  	
  public	
  void	
  someObserver(@ObservesAsync	
  SomeEvent	
  someEvent)	
  {	
  
	
  	
  	
  ...	
  
	
  	
  	
  	
  	
  	
  }	
  
}
public	
  class	
  AsynchProducerClass	
  {	
  	
  	
  	
  	
  
	
  	
  	
  	
  	
  @Inject	
  Event<Payload>	
  someEvent;	
  
	
  	
  	
  	
  	
  public	
  void	
  anotherMethod()	
  {	
  
	
  	
  	
  CompletionStage<…>	
  completionStage	
  someEvent.fireAsync(...);	
  
	
  	
  	
  	
  	
  }	
  
}
57
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
CDI	
  2.0
Events	
  Ordering
public	
  void	
  importantObserver(@Observes	
  @Priority(1)	
  MyEvent	
  evt)	
  
{	
  
...	
  
}	
  
public	
  void	
  anotherObserver(@Observes	
  @Priority(10)	
  MyEvent	
  evt)	
  
{	
  
...	
  
}
58
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
Pruning
Should	
  we	
  prune	
  EJB	
  2.x	
  remote	
  and	
  local	
  client	
  view	
  (EJBObject,	
  EJBLocalObject,	
  
EJBHome,	
  and	
  EJBLocalHome	
  interfaces)?	
  
Should	
  we	
  prune	
  CORBA,	
  including	
  support	
  for	
  interoperability	
  by	
  means	
  of	
  IIOP?
Candidates	
  for	
  Proposed	
  Optional	
  status
59
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
Java	
  EE	
  8	
  Themes
• HTML5	
  /	
  Web	
  Tier	
  Enhancements	
  
• Ease	
  of	
  Development	
  
• Infrastructure	
  for	
  running	
  in	
  the	
  Cloud
60
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
Modernize	
  the	
  Infrastructure
• Java	
  EE	
  Management	
  2.0	
  
• Java	
  EE	
  Security	
  1.0
For	
  On-­‐Premise	
  and	
  for	
  in	
  the	
  Cloud
61
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
Java	
  EE	
  Management	
  2.0
• Update	
  to	
  JSR	
  77	
  (“J2EE	
  Management”)	
  
• REST-­‐based	
  interfaces	
  to	
  augment	
  (or	
  replace)	
  current	
  Management	
  EJB	
  
APIs	
  
– Currently	
  used	
  OBJECT_NAME	
  to	
  become	
  URL	
  
– Define	
  CRUD	
  operations	
  over	
  individual	
  managed	
  objects	
  
– Server-­‐sent	
  events	
  used	
  for	
  event	
  support	
  
• Simple	
  deployment	
  interfaces	
  also	
  to	
  be	
  considered	
  as	
  part	
  of	
  
management	
  API
62
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
Java	
  EE	
  Security	
  1.0
@IsAuthorized("hasRoles('Manager')	
  &&	
  schedule.officeHrs")	
  
void	
  transferFunds()	
  
@IsAuthorized("hasRoles('Manager')	
  &&	
  hasAttribute('directReports',	
  employee.id)")	
  
double	
  getSalary(long	
  employeeId);	
  
@IsAuthorized(ruleSourceName="java:app/payrollAuthRules",	
  rule="report")	
  
void	
  displayReport();
Authorization	
  via	
  CDI	
  Interceptors
63
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
Java	
  EE	
  Security	
  1.0
Candidate	
  Areas	
  to	
  Enhance	
  Portability,	
  Flexibility,	
  Ease-­‐of-­‐Use
• Authorization	
  Interceptors	
  
• User	
  Management	
  
• Role	
  Mapping	
  
• Authentication	
  
• REST	
  Authentication	
  
• Password	
  Aliasing	
  
64
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
Java	
  EE	
  8	
  Themes
• HTML5	
  /	
  Web	
  Tier	
  Enhancements	
  
• Ease	
  of	
  Development	
  
• Infrastructure	
  for	
  running	
  in	
  the	
  Cloud	
  
• Java	
  SE	
  8	
  alignment
65
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
Java	
  EE	
  8	
  JSRs
• Java	
  EE	
  8	
  Platform	
  (JSR	
  366)	
  
• CDI	
  2.0	
  (JSR	
  365)	
  
• JSON	
  Binding	
  1.0	
  (JSR	
  367)	
  
• JMS	
  2.1	
  (JSR	
  368)	
  	
  
• Java	
  Servlet	
  4.0	
  (JSR	
  369)	
  	
  
• JAX-­‐RS	
  2.1	
  (JSR	
  370)	
  
• MVC	
  1.0	
  (JSR	
  371)	
  *	
  	
  
• JSF	
  2.3	
  (JSR	
  372)	
  
• Java	
  EE	
  Management	
  2.0	
  (JSR	
  373)	
  
• JSON-­‐P	
  1.1	
  (JSR	
  374)	
  
• Java	
  EE	
  Security	
  1.0	
  (JSR	
  375)
So	
  far…..
66
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
And	
  More	
  to	
  Follow…
• JPA	
  	
  
• Bean	
  Validation	
  
• JCache	
  	
  
• Connector	
  Architecture	
  
• WebSocket	
  
• Interceptors	
  
• EJB	
  
• JTA	
  
• Batch	
  
• Concurrency	
  Utilities	
  	
  
• JavaMail	
  
• …
67
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
Roadmap
• Tentative	
  Delivery	
  Schedule	
  
– Q3	
  2014:	
  Expert	
  Group	
  formed	
  
– Q3	
  2015:	
  Early	
  Draft	
  
– Q4	
  2015:	
  Public	
  Review	
  
– Q2	
  2016:	
  Proposed	
  Final	
  Draft	
  
– H1	
  2017:	
  Final	
  Release	
  
• Contribute!
68
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
How	
  to	
  Get	
  Involved
• Join	
  an	
  Expert	
  Group	
  
– http://javaee-­‐spec.java.net	
  
• Adopt	
  a	
  JSR	
  
– http://glassfish.org/adoptajsr	
  
• The	
  Aquarium	
  
– http://blogs.oracle.com/theaquarium	
  
• Java	
  EE	
  Reference	
  Implementation	
  
– http://glassfish.org
69
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
Obrigado!
70
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  

More Related Content

What's hot

JSONB introduction and comparison with other frameworks
JSONB introduction and comparison with other frameworksJSONB introduction and comparison with other frameworks
JSONB introduction and comparison with other frameworksDmitry Kornilov
 
What's New in WebLogic 12.1.3 and Beyond
What's New in WebLogic 12.1.3 and BeyondWhat's New in WebLogic 12.1.3 and Beyond
What's New in WebLogic 12.1.3 and BeyondOracle
 
Java EE 8: On the Horizon
Java EE 8:  On the HorizonJava EE 8:  On the Horizon
Java EE 8: On the HorizonJosh Juneau
 
JavaScript Frameworks and Java EE – A Great Match
JavaScript Frameworks and Java EE – A Great MatchJavaScript Frameworks and Java EE – A Great Match
JavaScript Frameworks and Java EE – A Great MatchReza Rahman
 
Finally, EE Security API JSR 375
Finally, EE Security API JSR 375Finally, EE Security API JSR 375
Finally, EE Security API JSR 375Alex Kosowski
 
GlassFish BOF
GlassFish BOFGlassFish BOF
GlassFish BOFglassfish
 
Down-to-Earth Microservices with Java EE
Down-to-Earth Microservices with Java EEDown-to-Earth Microservices with Java EE
Down-to-Earth Microservices with Java EEReza Rahman
 
2015 JavaOne EJB/CDI Alignment
2015 JavaOne EJB/CDI Alignment2015 JavaOne EJB/CDI Alignment
2015 JavaOne EJB/CDI AlignmentDavid Blevins
 
Construindo aplicações com HTML5, WebSockets, e Java EE 7
Construindo aplicações com HTML5, WebSockets, e Java EE 7Construindo aplicações com HTML5, WebSockets, e Java EE 7
Construindo aplicações com HTML5, WebSockets, e Java EE 7Bruno Borges
 
Java EE 6 Adoption in One of the World’s Largest Online Financial Systems
Java EE 6 Adoption in One of the World’s Largest Online Financial SystemsJava EE 6 Adoption in One of the World’s Largest Online Financial Systems
Java EE 6 Adoption in One of the World’s Largest Online Financial SystemsArshal Ameen
 
Testing Java EE Applications Using Arquillian
Testing Java EE Applications Using ArquillianTesting Java EE Applications Using Arquillian
Testing Java EE Applications Using ArquillianReza Rahman
 
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
 

What's hot (16)

JavaCro'15 - Java EE 8 - An instant snapshot - David Delabassee
JavaCro'15 - Java EE 8 - An instant snapshot - David DelabasseeJavaCro'15 - Java EE 8 - An instant snapshot - David Delabassee
JavaCro'15 - Java EE 8 - An instant snapshot - David Delabassee
 
MVC 1.0 / JSR 371
MVC 1.0 / JSR 371MVC 1.0 / JSR 371
MVC 1.0 / JSR 371
 
JSONB introduction and comparison with other frameworks
JSONB introduction and comparison with other frameworksJSONB introduction and comparison with other frameworks
JSONB introduction and comparison with other frameworks
 
Java EE 7 - Overview and Status
Java EE 7  - Overview and StatusJava EE 7  - Overview and Status
Java EE 7 - Overview and Status
 
What's New in WebLogic 12.1.3 and Beyond
What's New in WebLogic 12.1.3 and BeyondWhat's New in WebLogic 12.1.3 and Beyond
What's New in WebLogic 12.1.3 and Beyond
 
Java EE 8: On the Horizon
Java EE 8:  On the HorizonJava EE 8:  On the Horizon
Java EE 8: On the Horizon
 
JavaScript Frameworks and Java EE – A Great Match
JavaScript Frameworks and Java EE – A Great MatchJavaScript Frameworks and Java EE – A Great Match
JavaScript Frameworks and Java EE – A Great Match
 
Finally, EE Security API JSR 375
Finally, EE Security API JSR 375Finally, EE Security API JSR 375
Finally, EE Security API JSR 375
 
GlassFish BOF
GlassFish BOFGlassFish BOF
GlassFish BOF
 
Down-to-Earth Microservices with Java EE
Down-to-Earth Microservices with Java EEDown-to-Earth Microservices with Java EE
Down-to-Earth Microservices with Java EE
 
2015 JavaOne EJB/CDI Alignment
2015 JavaOne EJB/CDI Alignment2015 JavaOne EJB/CDI Alignment
2015 JavaOne EJB/CDI Alignment
 
Construindo aplicações com HTML5, WebSockets, e Java EE 7
Construindo aplicações com HTML5, WebSockets, e Java EE 7Construindo aplicações com HTML5, WebSockets, e Java EE 7
Construindo aplicações com HTML5, WebSockets, e Java EE 7
 
Java EE 6 Adoption in One of the World’s Largest Online Financial Systems
Java EE 6 Adoption in One of the World’s Largest Online Financial SystemsJava EE 6 Adoption in One of the World’s Largest Online Financial Systems
Java EE 6 Adoption in One of the World’s Largest Online Financial Systems
 
Testing Java EE Applications Using Arquillian
Testing Java EE Applications Using ArquillianTesting Java EE Applications Using Arquillian
Testing Java EE Applications Using Arquillian
 
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 7 overview
Java EE 7 overviewJava EE 7 overview
Java EE 7 overview
 

Similar to 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 8PT.JUG
 
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 - 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
 
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 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
 
112815 java ee8_davidd
112815 java ee8_davidd112815 java ee8_davidd
112815 java ee8_daviddTakashi Ito
 
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
 
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
 
Java EE 8 Overview (Japanese)
Java EE 8 Overview (Japanese)Java EE 8 Overview (Japanese)
Java EE 8 Overview (Japanese)Logico
 
XML-Free Programming : Java Server and Client Development without &lt;>
XML-Free Programming : Java Server and Client Development without &lt;>XML-Free Programming : Java Server and Client Development without &lt;>
XML-Free Programming : Java Server and Client Development without &lt;>Arun Gupta
 
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
 
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
 
JavaOne 2014 BOF4241 What's Next for JSF?
JavaOne 2014 BOF4241 What's Next for JSF?JavaOne 2014 BOF4241 What's Next for JSF?
JavaOne 2014 BOF4241 What's Next for JSF?Edward Burns
 
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
 
Configuration for Java EE: Config JSR and Tamaya
Configuration for Java EE: Config JSR and TamayaConfiguration for Java EE: Config JSR and Tamaya
Configuration for Java EE: Config JSR and TamayaDmitry Kornilov
 
JavaOne2015フィードバック @ 富山合同勉強会
JavaOne2015フィードバック @ 富山合同勉強会JavaOne2015フィードバック @ 富山合同勉強会
JavaOne2015フィードバック @ 富山合同勉強会Takashi Ito
 
RESTful web service with JBoss Fuse
RESTful web service with JBoss FuseRESTful web service with JBoss Fuse
RESTful web service with JBoss Fuseejlp12
 

Similar to 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 - 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
 
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 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
 
112815 java ee8_davidd
112815 java ee8_davidd112815 java ee8_davidd
112815 java ee8_davidd
 
Presente e Futuro: Java EE.next()
Presente e Futuro: Java EE.next()Presente e Futuro: Java EE.next()
Presente e Futuro: Java EE.next()
 
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
 
JSON-B for CZJUG
JSON-B for CZJUGJSON-B for CZJUG
JSON-B for CZJUG
 
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
 
Java EE for the Cloud
Java EE for the CloudJava EE for the Cloud
Java EE for the Cloud
 
Java EE 8 Overview (Japanese)
Java EE 8 Overview (Japanese)Java EE 8 Overview (Japanese)
Java EE 8 Overview (Japanese)
 
XML-Free Programming : Java Server and Client Development without &lt;>
XML-Free Programming : Java Server and Client Development without &lt;>XML-Free Programming : Java Server and Client Development without &lt;>
XML-Free Programming : Java Server and Client Development without &lt;>
 
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...
 
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
 
JavaOne 2014 BOF4241 What's Next for JSF?
JavaOne 2014 BOF4241 What's Next for JSF?JavaOne 2014 BOF4241 What's Next for JSF?
JavaOne 2014 BOF4241 What's Next for JSF?
 
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
 
Configuration for Java EE: Config JSR and Tamaya
Configuration for Java EE: Config JSR and TamayaConfiguration for Java EE: Config JSR and Tamaya
Configuration for Java EE: Config JSR and Tamaya
 
JavaOne2015フィードバック @ 富山合同勉強会
JavaOne2015フィードバック @ 富山合同勉強会JavaOne2015フィードバック @ 富山合同勉強会
JavaOne2015フィードバック @ 富山合同勉強会
 
RESTful web service with JBoss Fuse
RESTful web service with JBoss FuseRESTful web service with JBoss Fuse
RESTful web service with JBoss Fuse
 

More from David Delabassee

JVMs in Containers - Best Practices
JVMs in Containers - Best PracticesJVMs in Containers - Best Practices
JVMs in Containers - Best PracticesDavid Delabassee
 
Serverless Java Challenges & Triumphs
Serverless Java Challenges & TriumphsServerless Java Challenges & Triumphs
Serverless Java Challenges & TriumphsDavid Delabassee
 
Serverless Java - Challenges and Triumphs
Serverless Java - Challenges and TriumphsServerless Java - Challenges and Triumphs
Serverless Java - Challenges and TriumphsDavid Delabassee
 
Randstad Docker meetup - Serverless
Randstad Docker meetup - ServerlessRandstad Docker meetup - Serverless
Randstad Docker meetup - ServerlessDavid Delabassee
 
Java Serverless in Action - Voxxed Banff
Java Serverless in Action - Voxxed BanffJava Serverless in Action - Voxxed Banff
Java Serverless in Action - Voxxed BanffDavid Delabassee
 
Java EE 8 - February 2017 update
Java EE 8 - February 2017 updateJava EE 8 - February 2017 update
Java EE 8 - February 2017 updateDavid Delabassee
 
Java EE Next - BeJUG JavaOne Afterglow 2016
Java EE Next - BeJUG JavaOne Afterglow 2016Java EE Next - BeJUG JavaOne Afterglow 2016
Java EE Next - BeJUG JavaOne Afterglow 2016David Delabassee
 
Java EE 8 - Work in progress
Java EE 8 - Work in progressJava EE 8 - Work in progress
Java EE 8 - Work in progressDavid Delabassee
 
HTTP/2 comes to Java (Dec. 2015 version)
HTTP/2 comes to Java (Dec. 2015 version)HTTP/2 comes to Java (Dec. 2015 version)
HTTP/2 comes to Java (Dec. 2015 version)David Delabassee
 
HTTP/2 Comes to Java - What Servlet 4.0 Means to You
HTTP/2 Comes to Java - What Servlet 4.0 Means to YouHTTP/2 Comes to Java - What Servlet 4.0 Means to You
HTTP/2 Comes to Java - What Servlet 4.0 Means to YouDavid Delabassee
 
Pushing Java EE outside of the Enterprise - Home Automation
Pushing Java EE outside of the Enterprise - Home AutomationPushing Java EE outside of the Enterprise - Home Automation
Pushing Java EE outside of the Enterprise - Home AutomationDavid Delabassee
 

More from David Delabassee (20)

JVMs in Containers - Best Practices
JVMs in Containers - Best PracticesJVMs in Containers - Best Practices
JVMs in Containers - Best Practices
 
JVMs in Containers
JVMs in ContainersJVMs in Containers
JVMs in Containers
 
Serverless Java Challenges & Triumphs
Serverless Java Challenges & TriumphsServerless Java Challenges & Triumphs
Serverless Java Challenges & Triumphs
 
Serverless Java - Challenges and Triumphs
Serverless Java - Challenges and TriumphsServerless Java - Challenges and Triumphs
Serverless Java - Challenges and Triumphs
 
Randstad Docker meetup - Serverless
Randstad Docker meetup - ServerlessRandstad Docker meetup - Serverless
Randstad Docker meetup - Serverless
 
Java Serverless in Action - Voxxed Banff
Java Serverless in Action - Voxxed BanffJava Serverless in Action - Voxxed Banff
Java Serverless in Action - Voxxed Banff
 
Serverless Kotlin
Serverless KotlinServerless Kotlin
Serverless Kotlin
 
REST in an Async World
REST in an Async WorldREST in an Async World
REST in an Async World
 
JAX-RS 2.1 Reloaded
JAX-RS 2.1 ReloadedJAX-RS 2.1 Reloaded
JAX-RS 2.1 Reloaded
 
Java EE 8 - February 2017 update
Java EE 8 - February 2017 updateJava EE 8 - February 2017 update
Java EE 8 - February 2017 update
 
Java EE Next
Java EE NextJava EE Next
Java EE Next
 
Java EE Next - BeJUG JavaOne Afterglow 2016
Java EE Next - BeJUG JavaOne Afterglow 2016Java EE Next - BeJUG JavaOne Afterglow 2016
Java EE Next - BeJUG JavaOne Afterglow 2016
 
HTTP/2 comes to Java
HTTP/2 comes to JavaHTTP/2 comes to Java
HTTP/2 comes to Java
 
Java EE 8 - Work in progress
Java EE 8 - Work in progressJava EE 8 - Work in progress
Java EE 8 - Work in progress
 
HTTP/2 comes to Java (Dec. 2015 version)
HTTP/2 comes to Java (Dec. 2015 version)HTTP/2 comes to Java (Dec. 2015 version)
HTTP/2 comes to Java (Dec. 2015 version)
 
HTTP/2 Comes to Java
HTTP/2 Comes to JavaHTTP/2 Comes to Java
HTTP/2 Comes to Java
 
HTTP/2 Comes to Java
HTTP/2 Comes to JavaHTTP/2 Comes to Java
HTTP/2 Comes to Java
 
Avatar 2.0
Avatar 2.0Avatar 2.0
Avatar 2.0
 
HTTP/2 Comes to Java - What Servlet 4.0 Means to You
HTTP/2 Comes to Java - What Servlet 4.0 Means to YouHTTP/2 Comes to Java - What Servlet 4.0 Means to You
HTTP/2 Comes to Java - What Servlet 4.0 Means to You
 
Pushing Java EE outside of the Enterprise - Home Automation
Pushing Java EE outside of the Enterprise - Home AutomationPushing Java EE outside of the Enterprise - Home Automation
Pushing Java EE outside of the Enterprise - Home Automation
 

Recently uploaded

Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
cybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningcybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningVitsRangannavar
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...aditisharan08
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationkaushalgiri8080
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfPower Karaoke
 
XpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsXpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsMehedi Hasan Shohan
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 

Recently uploaded (20)

Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
cybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningcybersecurity notes for mca students for learning
cybersecurity notes for mca students for learning
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanation
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdf
 
XpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsXpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software Solutions
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 

What's coming in Java EE 8

  • 1. What’s  coming  in  Java  EE  8 David  Delabassee  -­‐  @delabassee   Software  Evangelist   Java  EE  Org.  -­‐  Oracle   June  2015 Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.  
  • 2. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   Agenda How  did  we  get  here?   What  do  we  want  to  do?   How  can  you  get  involved? Preview  of  Java  EE  8
  • 3. Safe  Harbor  Statement The  following  is  intended  to  outline  our  general  product  direction.  It  is  intended  for   information  purposes  only,  and  may  not  be  incorporated  into  any  contract.  It  is  not  a   commitment  to  deliver  any  material,  code,  or  functionality,  and  should  not  be  relied  upon   in  making  purchasing  decisions.  The  development,  release,  and  timing  of  any  features  or   functionality  described  for  Oracle’s  products  remains  at  the  sole  discretion  of  Oracle. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   3
  • 4. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   Java  EE  7 ENTERPRISE EDITION ‣ Batch ‣ Concurrency ‣ Simplified JMS ‣ More annotated POJOs ‣ Less boilerplate code ‣ Cohesive integrated platform DEVELOPER PRODUCTIVITY ‣ WebSockets ‣ JSON ‣ Servlet 3.1 NIO ‣ REST MEETING 
 ENTERPRISE DEMANDS Java EE 7 4
  • 5. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   Industry  Trends  We're  Seeing Cloud Mobile HTTP/2 SECURITY Reactive  Programming User  Experience 5
  • 6. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   Feedback  from  the  Community • Many  sources     – Users  lists  of  java.net  projects   – JIRAs   – JavaOne  Java  EE  BOF  and  Java  EE  EG  meeting   – Outreach  by  evangelists   • Consolidated  into  Community  Survey   – 47  questions   – 15.000  answers 6
  • 7. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   Community-­‐Prioritized  Features http://glassfish.org/survey 7
  • 8. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.                                  You  asked  for  it,  you  got  it! Java  EE  8 Driven  by  Community  Feedback
  • 9. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   Java  EE  8  Themes • HTML5  /  Web  Tier  Enhancements   • Ease  of  Development   • Infrastructure  for  running  in  the  Cloud 9
  • 10. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   Java  EE  8  Themes • HTML5  /  Web  Tier  Enhancements   • Ease  of  Development   • Infrastructure  for  running  in  the  Cloud 10
  • 11. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   HTML5  Support  /  Web  Tier  Enhancements • JSON  Binding   • JSON  Processing  enhancements   • Server-­‐sent  Events   • Action-­‐based  MVC   • HTTP/2  support 11
  • 12. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   JSON-­‐B • API  to  marshal/unmarshal  Java  objects  to/from  JSON   – Similar  to  JAXB  runtime  API  in  XML  world   • Default  mapping  of  classes  to  JSON   – Annotations  to  customize  the  default  mappings   – JsonProperty,  JsonTransient,  JsonNillable,  JsonValue,  … Java  API  for  JSON  Binding 12
  • 13. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   JSON-­‐B • Draw  from  best  practices  of  existing  JSON  binding  implementations   – Jackson,  Genson,  EclipseLink  MOXy,  Fleece,  JSON-­‐lib,  Gson,  Flexjson,  Json-­‐io,   JSONiJ,  Johnzon,  Xstream,  etc.   • Switch  JSON  binding  providers   • Implementations  compete  on  common  ground Standard  API 13
  • 14. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   JSON-­‐B // from default JsonbBuilder instance of the default JsonbProvider Jsonb jsonb = JsonbBuilder.create(); JsonbProvider myProvider = JsonbProvider.provider("foo.bar.ProviderImpl"); Jsonb jsonb = JsonbBuilder.newBuilder(myProvider); // UnMarshall Book book = jsonb.fromJson(new File("myBook.json"), Book.class); // Marshall jsonb.toJson(myObject, new File(“foo.json”)); jsonb.toJson(myObject, new PrintWriter(System.out)); 14
  • 15. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   JSON-­‐P  1.1 Java  API  for  JSON  Processing • Keep  JSON-­‐P  spec  up-­‐to-­‐date   • Track  new  standards   • Add  editing  operations  to  JsonObject  and  JsonArray   • Java  SE  8   • JSON  Big  Data 15
  • 16. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   JSON-­‐P  1.1 • String  syntax  for  referencing  a  JSON  value     "/0/phone/mobile" JSON-­‐Pointer  –  IETF  RFC  6901 16
  • 17. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   JSON-­‐P  1.1 JsonArray  contacts  =  …   JsonPointer  pointer  =  new  JsonPointer("/0/name");   JsonValue  value  =  pointer.getValue(contacts);   [    {          "name":"Duke",          "gender":"M",          "phones":{                "home":"650-­‐123-­‐4567",                "mobile":"650-­‐234-­‐5678"}},      {          "name":"Jane",          "gender":"F",          "phones":{                "mobile":"707-­‐555-­‐9999"}}   ]       17
  • 18. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   JSON-­‐P  1.1 • String  syntax  for  referencing  a  JSON  value     “/0/name"   • Methods   – getValue()   – JSON  operations:  add(),  replace(),  remove() JSON-­‐Pointer  –  IETF  RFC  6901  JsonPointer  pointer  =  new  JsonPointer("/0/name");    JsonArray  result  =  pointer.replace(contacts,  Json.createValue("Alex")); 18
  • 19. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   JSON-­‐P  1.1 • Patch  is  a  JSON  document   – Array  of  objects  /  operations  for  modifying  a  JSON  document   – add,  replace,  remove,  move,  copy,  test JSON-­‐Patch  –  IETF  RFC  6902 [        {"op":"replace","path":"/0/phones/mobile","value":"650-­‐111-­‐222"},        {"op":"remove","path":"/1"}   ] 19
  • 20. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   JSON-­‐P  1.1 [    {      "op":"replace",      "path":"/0/phones/mobile",      "value":"650-­‐111-­‐2222"},    {      "op":"remove",      "path":"/1"}   ] [    {          "name":"Duke",          "gender":"M",          "phones":{                "home":"650-­‐123-­‐4567",                "mobile":"650-­‐234-­‐5678"}},      {          "name":"Jane",          "gender":"F",          "phones":{                "mobile":"707-­‐555-­‐9999"}}   ]       20
  • 21. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   JSON-­‐P  1.1 [    {      "op":"replace",      "path":"/0/phones/mobile",      "value":"650-­‐111-­‐2222"},    {      "op":"remove",      "path":"/1"}   ] [    {          "name":"Duke",          "gender":"M",          "phones":{                "home":"650-­‐123-­‐4567",                "mobile":"650-­‐111-­‐2222"}},      {          "name":"Jane",          "gender":"F",          "phones":{                "mobile":"707-­‐555-­‐9999"}}   ]       21
  • 22. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   JSON-­‐P  1.1 [    {      "op":"replace",      "path":"/0/phones/mobile",      "value":"650-­‐111-­‐2222"},    {      "op":"remove",      "path":"/1"}   ] [    {          "name":"Duke",          "gender":"M",          "phones":{                "home":"650-­‐123-­‐4567",                "mobile":"650-­‐111-­‐2222"}}   ]       22
  • 23. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    JsonArray  target  =  …;    JsonArray  patch  =  …;        JsonPatch  jsonPatch  =  new  JsonPatch(patch);    JsonArray  result  =  jsonPatch.apply(target); JSON-­‐P  1.1  JsonPatchBuilder  builder  =  new  JsonPatchBuilder();    JsonArray  result  =  builder.add("/Joe/phones/office",  "1234-­‐567")                                                        .remove("/Amy/age")                                                        .apply(contacts); 23
  • 24. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   JSON-­‐P  1.1 JSON-­‐Merge  Patch  –  IETF  RFC  7386 Orignal                                Patch                                      Result   {"a":"b"}                          {"a":"c"}                            {"a":"c"}   {"a":"b"}                          {"b":"c"}                            {"a":"b",                                                                                                                        "b":"c"}   {"a":"b"}                          {"a":null}                          {  }   {"a":"b",                          {"a":null}                          {"b":"c"}    "b":"c"}   {  }                                                  {"a":                                          {"a":                                                                {"bb":                                    {"bb":                                                                        {"ccc":                                {}}}                                                                                null}}}   24
  • 25. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   JSON-­‐P  1.1 {            "title":  "Hello!",            "author":  {                          "familyName":  null              },              "tags":  [  "example"  ],              "phoneNumber":  "+01-­‐123-­‐456-­‐7890"    }   {          "title":  "Goodbye!",          "author":  {                  "givenName":  "John",                  "familyName":  "Doe"            },            "tags":  [  "example",  "sample"  ],            "content":  "This  will  be  unchanged"    }       {            "title":  "Hello!",            "author":  {                          "givenName":  "John"              },              "tags":  [  "example"  ],              "content":  "This  will  be  unchanged",              "phoneNumber":  "+01-­‐123-­‐456-­‐7890"    }       JSON-­‐Merge  Patch  –  IETF  RFC  7386 25
  • 26. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    JsonObject  contact  =  …;  //  The  target  to  be  patched    JsonObject  patch  =  …;        JsonValue  output  =  JsonMergePatch.mergePatch(target,  patch); JSON-­‐P  1.1 JSON-­‐Merge  Patch  –  IETF  RFC  7386 26
  • 27. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   JSON-­‐P  1.1 • Reverse  operation   – Given  two  objects  returns  the  patch  to  apply  (diff)   JSON-­‐Patch  &  JSON-­‐Merge  Patch  Diff JsonValue  output  =  JsonMergePatch.diff(original,  target);   JsonArray  diff  =  JsonPatch.diff(original,  target); 27
  • 28. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   JSON-­‐P  1.1 JSON  Query  collecting  results  in  JsonArray JsonArray  cars  =  ...;   JsonArray  audis  =  cars.getValuesAs(JsonObject.class).stream()                                                                                                            .filter(x-­‐>"Audi".equals(x.getString("brand")))                                                                                                            .map(x-­‐>(x.getString("serial"))                                                                                                            .collect(JsonCollectors.toJsonArray()); 28
  • 29. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   JSON-­‐P  1.1 • Keep  JSON-­‐P  spec  up-­‐to-­‐date   • Track  new  standards   • Add  editing  operations  to  JsonObject  and  JsonArray   • Java  SE  8   • JSON  Big  Data JSR  374 29
  • 30. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   Server-­‐sent  Events • Part  of  HTML5  standardization   • Server-­‐to-­‐client  streaming  of  text  data   • Media  type:  “text/event-­‐stream”   • Long-­‐lived  HTTP  connection   – Client  establishes  connection   – Server  pushes  update  notifications  to  client 30
  • 31. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   Server-­‐sent  Events • Servlet,  WebSocket,  JAX-­‐RS  or  standalone  API?   • JAX-­‐RS  deemed  most  natural  fit   – Streaming  HTTP  resources  already  supported   – Small  extension   • Server  API:  new  media  type;  EventOutput     • Client  API:  new  handler  for  server  side  events   – Convenience  of  mixing  with  other  HTTP  operations;  new  media  type   – Jersey  already  supports  SSE 31
  • 32. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   Server-­‐sent  Events @Path("tickers")   public  class  StockTicker  {   …        @Get        @Produces("text/event-­‐stream")        public  EventOutput  getQuotes()  {                EventOutput  eo  =  new  EventOutput();                new  StockThread(eo).start()                return  eo;        }   } JAX-­‐RS  resource  class 32
  • 33. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   JAX-­‐RS  StockThread  class class  StockThread  extends  Thread  {    private  EventOutput  eo;    …    @Override public  void  run()  {              try  { …                      eo.send(new  StockQuote("..."));                }  catch  (IOException  e)  {  …  } } } Server-­‐sent  Events 33
  • 34. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   WebTarget  target  =  client.target("http://example.com/tickers");   EventSource  eventSource  =  new  EventSource(target)  {        @Override        public  void  onEvent(InboundEvent  inboundEvent)  {            StockQuote  sq  =  inboundEvent.readData(StockQuote.class);            //  ...          }      };   eventSource.open(); JAX-­‐RS  Client Server-­‐sent  Events 34
  • 35. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   MVC  1.0 • Why?   – Java  EE  8  Community  Survey   – UI  landscape  is  not  one  size  fits  all   Action-­‐based  Model-­‐View-­‐Controller  architecture 35
  • 36. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   MVC  1.0 • Model   – CDI,  Bean  Validation,  JPA   • View   – Facelets,  JSP,  SPI?   • Controller   – Invent  new  technology  Vs.  Leverage  existing  technologies? Glues  together  key  Java  EE  technologies 36
  • 37. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   Controller @Path("hello") @Controller public class HelloController { @GET @View("view1.xhtml") public void hello() { // do business stuff } } 37
  • 38. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   Controller @Path("hello") public class HelloController { @GET @Controller public String hello() { // do business stuff return "viewA.jsp"; } } 38
  • 39. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   Model @Named(“greeting”) @RequestScoped public class Greeting { private String message; public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } } 39
  • 40. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   View <%@ page contentType=“text/html;charset=UTF-8” language=“java” %> <html> <head> <title>Hello</title> </head> <body> <p>Hello ${greeting.message}</p> </body> </html> 40
  • 41. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   View <html> <head> <title>FreeMarker</title> </head> <body> <p>Hello ${user}</p> </body> </html> 41
  • 42. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   JSR  371 • View  Engine   – JSP  &  Facelets   – FreeMarker,  Velocity,  Thymeleaf,  Mustache,  Handlebars,  Pebble,  AsciiDoc   • Validation   • Exception  Mapping  Providers   • Bootstrap  via  javax.ws.rs.core.Application   • @Produces   • CDI  Events            Early  Draft  Review 42
  • 43. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   HTTP  1.1  circa  1999 • HoLB   • HTTP  uses  TCP  poorly   - HTTP  flows  are  short  and  bursty   - TCP  was  built  for  long-­‐lived  flows   • Solutions   - File  concatenations,  Assets  Inlining,  Domain  sharding,  etc. Problems  Vs  Solutions 43
  • 44. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   HTTP/2 • HTTP/2   – Hypertext  Transfer  Protocol  version  2  -­‐  RFC  7540   – HPACK  -­‐  Header  Compression  for  HTTP/2  -­‐  RFC  7541   • Reduce  latency   • Address  the  HOL  blocking  problem   • Support  parallelism   • Retain  semantics  of  HTTP  1.1   • Define  interaction  with  HTTP  1.x Address  the  Limitations  of  HTTP  1.x 44
  • 45. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   HTTP/2 • One  TCP  Connection   • Request  -­‐>  Stream   – Multiplexed   – Prioritised   • Binary  Framing  Layer   – Prioritisation   – Flow  Control   – Server  Push   • Header  Compression Multiplexed  Binary  Frames POST  /upload  HTTP/1.1   Host:  www.test.com   Content-­‐Type:  application/json   Content-­‐Length:  15   {“name”:“duke”} HTTP  1.1 HTTP/2 HEADERS  frame DATA  frame 45
  • 46. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   HTTP/2 Server  Push /index.html  :  stream  1   /style.css  :  stream  2   /logo.png  :  stream  4 Client Server stream  1   HEADERS stream  1   FRAME  x stream  2   PROMISE stream  4   PROMISE 46
  • 47. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   Servlet  4.0 • Request/response  multiplexing   – Servlet  Request  as  HTTP/2  message   • Stream  prioritization   – Add  stream  priority  to  HttpServletRequest   • Server  push   • Binary  framing   • Upgrade  from  HTTP  1.1 HTTP/2  Features  in  Servlet  API 47
  • 48. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   Java  EE  8  Themes • HTML5  /  Web  Tier  Enhancements   • Ease  of  Development   • Infrastructure  for  running  in  the  Cloud 48
  • 49. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   Java  EE  8  Themes • HTML5  /  Web  Tier  Enhancements   • Ease  of  Development   • Infrastructure  for  running  in  the  Cloud 49
  • 50. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   Ease  of  Development • CDI  alignment   • JAX-­‐RS  injection  alignment   • Simplified  messaging  through  CDI-­‐based  “MDBs”   • WebSocket  scopes   • Pruning  of  EJB  2.x  client  view  and  IIOP  interoperability   • Security  interceptors   • … 50
  • 51. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   JMS  2.1 • Alternative  to  EJB  message-­‐driven  beans   • Simpler  JMS-­‐specific  annotations   • Usable  by  any  CDI  bean   • No  need  for  MessageListener  implementation New  API  to  receive  messages  asynchronously 51
  • 52. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   JMS @MessageDriven(activationConfig  =  {      @ActivationConfigProperty(propertyName="connectionFactoryLookup",  propertyValue="jms/myCF"),      @ActivationConfigProperty(propertyName="destinationLookup",  propertyValue="jms/myQueue"),      @ActivationConfigProperty(propertyName="destinationType",  propertyValue="javax.jms.queue")})   public  class  MyMDB  implements  MessageListener  {        public  void  onMessage(Message  message)  {                //  extract  message  body                String  body  =  message.getBody(String.class));                //  process  message  body        }   }     MDBs  Today 52
  • 53. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   JMS  2.1 @MessageDriven   public  class  MyMessageBean  implements  JMSMessageDrivenBean  {            @JMSListener(lookup="java:global/Trades",  type=JMSListener.Type.QUEUE)      public  void  processTrade(TextMessage  tradeMessage)  {          ...      }   } 53 MDBs  Tomorrow?
  • 54. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   • Java  SE  support   • Modularity   • Enhanced  Events   • Misc.   – AOP   – SPI   – Interceptors  and  Decorators  enhancements   – Cleaning   CDI  2.0 54
  • 55. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   CDI  2.0 • Add  new  features  to  CDI  without  bloating  the  specification   • “Sub  specification”(aka  “parts”)  that  can  be  used  independently   – SE   – EE   – more?   • Will  help  CDI  adoption Modularity 55
  • 56. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   public  class  ProducerClass  {     @Inject  Event<SomeEvent>  someEvent;     public  void  someMethod(...)  {       ...       someEvent.fire(...);     }   } CDI  2.0 Synchronous  Events public  class  ConsumerClass  {              public  void  someObserver(@Observes  SomeEvent  someEvent)  {        ...              }   } 56
  • 57. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   CDI  2.0 Asynchronous  Events public  class  ConsumerClass  {              public  void  someObserver(@ObservesAsync  SomeEvent  someEvent)  {        ...              }   } public  class  AsynchProducerClass  {                    @Inject  Event<Payload>  someEvent;            public  void  anotherMethod()  {        CompletionStage<…>  completionStage  someEvent.fireAsync(...);            }   } 57
  • 58. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   CDI  2.0 Events  Ordering public  void  importantObserver(@Observes  @Priority(1)  MyEvent  evt)   {   ...   }   public  void  anotherObserver(@Observes  @Priority(10)  MyEvent  evt)   {   ...   } 58
  • 59. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   Pruning Should  we  prune  EJB  2.x  remote  and  local  client  view  (EJBObject,  EJBLocalObject,   EJBHome,  and  EJBLocalHome  interfaces)?   Should  we  prune  CORBA,  including  support  for  interoperability  by  means  of  IIOP? Candidates  for  Proposed  Optional  status 59
  • 60. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   Java  EE  8  Themes • HTML5  /  Web  Tier  Enhancements   • Ease  of  Development   • Infrastructure  for  running  in  the  Cloud 60
  • 61. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   Modernize  the  Infrastructure • Java  EE  Management  2.0   • Java  EE  Security  1.0 For  On-­‐Premise  and  for  in  the  Cloud 61
  • 62. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   Java  EE  Management  2.0 • Update  to  JSR  77  (“J2EE  Management”)   • REST-­‐based  interfaces  to  augment  (or  replace)  current  Management  EJB   APIs   – Currently  used  OBJECT_NAME  to  become  URL   – Define  CRUD  operations  over  individual  managed  objects   – Server-­‐sent  events  used  for  event  support   • Simple  deployment  interfaces  also  to  be  considered  as  part  of   management  API 62
  • 63. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   Java  EE  Security  1.0 @IsAuthorized("hasRoles('Manager')  &&  schedule.officeHrs")   void  transferFunds()   @IsAuthorized("hasRoles('Manager')  &&  hasAttribute('directReports',  employee.id)")   double  getSalary(long  employeeId);   @IsAuthorized(ruleSourceName="java:app/payrollAuthRules",  rule="report")   void  displayReport(); Authorization  via  CDI  Interceptors 63
  • 64. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   Java  EE  Security  1.0 Candidate  Areas  to  Enhance  Portability,  Flexibility,  Ease-­‐of-­‐Use • Authorization  Interceptors   • User  Management   • Role  Mapping   • Authentication   • REST  Authentication   • Password  Aliasing   64
  • 65. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   Java  EE  8  Themes • HTML5  /  Web  Tier  Enhancements   • Ease  of  Development   • Infrastructure  for  running  in  the  Cloud   • Java  SE  8  alignment 65
  • 66. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   Java  EE  8  JSRs • Java  EE  8  Platform  (JSR  366)   • CDI  2.0  (JSR  365)   • JSON  Binding  1.0  (JSR  367)   • JMS  2.1  (JSR  368)     • Java  Servlet  4.0  (JSR  369)     • JAX-­‐RS  2.1  (JSR  370)   • MVC  1.0  (JSR  371)  *     • JSF  2.3  (JSR  372)   • Java  EE  Management  2.0  (JSR  373)   • JSON-­‐P  1.1  (JSR  374)   • Java  EE  Security  1.0  (JSR  375) So  far….. 66
  • 67. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   And  More  to  Follow… • JPA     • Bean  Validation   • JCache     • Connector  Architecture   • WebSocket   • Interceptors   • EJB   • JTA   • Batch   • Concurrency  Utilities     • JavaMail   • … 67
  • 68. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   Roadmap • Tentative  Delivery  Schedule   – Q3  2014:  Expert  Group  formed   – Q3  2015:  Early  Draft   – Q4  2015:  Public  Review   – Q2  2016:  Proposed  Final  Draft   – H1  2017:  Final  Release   • Contribute! 68
  • 69. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   How  to  Get  Involved • Join  an  Expert  Group   – http://javaee-­‐spec.java.net   • Adopt  a  JSR   – http://glassfish.org/adoptajsr   • The  Aquarium   – http://blogs.oracle.com/theaquarium   • Java  EE  Reference  Implementation   – http://glassfish.org 69
  • 70. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   Obrigado! 70
  • 71. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.