SlideShare a Scribd company logo
1 of 50
Download to read offline
@delabassee#JavaEE8
Adopt A JSR - Java EE 8
David Delabassee
@delabassee
Oracle
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
   @delabassee#JavaEE8
Agenda
• Java	
  EE	
  8	
  
• Adopt	
  JSON-­‐P	
  1.1	
  (JSR	
  374)	
  
• Adopt	
  MVC	
  1.0	
  (JSR	
  371)
2
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
   @delabassee#JavaEE8
Java	
  EE	
  8	
  Themes
• HTML5	
  /	
  Web	
  Tier	
  Enhancements	
  
• Ease	
  of	
  Development	
  
• Infrastructure	
  for	
  running	
  in	
  the	
  Cloud
3
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
   @delabassee#JavaEE8
Java	
  EE	
  8	
  Themes
• HTML5	
  /	
  Web	
  Tier	
  Enhancements	
  
• Ease	
  of	
  Development	
  
• Infrastructure	
  for	
  running	
  in	
  the	
  Cloud
4
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
   @delabassee#JavaEE8
HTML5	
  Support	
  /	
  Web	
  Tier	
  Enhancements
• JSON	
  Binding	
  
• JSON	
  Processing	
  enhancements	
  
• Server-­‐sent	
  Events	
  
• Action-­‐based	
  MVC	
  
• HTTP/2	
  support
5
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
   @delabassee#JavaEE8
HTML5	
  Support	
  /	
  Web	
  Tier	
  Enhancements
• JSON	
  Binding	
  
• JSON	
  Processing	
  enhancements	
  
• Server-­‐sent	
  Events	
  
• Action-­‐based	
  MVC	
  
• HTTP/2	
  support
6
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
   @delabassee#JavaEE8
Java	
  EE	
  8	
  Themes
• HTML5	
  /	
  Web	
  Tier	
  Enhancements	
  
• Ease	
  of	
  Development	
  
• Infrastructure	
  for	
  running	
  in	
  the	
  Cloud
7
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
   @delabassee#JavaEE8
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	
  
• …
8
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
   @delabassee#JavaEE8
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.	
   @delabassee#JavaEE8
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
10
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
   @delabassee#JavaEE8
Java	
  EE	
  8	
  JSRs
• MVC	
  1.0	
  (JSR	
  371)	
  *	
  	
  
• CDI	
  2.0	
  (JSR	
  365)	
  
• JSON-­‐P	
  1.1	
  (JSR	
  374)	
  	
  
• JSF	
  2.3	
  (JSR	
  372)	
  	
  
• Java	
  EE	
  Security	
  1.0	
  (JSR	
  375)	
  	
  
• JSON	
  Binding	
  1.0	
  (JSR	
  367)	
  
• JMS	
  2.1	
  (JSR	
  368)	
  	
  
• Java	
  Servlet	
  4.0	
  (JSR	
  369)	
  	
  
• JAX-­‐RS	
  2.1	
  (JSR	
  370)	
  
• Java	
  EE	
  Management	
  2.0	
  (JSR	
  373)	
  
• Java	
  EE	
  8	
  Platform	
  (JSR	
  366)
So	
  far…..
11
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
   @delabassee#JavaEE8
And	
  More	
  to	
  Follow…
• JCache	
  	
  
• Bean	
  Validation	
  
• JPA	
  
• Connector	
  Architecture	
  
• WebSocket	
  
• Interceptors	
  
• EJB	
  
• JTA	
  
• Batch	
  
• Concurrency	
  Utilities	
  	
  
• JavaMail	
  
• …
12
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
   @delabassee#JavaEE8
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!
13
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
   @delabassee#JavaEE8
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
14
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
   @delabassee#JavaEE8
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
15
JSR	
  374
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
   @delabassee#JavaEE8
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.	
   @delabassee#JavaEE8
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.	
   @delabassee#JavaEE8
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
18
	
  JsonPointer	
  pointer	
  =	
  new	
  JsonPointer("/0/name");	
  
	
  JsonArray	
  result	
  =	
  pointer.replace(contacts,	
  Json.createValue("Alex"));
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
   @delabassee#JavaEE8
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
19
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
   @delabassee#JavaEE8
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.	
   @delabassee#JavaEE8
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.	
   @delabassee#JavaEE8
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.	
   @delabassee#JavaEE8
	
  JsonArray	
  target	
  =	
  …;	
  
	
  JsonArray	
  patch	
  =	
  …;	
  
	
  	
  
	
  JsonPatch	
  jsonpatch	
  =	
  new	
  JsonPatch(patch);	
  
	
  JsonArray	
  result	
  =	
  jsonpatch.apply(target);
JSON-­‐P	
  1.1
23
	
  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.	
   @delabassee#JavaEE8
JSON-­‐P	
  1.1
{	
  
	
  	
  	
  	
  	
  "title":	
  "Hello!",	
  
	
  	
  	
  	
  	
  "phoneNumber":	
  "+01-­‐123-­‐456-­‐7890",	
  
	
  	
  	
  	
  	
  "author":	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "familyName":	
  null	
  
	
  	
  	
  	
  	
  	
  },	
  
	
  	
  	
  	
  	
  	
  "tags":	
  [	
  "example"	
  ]	
  
	
  }	
  
24
{	
  
	
  	
  	
  	
  "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.	
   @delabassee#JavaEE8
JSON-­‐P	
  1.1
• Reverse	
  operation	
  
– Given	
  two	
  objects	
  returns	
  the	
  patch	
  to	
  apply	
  (diff)	
  
JSON-­‐Patch	
  &	
  JSON-­‐Merge	
  Patch	
  Diff
25
JsonValue	
  output	
  =	
  JsonMergePatch.diff(original,	
  target);	
  
JsonArray	
  diff	
  =	
  JsonPatch.diff(original,	
  target);
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
   @delabassee#JavaEE8
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());
26
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
   @delabassee#JavaEE8
JSON-­‐P	
  1.1
Getting	
  Started
27
• JSR	
  374	
  
- https://json-­‐processing-­‐spec.java.net	
  
• JIRA	
  
- https://java.net/jira/browse/JSON_PROCESSING_SPEC	
  
• Repos	
  
- git://java.net/json-­‐processing-­‐spec~git	
  
- git://java.net/jsonp~git
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
   @delabassee#JavaEE8
JSON-­‐P	
  1.1
Getting	
  Started
28
• Build	
  the	
  standalone	
  RI	
  
- git://java.net/jsonp~git	
  
• Check	
  JSR374	
  tests	
  and	
  the	
  Javadocs	
  
- https://json-­‐processing-­‐spec.java.net/nonav/snapshots/1.1/javadocs/	
  
• Follow	
  the	
  EG	
  users	
  list	
  
- JSON	
  Big	
  Data
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.
Model-­‐View-­‐Controller	
  (MVC	
  1.0)	
  Specification
• “Action-­‐based”	
  MVC	
  1.0	
  JSR	
  
• Why?	
  
– UI	
  landscape	
  is	
  not	
  one	
  size	
  fits	
  all	
  	
  
– Java	
  EE	
  8	
  Community	
  Survey	
  
– Talking	
  to	
  our	
  customers,	
  etc.	
  
• EG	
  
– Oracle,	
  RedHat,	
  innoQ,	
  IBM,	
  Caelum,	
  LifeRay,	
  and	
  6	
  individuals	
  members
JSR	
  371
29
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
   @delabassee#JavaEE8
MVC	
  1.0
• Model	
  
– CDI,	
  Bean	
  Validation,	
  JPA	
  
• View	
  
– Facelets,	
  JSP,	
  SPI?	
  
• Controller	
  
– Invent	
  new	
  technology	
  Vs.	
  Leverage	
  existing	
  technologies?
30
Glues	
  together	
  key	
  Java	
  EE	
  technologies
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.
Controller
• Combine	
  data	
  models	
  and	
  views	
  to	
  produce	
  web	
  application	
  pages
@Path("hello")
public class HelloController {
@GET
@Controller
public String hello() {
return "hello.xhtml";
}
}
31
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.
Controller
• Class/method	
  decorated	
  with	
  @Controller
@Path(“hello")
@Controller
public class HelloController {
@GET
@View(“hello.ftl")
public void hello() {
}
}
32
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.
Controller
@Path(“hello")
@Controller
public class HelloController {
@GET
public Viewable hello() {
return new Viewable("hello.jsp");
}
}
33
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.
Controller
…
@GET
@Controller
public Response getById(@PathParam("id") String id) {
if (id.length() == 0) {
return Response.status(Response.Status.BAD_REQUEST)
.entity(“error.xhtml")
.build();
}
}
34
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.
Model
• “Refers	
  to	
  the	
  data”	
  
• javax.mvc.Models	
  interface	
  
• CDI	
  @Named	
  bean	
  (recommended)
35
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;
}
}
36
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.
Model
@Path(“hello”)
public class HelloController {
@Inject
private Models models;
@GET
@Controller
public String hello() {
models.put(“greeting”, new Greeting(“Hi JPrime”));
return “hello.ftl”;
}
}
37
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.
View
• Define	
  the	
  structure	
  of	
  the	
  output	
  
• Can	
  refer	
  to	
  model(s)	
  
• Rendered	
  by	
  a	
  View	
  Engine	
  
– JSP	
  
– Facelets	
  
• Not	
  accessible	
  as	
  static	
  resources	
  
– /WEB-­‐INF/views/	
  
38
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.
View
39
<?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 all</p>
</h:body>
</html>
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>${greeting.message}</p>
</body>
</html>
40
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.
View	
  Engine
• CDI	
  based	
  extension	
  mechanism	
  
• javax.mvc.engine.ViewEngine interface	
  
boolean supports(String view);
void processView(ViewEngineContext context)
throws ViewEngineException;
• Ozark	
  
– JSP	
  &	
  Facelets	
  
– FreeMarker,	
  Velocity,	
  Thymeleaf,	
  Mustache	
  &	
  Handlebars
41
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved. @delabassee#JavaEE8
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
42
	
  	
  	
  	
  	
  	
  Early	
  Draft	
  Review
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.
MVC	
  1.0
• JSR	
  371	
  
- http://mvc-­‐spec.java.net/	
  
- https://jcp.org/en/jsr/detail?id=371	
  
- https://java.net/jira/browse/MVC_SPEC	
  
- https://java.net/projects/mvc-­‐spec/lists/users/archive	
  
• Ozark	
  
- https://ozark.java.net	
  
- git://java.net/ozark~sources	
  +	
  https://github.com/spericas/ozark
Getting	
  Started
43
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.
MVC	
  1.0
• Docker	
  script	
  
- https://ozark.java.net/download.html	
  	
  
• Samples	
  
- http://<container-­‐ip>:8080/samples	
  
• GF	
  console	
  (admin/ozark)	
  
- http://<container-­‐ip>:4848
Getting	
  Started
44
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.
MVC	
  1.0
• GlassFish	
  4.1	
  nightly	
  
- http://dlc-­‐cdn.sun.com/glassfish/4.1/nightly/glassfish-­‐4.1-­‐
b14-­‐06_12_2015.zip	
  
• Bundle	
  Ozark	
  with	
  your	
  App	
  
• Maven	
  Central	
  
<groupId>javax.mvc</groupId>	
  
<artifactId>javax.mvc-­‐api</artifactId>	
  
<version>1.0-­‐edr1</version>
Getting	
  Started
45
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.
MVC	
  1.0
• Full	
  blown	
  samples	
  
• Additional	
  templating	
  engine	
  
• Logging,	
  monitoring,	
  i.e.	
  improving	
  event	
  mechanism	
  in	
  place	
  
• Internationalization/localization	
  
• …
Getting	
  Started
46
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
   @delabassee#JavaEE8
Devoxx	
  UK
• JCP,	
  Adopt-­‐a-­‐JSR	
  &	
  You	
  -­‐	
  Thursday	
  at	
  12:50	
  (Room	
  BC)	
  
• Java	
  EE	
  8,	
  a	
  snapshot	
  overview	
  -­‐	
  Thursday	
  at	
  11:50	
  (Auditorium)	
  
• Java	
  EE	
  Game	
  Changers	
  -­‐	
  Friday	
  at	
  10:00	
  (Room	
  A)	
  
• HTTP/2	
  comes	
  to	
  Java	
  -­‐	
  Friday	
  at	
  11:10	
  12:00	
  (Auditorium)	
  
• CDI	
  2.0:	
  what	
  is	
  in	
  the	
  work?	
  -­‐	
  Friday	
  at	
  15:00	
  (Auditorium)	
  
• Finally,	
  Security	
  API	
  JSR	
  375	
  -­‐	
  Friday	
  at	
  16:20	
  (Room	
  DEF)
47
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
Thanks!
48
Safe	
  Harbor	
  Statement
The	
  precding	
  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.	
  

More Related Content

What's hot

Java EE 8: On the Horizon
Java EE 8:  On the HorizonJava EE 8:  On the Horizon
Java EE 8: On the HorizonJosh Juneau
 
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
 
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
 
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
 
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
 
Finally, EE Security API JSR 375
Finally, EE Security API JSR 375Finally, EE Security API JSR 375
Finally, EE Security API JSR 375Alex Kosowski
 
Ed presents JSF 2.2 and WebSocket to Gameduell.
Ed presents JSF 2.2 and WebSocket to Gameduell.Ed presents JSF 2.2 and WebSocket to Gameduell.
Ed presents JSF 2.2 and WebSocket to Gameduell.Edward Burns
 
Servlet 4.0 at GeekOut 2015
Servlet 4.0 at GeekOut 2015Servlet 4.0 at GeekOut 2015
Servlet 4.0 at GeekOut 2015Edward Burns
 
JSF 2.2 Input Output JavaLand 2015
JSF 2.2 Input Output JavaLand 2015JSF 2.2 Input Output JavaLand 2015
JSF 2.2 Input Output 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
 
Testing Java EE Applications Using Arquillian
Testing Java EE Applications Using ArquillianTesting Java EE Applications Using Arquillian
Testing Java EE Applications Using ArquillianReza Rahman
 
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
 
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
 
Reactive Java EE - Let Me Count the Ways!
Reactive Java EE - Let Me Count the Ways!Reactive Java EE - Let Me Count the Ways!
Reactive Java EE - Let Me Count the Ways!Reza Rahman
 
GlassFish BOF
GlassFish BOFGlassFish BOF
GlassFish BOFglassfish
 

What's hot (18)

Java EE 8: On the Horizon
Java EE 8:  On the HorizonJava EE 8:  On the Horizon
Java EE 8: On the Horizon
 
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
 
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
 
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
 
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
 
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ć,...
 
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
 
Finally, EE Security API JSR 375
Finally, EE Security API JSR 375Finally, EE Security API JSR 375
Finally, EE Security API JSR 375
 
Ed presents JSF 2.2 and WebSocket to Gameduell.
Ed presents JSF 2.2 and WebSocket to Gameduell.Ed presents JSF 2.2 and WebSocket to Gameduell.
Ed presents JSF 2.2 and WebSocket to Gameduell.
 
Servlet 4.0 at GeekOut 2015
Servlet 4.0 at GeekOut 2015Servlet 4.0 at GeekOut 2015
Servlet 4.0 at GeekOut 2015
 
JSF 2.2 Input Output JavaLand 2015
JSF 2.2 Input Output JavaLand 2015JSF 2.2 Input Output JavaLand 2015
JSF 2.2 Input Output 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
 
Testing Java EE Applications Using Arquillian
Testing Java EE Applications Using ArquillianTesting Java EE Applications Using Arquillian
Testing Java EE Applications Using Arquillian
 
Have You Seen Java EE Lately?
Have You Seen Java EE Lately?Have You Seen Java EE Lately?
Have You Seen Java EE Lately?
 
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
 
JavaCro'15 - Java Cloud - Marin Tadić
JavaCro'15 - Java Cloud - Marin TadićJavaCro'15 - Java Cloud - Marin Tadić
JavaCro'15 - Java Cloud - Marin Tadić
 
Reactive Java EE - Let Me Count the Ways!
Reactive Java EE - Let Me Count the Ways!Reactive Java EE - Let Me Count the Ways!
Reactive Java EE - Let Me Count the Ways!
 
GlassFish BOF
GlassFish BOFGlassFish BOF
GlassFish BOF
 

Viewers also liked

Updates to the java api for json processing for java ee 8
Updates to the java api for json processing for java ee 8Updates to the java api for json processing for java ee 8
Updates to the java api for json processing for java ee 8Alex Soto
 
JSR 375 Segurança em Java EE 8
JSR 375 Segurança em Java EE 8JSR 375 Segurança em Java EE 8
JSR 375 Segurança em Java EE 8Helder da Rocha
 
Using RSS feeds for content curation and social scheduling
Using RSS feeds for content curation and social schedulingUsing RSS feeds for content curation and social scheduling
Using RSS feeds for content curation and social schedulingAnna Hamilton-Gunn
 
Participate in the Future of Java Oredev
Participate in the Future of Java OredevParticipate in the Future of Java Oredev
Participate in the Future of Java OredevHeather VanCura
 
How is Java / JVM built ? Back then and now...
How is Java / JVM built ? Back then and now...How is Java / JVM built ? Back then and now...
How is Java / JVM built ? Back then and now...Mani Sarkar
 
New MVC 1.0 JavaEE 8 API
New MVC 1.0 JavaEE 8 APINew MVC 1.0 JavaEE 8 API
New MVC 1.0 JavaEE 8 APITrayan Iliev
 
Gráficos Vetoriais na Web com SVG
Gráficos Vetoriais na Web com SVGGráficos Vetoriais na Web com SVG
Gráficos Vetoriais na Web com SVGHelder da Rocha
 
JavaOne 2016 :: Bringing Robot online with Robo4j Framework
JavaOne 2016 :: Bringing Robot online with Robo4j FrameworkJavaOne 2016 :: Bringing Robot online with Robo4j Framework
JavaOne 2016 :: Bringing Robot online with Robo4j FrameworkMiro Wengner
 
Top 10 Ways to Ally for Women in Technology
Top 10 Ways to Ally for Women in TechnologyTop 10 Ways to Ally for Women in Technology
Top 10 Ways to Ally for Women in TechnologyHeather VanCura
 
2016 JCP Year End Summary
2016 JCP Year End Summary2016 JCP Year End Summary
2016 JCP Year End SummaryHeather VanCura
 
Adopt-a-JSR session (JSON-B/P)
Adopt-a-JSR session (JSON-B/P)Adopt-a-JSR session (JSON-B/P)
Adopt-a-JSR session (JSON-B/P)Dmitry Kornilov
 
Java EE 8 Recipes
Java EE 8 RecipesJava EE 8 Recipes
Java EE 8 RecipesJosh Juneau
 
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 8 Web Frameworks: A Look at JSF vs MVC
Java EE 8 Web Frameworks: A Look at JSF vs MVCJava EE 8 Web Frameworks: A Look at JSF vs MVC
Java EE 8 Web Frameworks: A Look at JSF vs MVCJosh Juneau
 
Padrão Arquitetural MVC e suas aplicações para WEB
Padrão Arquitetural MVC e suas aplicações para WEBPadrão Arquitetural MVC e suas aplicações para WEB
Padrão Arquitetural MVC e suas aplicações para WEBRafael França
 
The Tragedy of Bias in Technical Hiring in Five Acts (Grace Hopper 2014)
The Tragedy of Bias in Technical Hiring in Five Acts (Grace Hopper 2014)The Tragedy of Bias in Technical Hiring in Five Acts (Grace Hopper 2014)
The Tragedy of Bias in Technical Hiring in Five Acts (Grace Hopper 2014)Kelsey Anderson Foley
 

Viewers also liked (20)

Updates to the java api for json processing for java ee 8
Updates to the java api for json processing for java ee 8Updates to the java api for json processing for java ee 8
Updates to the java api for json processing for java ee 8
 
HTML5 Media Elements
HTML5 Media ElementsHTML5 Media Elements
HTML5 Media Elements
 
JSR 375 Segurança em Java EE 8
JSR 375 Segurança em Java EE 8JSR 375 Segurança em Java EE 8
JSR 375 Segurança em Java EE 8
 
Using RSS feeds for content curation and social scheduling
Using RSS feeds for content curation and social schedulingUsing RSS feeds for content curation and social scheduling
Using RSS feeds for content curation and social scheduling
 
Participate in the Future of Java Oredev
Participate in the Future of Java OredevParticipate in the Future of Java Oredev
Participate in the Future of Java Oredev
 
How is Java / JVM built ? Back then and now...
How is Java / JVM built ? Back then and now...How is Java / JVM built ? Back then and now...
How is Java / JVM built ? Back then and now...
 
How to run a hackday
How to run a hackdayHow to run a hackday
How to run a hackday
 
New MVC 1.0 JavaEE 8 API
New MVC 1.0 JavaEE 8 APINew MVC 1.0 JavaEE 8 API
New MVC 1.0 JavaEE 8 API
 
Gráficos Vetoriais na Web com SVG
Gráficos Vetoriais na Web com SVGGráficos Vetoriais na Web com SVG
Gráficos Vetoriais na Web com SVG
 
Adopt a JSR: CDI 2.0 at Devoxx UK
Adopt a JSR: CDI 2.0 at Devoxx UKAdopt a JSR: CDI 2.0 at Devoxx UK
Adopt a JSR: CDI 2.0 at Devoxx UK
 
Reactive android
Reactive androidReactive android
Reactive android
 
JavaOne 2016 :: Bringing Robot online with Robo4j Framework
JavaOne 2016 :: Bringing Robot online with Robo4j FrameworkJavaOne 2016 :: Bringing Robot online with Robo4j Framework
JavaOne 2016 :: Bringing Robot online with Robo4j Framework
 
Top 10 Ways to Ally for Women in Technology
Top 10 Ways to Ally for Women in TechnologyTop 10 Ways to Ally for Women in Technology
Top 10 Ways to Ally for Women in Technology
 
2016 JCP Year End Summary
2016 JCP Year End Summary2016 JCP Year End Summary
2016 JCP Year End Summary
 
Adopt-a-JSR session (JSON-B/P)
Adopt-a-JSR session (JSON-B/P)Adopt-a-JSR session (JSON-B/P)
Adopt-a-JSR session (JSON-B/P)
 
Java EE 8 Recipes
Java EE 8 RecipesJava EE 8 Recipes
Java EE 8 Recipes
 
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 8 Web Frameworks: A Look at JSF vs MVC
Java EE 8 Web Frameworks: A Look at JSF vs MVCJava EE 8 Web Frameworks: A Look at JSF vs MVC
Java EE 8 Web Frameworks: A Look at JSF vs MVC
 
Padrão Arquitetural MVC e suas aplicações para WEB
Padrão Arquitetural MVC e suas aplicações para WEBPadrão Arquitetural MVC e suas aplicações para WEB
Padrão Arquitetural MVC e suas aplicações para WEB
 
The Tragedy of Bias in Technical Hiring in Five Acts (Grace Hopper 2014)
The Tragedy of Bias in Technical Hiring in Five Acts (Grace Hopper 2014)The Tragedy of Bias in Technical Hiring in Five Acts (Grace Hopper 2014)
The Tragedy of Bias in Technical Hiring in Five Acts (Grace Hopper 2014)
 

Similar to Java EE 8: Adopting JSON-P 1.1 and MVC 1.0

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
 
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
 
112815 java ee8_davidd
112815 java ee8_davidd112815 java ee8_davidd
112815 java ee8_daviddTakashi Ito
 
Java EE7 in action
Java EE7 in actionJava EE7 in action
Java EE7 in actionAnkara JUG
 
JavaOne 2014 Java EE 8 Booth Slides
JavaOne 2014 Java EE 8 Booth SlidesJavaOne 2014 Java EE 8 Booth Slides
JavaOne 2014 Java EE 8 Booth SlidesEdward Burns
 
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 - An instant snapshot
Java EE 8 - An instant snapshotJava EE 8 - An instant snapshot
Java EE 8 - An instant snapshotDavid 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
 
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
 
JavaOne2015フィードバック @ 富山合同勉強会
JavaOne2015フィードバック @ 富山合同勉強会JavaOne2015フィードバック @ 富山合同勉強会
JavaOne2015フィードバック @ 富山合同勉強会Takashi Ito
 
Java EE 7 for WebLogic 12c Developers
Java EE 7 for WebLogic 12c DevelopersJava EE 7 for WebLogic 12c Developers
Java EE 7 for WebLogic 12c DevelopersBruno Borges
 
Java EE 8 Overview (Japanese)
Java EE 8 Overview (Japanese)Java EE 8 Overview (Japanese)
Java EE 8 Overview (Japanese)Logico
 
JavaOne2015報告会 in Okinawa
JavaOne2015報告会 in OkinawaJavaOne2015報告会 in Okinawa
JavaOne2015報告会 in OkinawaTakashi Ito
 
EE4J: Java EE & Jakarta EE JFR & JMC
EE4J: Java EE & Jakarta EE  JFR & JMCEE4J: Java EE & Jakarta EE  JFR & JMC
EE4J: Java EE & Jakarta EE JFR & JMCM. Fevzi Korkutata
 
Java: Create The Future Keynote
Java: Create The Future KeynoteJava: Create The Future Keynote
Java: Create The Future KeynoteSimon Ritter
 
Enterprise java unit-1_chapter-1
Enterprise java unit-1_chapter-1Enterprise java unit-1_chapter-1
Enterprise java unit-1_chapter-1sandeep54552
 
Servlet 4.0 Adopt-a-JSR 10 Minute Infodeck
Servlet 4.0 Adopt-a-JSR 10 Minute InfodeckServlet 4.0 Adopt-a-JSR 10 Minute Infodeck
Servlet 4.0 Adopt-a-JSR 10 Minute InfodeckEdward Burns
 

Similar to Java EE 8: Adopting JSON-P 1.1 and MVC 1.0 (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
 
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
 
112815 java ee8_davidd
112815 java ee8_davidd112815 java ee8_davidd
112815 java ee8_davidd
 
Java EE7 in action
Java EE7 in actionJava EE7 in action
Java EE7 in action
 
JSON-B for CZJUG
JSON-B for CZJUGJSON-B for CZJUG
JSON-B for CZJUG
 
JavaOne 2014 Java EE 8 Booth Slides
JavaOne 2014 Java EE 8 Booth SlidesJavaOne 2014 Java EE 8 Booth Slides
JavaOne 2014 Java EE 8 Booth Slides
 
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
 
JAX-RS.next
JAX-RS.nextJAX-RS.next
JAX-RS.next
 
Java EE for the Cloud
Java EE for the CloudJava EE for the Cloud
Java EE for the Cloud
 
Java EE 8 - An instant snapshot
Java EE 8 - An instant snapshotJava EE 8 - An instant snapshot
Java EE 8 - An instant snapshot
 
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
 
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
 
JavaOne2015フィードバック @ 富山合同勉強会
JavaOne2015フィードバック @ 富山合同勉強会JavaOne2015フィードバック @ 富山合同勉強会
JavaOne2015フィードバック @ 富山合同勉強会
 
Java EE 7 for WebLogic 12c Developers
Java EE 7 for WebLogic 12c DevelopersJava EE 7 for WebLogic 12c Developers
Java EE 7 for WebLogic 12c Developers
 
Java EE 8 Overview (Japanese)
Java EE 8 Overview (Japanese)Java EE 8 Overview (Japanese)
Java EE 8 Overview (Japanese)
 
JavaOne2015報告会 in Okinawa
JavaOne2015報告会 in OkinawaJavaOne2015報告会 in Okinawa
JavaOne2015報告会 in Okinawa
 
EE4J: Java EE & Jakarta EE JFR & JMC
EE4J: Java EE & Jakarta EE  JFR & JMCEE4J: Java EE & Jakarta EE  JFR & JMC
EE4J: Java EE & Jakarta EE JFR & JMC
 
Java: Create The Future Keynote
Java: Create The Future KeynoteJava: Create The Future Keynote
Java: Create The Future Keynote
 
Enterprise java unit-1_chapter-1
Enterprise java unit-1_chapter-1Enterprise java unit-1_chapter-1
Enterprise java unit-1_chapter-1
 
Servlet 4.0 Adopt-a-JSR 10 Minute Infodeck
Servlet 4.0 Adopt-a-JSR 10 Minute InfodeckServlet 4.0 Adopt-a-JSR 10 Minute Infodeck
Servlet 4.0 Adopt-a-JSR 10 Minute Infodeck
 

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 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
 
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
 
Project Avatar (Lyon JUG & Alpes JUG - March 2014)
Project Avatar (Lyon JUG & Alpes JUG  - March 2014)Project Avatar (Lyon JUG & Alpes JUG  - March 2014)
Project Avatar (Lyon JUG & Alpes JUG - March 2014)David Delabassee
 
Java EE 7 (Lyon JUG & Alpes JUG - March 2014)
Java EE 7 (Lyon JUG & Alpes JUG  - March 2014)Java EE 7 (Lyon JUG & Alpes JUG  - March 2014)
Java EE 7 (Lyon JUG & Alpes JUG - March 2014)David 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 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
 
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
 
Project Avatar (Lyon JUG & Alpes JUG - March 2014)
Project Avatar (Lyon JUG & Alpes JUG  - March 2014)Project Avatar (Lyon JUG & Alpes JUG  - March 2014)
Project Avatar (Lyon JUG & Alpes JUG - March 2014)
 
Java EE 7 (Lyon JUG & Alpes JUG - March 2014)
Java EE 7 (Lyon JUG & Alpes JUG  - March 2014)Java EE 7 (Lyon JUG & Alpes JUG  - March 2014)
Java EE 7 (Lyon JUG & Alpes JUG - March 2014)
 

Recently uploaded

Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
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
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkPixlogix Infotech
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
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
 
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
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
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
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructureitnewsafrica
 
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
 
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
 
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
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesBernd Ruecker
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...itnewsafrica
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
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
 

Recently uploaded (20)

Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
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
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App Framework
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
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
 
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
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
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
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
 
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
 
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
 
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...
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architectures
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
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
 

Java EE 8: Adopting JSON-P 1.1 and MVC 1.0

  • 1. @delabassee#JavaEE8 Adopt A JSR - Java EE 8 David Delabassee @delabassee Oracle
  • 2. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   @delabassee#JavaEE8 Agenda • Java  EE  8   • Adopt  JSON-­‐P  1.1  (JSR  374)   • Adopt  MVC  1.0  (JSR  371) 2
  • 3. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   @delabassee#JavaEE8 Java  EE  8  Themes • HTML5  /  Web  Tier  Enhancements   • Ease  of  Development   • Infrastructure  for  running  in  the  Cloud 3
  • 4. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   @delabassee#JavaEE8 Java  EE  8  Themes • HTML5  /  Web  Tier  Enhancements   • Ease  of  Development   • Infrastructure  for  running  in  the  Cloud 4
  • 5. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   @delabassee#JavaEE8 HTML5  Support  /  Web  Tier  Enhancements • JSON  Binding   • JSON  Processing  enhancements   • Server-­‐sent  Events   • Action-­‐based  MVC   • HTTP/2  support 5
  • 6. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   @delabassee#JavaEE8 HTML5  Support  /  Web  Tier  Enhancements • JSON  Binding   • JSON  Processing  enhancements   • Server-­‐sent  Events   • Action-­‐based  MVC   • HTTP/2  support 6
  • 7. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   @delabassee#JavaEE8 Java  EE  8  Themes • HTML5  /  Web  Tier  Enhancements   • Ease  of  Development   • Infrastructure  for  running  in  the  Cloud 7
  • 8. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   @delabassee#JavaEE8 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   • … 8
  • 9. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   @delabassee#JavaEE8 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.   @delabassee#JavaEE8 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 10
  • 11. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   @delabassee#JavaEE8 Java  EE  8  JSRs • MVC  1.0  (JSR  371)  *     • CDI  2.0  (JSR  365)   • JSON-­‐P  1.1  (JSR  374)     • JSF  2.3  (JSR  372)     • Java  EE  Security  1.0  (JSR  375)     • JSON  Binding  1.0  (JSR  367)   • JMS  2.1  (JSR  368)     • Java  Servlet  4.0  (JSR  369)     • JAX-­‐RS  2.1  (JSR  370)   • Java  EE  Management  2.0  (JSR  373)   • Java  EE  8  Platform  (JSR  366) So  far….. 11
  • 12. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   @delabassee#JavaEE8 And  More  to  Follow… • JCache     • Bean  Validation   • JPA   • Connector  Architecture   • WebSocket   • Interceptors   • EJB   • JTA   • Batch   • Concurrency  Utilities     • JavaMail   • … 12
  • 13. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   @delabassee#JavaEE8 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! 13
  • 14. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   @delabassee#JavaEE8 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 14
  • 15. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   @delabassee#JavaEE8 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 15 JSR  374
  • 16. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   @delabassee#JavaEE8 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.   @delabassee#JavaEE8 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.   @delabassee#JavaEE8 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 18  JsonPointer  pointer  =  new  JsonPointer("/0/name");    JsonArray  result  =  pointer.replace(contacts,  Json.createValue("Alex"));
  • 19. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   @delabassee#JavaEE8 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 19
  • 20. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   @delabassee#JavaEE8 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.   @delabassee#JavaEE8 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.   @delabassee#JavaEE8 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.   @delabassee#JavaEE8  JsonArray  target  =  …;    JsonArray  patch  =  …;        JsonPatch  jsonpatch  =  new  JsonPatch(patch);    JsonArray  result  =  jsonpatch.apply(target); JSON-­‐P  1.1 23  JsonPatchBuilder  builder  =  new  JsonPatchBuilder();    JsonArray  result  =  builder.add("/Joe/phones/office",  "1234-­‐567")                                                        .remove("/Amy/age")                                                        .apply(contacts);
  • 24. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   @delabassee#JavaEE8 JSON-­‐P  1.1 {            "title":  "Hello!",            "phoneNumber":  "+01-­‐123-­‐456-­‐7890",            "author":  {                          "familyName":  null              },              "tags":  [  "example"  ]    }   24 {          "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.   @delabassee#JavaEE8 JSON-­‐P  1.1 • Reverse  operation   – Given  two  objects  returns  the  patch  to  apply  (diff)   JSON-­‐Patch  &  JSON-­‐Merge  Patch  Diff 25 JsonValue  output  =  JsonMergePatch.diff(original,  target);   JsonArray  diff  =  JsonPatch.diff(original,  target);
  • 26. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   @delabassee#JavaEE8 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()); 26
  • 27. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   @delabassee#JavaEE8 JSON-­‐P  1.1 Getting  Started 27 • JSR  374   - https://json-­‐processing-­‐spec.java.net   • JIRA   - https://java.net/jira/browse/JSON_PROCESSING_SPEC   • Repos   - git://java.net/json-­‐processing-­‐spec~git   - git://java.net/jsonp~git
  • 28. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   @delabassee#JavaEE8 JSON-­‐P  1.1 Getting  Started 28 • Build  the  standalone  RI   - git://java.net/jsonp~git   • Check  JSR374  tests  and  the  Javadocs   - https://json-­‐processing-­‐spec.java.net/nonav/snapshots/1.1/javadocs/   • Follow  the  EG  users  list   - JSON  Big  Data
  • 29. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. Model-­‐View-­‐Controller  (MVC  1.0)  Specification • “Action-­‐based”  MVC  1.0  JSR   • Why?   – UI  landscape  is  not  one  size  fits  all     – Java  EE  8  Community  Survey   – Talking  to  our  customers,  etc.   • EG   – Oracle,  RedHat,  innoQ,  IBM,  Caelum,  LifeRay,  and  6  individuals  members JSR  371 29
  • 30. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   @delabassee#JavaEE8 MVC  1.0 • Model   – CDI,  Bean  Validation,  JPA   • View   – Facelets,  JSP,  SPI?   • Controller   – Invent  new  technology  Vs.  Leverage  existing  technologies? 30 Glues  together  key  Java  EE  technologies
  • 31. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. Controller • Combine  data  models  and  views  to  produce  web  application  pages @Path("hello") public class HelloController { @GET @Controller public String hello() { return "hello.xhtml"; } } 31
  • 32. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. Controller • Class/method  decorated  with  @Controller @Path(“hello") @Controller public class HelloController { @GET @View(“hello.ftl") public void hello() { } } 32
  • 33. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. Controller @Path(“hello") @Controller public class HelloController { @GET public Viewable hello() { return new Viewable("hello.jsp"); } } 33
  • 34. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. Controller … @GET @Controller public Response getById(@PathParam("id") String id) { if (id.length() == 0) { return Response.status(Response.Status.BAD_REQUEST) .entity(“error.xhtml") .build(); } } 34
  • 35. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. Model • “Refers  to  the  data”   • javax.mvc.Models  interface   • CDI  @Named  bean  (recommended) 35
  • 36. 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; } } 36
  • 37. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. Model @Path(“hello”) public class HelloController { @Inject private Models models; @GET @Controller public String hello() { models.put(“greeting”, new Greeting(“Hi JPrime”)); return “hello.ftl”; } } 37
  • 38. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. View • Define  the  structure  of  the  output   • Can  refer  to  model(s)   • Rendered  by  a  View  Engine   – JSP   – Facelets   • Not  accessible  as  static  resources   – /WEB-­‐INF/views/   38
  • 39. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. View 39 <?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 all</p> </h:body> </html>
  • 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>${greeting.message}</p> </body> </html> 40
  • 41. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. View  Engine • CDI  based  extension  mechanism   • javax.mvc.engine.ViewEngine interface   boolean supports(String view); void processView(ViewEngineContext context) throws ViewEngineException; • Ozark   – JSP  &  Facelets   – FreeMarker,  Velocity,  Thymeleaf,  Mustache  &  Handlebars 41
  • 42. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. @delabassee#JavaEE8 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 42            Early  Draft  Review
  • 43. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. MVC  1.0 • JSR  371   - http://mvc-­‐spec.java.net/   - https://jcp.org/en/jsr/detail?id=371   - https://java.net/jira/browse/MVC_SPEC   - https://java.net/projects/mvc-­‐spec/lists/users/archive   • Ozark   - https://ozark.java.net   - git://java.net/ozark~sources  +  https://github.com/spericas/ozark Getting  Started 43
  • 44. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. MVC  1.0 • Docker  script   - https://ozark.java.net/download.html     • Samples   - http://<container-­‐ip>:8080/samples   • GF  console  (admin/ozark)   - http://<container-­‐ip>:4848 Getting  Started 44
  • 45. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. MVC  1.0 • GlassFish  4.1  nightly   - http://dlc-­‐cdn.sun.com/glassfish/4.1/nightly/glassfish-­‐4.1-­‐ b14-­‐06_12_2015.zip   • Bundle  Ozark  with  your  App   • Maven  Central   <groupId>javax.mvc</groupId>   <artifactId>javax.mvc-­‐api</artifactId>   <version>1.0-­‐edr1</version> Getting  Started 45
  • 46. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. MVC  1.0 • Full  blown  samples   • Additional  templating  engine   • Logging,  monitoring,  i.e.  improving  event  mechanism  in  place   • Internationalization/localization   • … Getting  Started 46
  • 47. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   @delabassee#JavaEE8 Devoxx  UK • JCP,  Adopt-­‐a-­‐JSR  &  You  -­‐  Thursday  at  12:50  (Room  BC)   • Java  EE  8,  a  snapshot  overview  -­‐  Thursday  at  11:50  (Auditorium)   • Java  EE  Game  Changers  -­‐  Friday  at  10:00  (Room  A)   • HTTP/2  comes  to  Java  -­‐  Friday  at  11:10  12:00  (Auditorium)   • CDI  2.0:  what  is  in  the  work?  -­‐  Friday  at  15:00  (Auditorium)   • Finally,  Security  API  JSR  375  -­‐  Friday  at  16:20  (Room  DEF) 47
  • 48. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   Thanks! 48
  • 49. Safe  Harbor  Statement The  precding  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.  
  • 50. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.