SlideShare ist ein Scribd-Unternehmen logo
1 von 68
Downloaden Sie, um offline zu lesen
David	
  Delabassee	
  -­‐	
  @delabassee	
  
Oracle
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  
Java	
  EE	
  8
1
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
Agenda
How	
  did	
  we	
  get	
  here?	
  
What	
  do	
  we	
  want	
  to	
  do?	
  
How	
  can	
  you	
  get	
  involved?
1
2
3
Preview	
  of	
  Java	
  EE	
  8
Safe	
  Harbor	
  Statement
The	
  following	
  is	
  intended	
  to	
  outline	
  our	
  general	
  product	
  direction.	
  It	
  is	
  intended	
  for	
  
information	
  purposes	
  only,	
  and	
  may	
  not	
  be	
  incorporated	
  into	
  any	
  contract.	
  It	
  is	
  not	
  a	
  
commitment	
  to	
  deliver	
  any	
  material,	
  code,	
  or	
  functionality,	
  and	
  should	
  not	
  be	
  relied	
  upon	
  
in	
  making	
  purchasing	
  decisions.	
  The	
  development,	
  release,	
  and	
  timing	
  of	
  any	
  features	
  or	
  
functionality	
  described	
  for	
  Oracle’s	
  products	
  remains	
  at	
  the	
  sole	
  discretion	
  of	
  Oracle.
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
   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	
  2013	
  Java	
  EE	
  BOF	
  and	
  Java	
  EE	
  EG	
  meeting	
  
– Outreach	
  by	
  evangelists	
  
• Consolidated	
  into	
  Community	
  Survey
6
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
Java	
  EE	
  8	
  Community	
  Survey
• 3	
  parts	
  over	
  3½	
  months	
  
– 47	
  questions	
  
– 15	
  fill-­‐ins	
  
– 1000’s	
  of	
  comments	
  
• 4500+	
  respondents	
  
• Prioritization	
  of	
  most-­‐popular	
  features
7
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
   8
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
Community-­‐Prioritized	
  Features
9
http://glassfish.org/survey
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  You	
  asked	
  for	
  it,	
  you	
  got	
  it!
10
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
11
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
Java	
  EE	
  8	
  Themes
• HTML5	
  /	
  Web	
  Tier	
  Enhancements	
  
• Ease	
  of	
  Development	
  
• Infrastructure	
  for	
  running	
  in	
  the	
  Cloud
12
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
HTML5	
  Support	
  /	
  Web	
  Tier	
  Enhancements
• JSON	
  Binding	
  
• JSON	
  Processing	
  enhancements	
  
• Server-­‐sent	
  Events	
  
• Action-­‐based	
  MVC	
  
• HTTP/2	
  support
13
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
JSON-­‐B
• API	
  to	
  marshal/unmarshal	
  Java	
  objects	
  to/from	
  JSON	
  
– Similar	
  to	
  JAXB	
  runtime	
  API	
  in	
  XML	
  world	
  
• Default	
  mapping	
  of	
  classes	
  to	
  JSON	
  
– Annotations	
  to	
  customize	
  the	
  default	
  mappings	
  
– JsonProperty,	
  JsonTransient,	
  JsonNillable,	
  JsonValue,	
  …
Java	
  API	
  for	
  JSON	
  Binding
14
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
JSON-­‐B
• Draw	
  from	
  best	
  practices	
  of	
  existing	
  JSON	
  binding	
  implementations	
  
– Jackson,	
  Genson,	
  EclipseLink	
  MOXy,	
  Fleece,	
  JSON-­‐lib,	
  Gson,	
  Flexjson,	
  Json-­‐io,	
  
JSONiJ,	
  Johnzon,	
  Xstream,	
  etc.	
  
• Switch	
  JSON	
  binding	
  providers	
  
• Implementations	
  compete	
  on	
  common	
  ground
Standard	
  API
15
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
JSON-­‐B
@Entity	
  public	
  class	
  Person	
  {	
  
	
  	
  @Id	
  String	
  name;	
  
	
  	
  String	
  gender;	
  
	
  	
  @ElementCollection	
  Map<String,String>	
  phones;	
  
	
  	
  ...	
  //	
  getters	
  and	
  setters	
  
}	
  
Person	
  duke	
  =	
  new	
  Person();	
  
duke.setName("Duke");	
  
duke.setGender("M");	
  
phones	
  =	
  new	
  HashMap<String,String>();	
  
phones.put("home",	
  "650-­‐123-­‐4567");	
  
phones.put("mobile",	
  "650-­‐234-­‐5678");	
  
duke.setPhones(phones);	
  
Marshaller	
  marshaller	
  =	
  new	
  JsonContext().createMarshaller().setPrettyPrinting(true);	
  
marshaller.marshal(duke,	
  System.out);
	
  	
  {	
  
	
  	
  	
  	
  "name":"Duke",	
  
	
  	
  	
  	
  "gender":"M",	
  
	
  	
  	
  	
  "phones":{	
  
	
  	
  	
  	
  	
  	
  	
  "home":"650-­‐123-­‐4567",	
  
	
  	
  	
  	
  	
  	
  	
  "mobile":"650-­‐234-­‐5678"}	
  
	
  	
  }	
  
	
  	
  
16
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
• All	
  the	
  way	
  from	
  client	
  to	
  database	
  
– JSON-­‐B	
  will	
  provide	
  JAX-­‐RS	
  a	
  standard	
  way	
  to	
  support	
  “application/json”	
  media	
  type
JSON-­‐B
JPA JSON-­‐B
Data	
  
Source
JSON
JAX-­‐RS
Java	
  Objects
17
JSR	
  367
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
JSON-­‐P	
  1.1
Java	
  API	
  for	
  JSON	
  Processing
18
• Keep	
  JSON-­‐P	
  spec	
  up-­‐to-­‐date	
  
• Track	
  new	
  standards	
  
• Add	
  editing	
  operations	
  to	
  JsonObject	
  and	
  JsonArray	
  
• Java	
  SE	
  8	
  
• JSON	
  Big	
  Data
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
JSON-­‐P:	
  Java	
  API	
  for	
  JSON	
  Processing	
  1.1
• String	
  syntax	
  for	
  referencing	
  a	
  JSON	
  value	
  
	
   "/0/phone/mobile"
JSON-­‐Pointer	
  –	
  IETF	
  RFC	
  6901
19
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
JSON-­‐P	
  1.1
JsonArray	
  contacts	
  =	
  …	
  
JsonPointer	
  p	
  =	
  Json.createPointer("/0/phones/mobile");	
  
JsonValue	
  v	
  =	
  p.getValue(contacts);	
  
[	
  
	
  {	
  
	
  	
  	
  	
  "name":"Duke",	
  
	
  	
  	
  	
  "gender":"M",	
  
	
  	
  	
  	
  "phones":{	
  
	
  	
  	
  	
  	
  	
  	
  "home":"650-­‐123-­‐4567",	
  
	
  	
  	
  	
  	
  	
  	
  "mobile":"650-­‐234-­‐5678"}},	
  
	
  	
  {	
  
	
  	
  	
  	
  "name":"Jane",	
  
	
  	
  	
  	
  "gender":"F",	
  
	
  	
  	
  	
  "phones":{	
  
	
  	
  	
  	
  	
  	
  	
  "mobile":"707-­‐555-­‐9999"}}	
  
]	
  
	
  	
  
20
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
JSON-­‐P:	
  Java	
  API	
  for	
  JSON	
  Processing	
  1.1
• String	
  syntax	
  for	
  referencing	
  a	
  JSON	
  value	
  
	
   “/0/phone/mobile"	
  
• Methods	
  
– getValue()	
  
– JSON	
  Patch	
  operations:	
  add(),	
  replace(),	
  remove(),	
  move(),	
  copy(),	
  test()
JSON-­‐Pointer	
  –	
  IETF	
  RFC	
  6901
21
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
JSON-­‐P	
  1.1
• Patch	
  is	
  a	
  JSON	
  document	
  
– Array	
  of	
  objects	
  /	
  operations	
  for	
  modifying	
  a	
  JSON	
  document	
  
– add,	
  replace,	
  remove,	
  move,	
  copy,	
  test	
  
	
  	
  	
  [	
  
	
  	
  	
  {"op":"replace","path":"/0/phones/mobile","value":"650-­‐111-­‐222"},	
  
	
  	
  	
  {"op":"remove","path":"/1"}	
  
	
  ]	
  
– apply	
  Vs.	
  diff
JSON-­‐Patch	
  –	
  IETF	
  RFC	
  6902
22
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
JSON-­‐P	
  1.1
[	
  
	
  {	
  
	
  	
  "op":"replace",	
  
	
  	
  "path":"/0/phones/mobile",	
  
	
  	
  "value":"650-­‐111-­‐2222"},	
  
	
  {	
  
	
  	
  "op":"remove",	
  
	
  	
  "path":"/1"}	
  
]
[	
  
	
  {	
  
	
  	
  	
  	
  "name":"Duke",	
  
	
  	
  	
  	
  "gender":"M",	
  
	
  	
  	
  	
  "phones":{	
  
	
  	
  	
  	
  	
  	
  	
  "home":"650-­‐123-­‐4567",	
  
	
  	
  	
  	
  	
  	
  	
  "mobile":"650-­‐234-­‐5678"}},	
  
	
  	
  {	
  
	
  	
  	
  	
  "name":"Jane",	
  
	
  	
  	
  	
  "gender":"F",	
  
	
  	
  	
  	
  "phones":{	
  
	
  	
  	
  	
  	
  	
  	
  "mobile":"707-­‐555-­‐9999"}}	
  
]	
  
	
  	
  
23
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
JSON-­‐P	
  1.1
[	
  
	
  {	
  
	
  	
  "op":"replace",	
  
	
  	
  "path":"/0/phones/mobile",	
  
	
  	
  "value":"650-­‐111-­‐2222"},	
  
	
  {	
  
	
  	
  "op":"remove",	
  
	
  	
  "path":"/1"}	
  
]
[	
  
	
  {	
  
	
  	
  	
  	
  "name":"Duke",	
  
	
  	
  	
  	
  "gender":"M",	
  
	
  	
  	
  	
  "phones":{	
  
	
  	
  	
  	
  	
  	
  	
  "home":"650-­‐123-­‐4567",	
  
	
  	
  	
  	
  	
  	
  	
  "mobile":"650-­‐111-­‐2222"}},	
  
	
  	
  {	
  
	
  	
  	
  	
  "name":"Jane",	
  
	
  	
  	
  	
  "gender":"F",	
  
	
  	
  	
  	
  "phones":{	
  
	
  	
  	
  	
  	
  	
  	
  "mobile":"707-­‐555-­‐9999"}}	
  
]	
  
	
  	
  
24
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
JSON-­‐P	
  1.1
[	
  
	
  {	
  
	
  	
  "op":"replace",	
  
	
  	
  "path":"/0/phones/mobile",	
  
	
  	
  "value":"650-­‐111-­‐2222"},	
  
	
  {	
  
	
  	
  "op":"remove",	
  
	
  	
  "path":"/1"}	
  
]
[	
  
	
  {	
  
	
  	
  	
  	
  "name":"Duke",	
  
	
  	
  	
  	
  "gender":"M",	
  
	
  	
  	
  	
  "phones":{	
  
	
  	
  	
  	
  	
  	
  	
  "home":"650-­‐123-­‐4567",	
  
	
  	
  	
  	
  	
  	
  	
  "mobile":"650-­‐111-­‐2222"}}	
  
]	
  
	
  	
  
25
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
JSON-­‐P	
  1.1
JSON	
  Query	
  using	
  Lambda	
  Operations
JsonArray	
  contacts	
  =	
  ...;	
  
List<String>	
  femaleNames	
  =	
  contacts.getValuesAs(JsonObject.class).stream()	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  .filter(x-­‐>"F".equals(x.getString("gender")))	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  .map(x-­‐>(x.getString("name"))	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  .collect(Collectors.toList());
26
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
JSON-­‐P	
  1.1
JSON	
  Query	
  collecting	
  results	
  in	
  JsonArray
JsonArray	
  contacts	
  =	
  ...;	
  
JsonArray	
  femaleNames	
  =	
  contacts.getValuesAs(JsonObject.class).stream()	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  .filter(x-­‐>"F".equals(x.getString("gender")))	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  .map(x-­‐>(x.getString("name"))	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  .collect(JsonCollectors.toJsonArray());
27
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
JSON-­‐P	
  1.1
• Keep	
  JSON-­‐P	
  spec	
  up-­‐to-­‐date	
  
• Track	
  new	
  standards	
  
• Add	
  editing	
  operations	
  to	
  JsonObject	
  and	
  JsonArray	
  
• Java	
  SE	
  8	
  
• JSON	
  Big	
  Data
28
JSR	
  374
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
Server-­‐sent	
  Events
Should	
  we	
  also	
  standardize	
  a	
  Java	
  API	
  for	
  server-­‐sent	
  events?	
  
29
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)	
  {	
  …	
  }
}
}
33
Server-­‐sent	
  Events
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
WebTarget	
  target	
  =	
  client.target("http://example.com/tickers");	
  
EventSource	
  eventSource	
  =	
  new	
  EventSource(target)	
  {	
  
	
  	
  	
  @Override	
  
	
  	
  	
  public	
  void	
  onEvent(InboundEvent	
  inboundEvent)	
  {	
  
	
  	
  	
  	
  	
  StockQuote	
  sq	
  =	
  inboundEvent.readData(StockQuote.class);	
  
	
  	
  	
  	
  	
  //	
  ...	
  
	
  	
  	
  	
  }	
  
	
  	
  };	
  
eventSource.open();
JAX-­‐RS	
  Client
34
Server-­‐sent	
  Events
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
MVC	
  1.0
• Why?	
  
– Java	
  EE	
  8	
  Community	
  Survey	
  
– UI	
  landscape	
  is	
  not	
  one	
  size	
  fits	
  all	
  
35
Action-­‐based	
  Model-­‐View-­‐Controller	
  architecture
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
MVC	
  1.0
• Model	
  
– CDI,	
  Bean	
  Validation,	
  JPA	
  
• View	
  
– Facelets,	
  JSP,	
  SPI?	
  
• Controller	
  
– Invent	
  new	
  technology	
  Vs.	
  Leverage	
  existing	
  technologies?
36
Glues	
  together	
  key	
  Java	
  EE	
  technologies
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.
Controller
@Path("hello")
@Controller
public class HelloController {
@GET
@View("view1.xhtml")
public void hello() {
…
}
}
37
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.
Controller
@Path("hello")
public class HelloController {
@GET
@Controller
public String hello() {
…
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.
JSR	
  371
• View	
  Engine	
  
– JSP	
  &	
  Facelets	
  
– FreeMarker,	
  Velocity,	
  Thymeleaf,	
  Mustache,	
  Handlebars	
  &	
  Pebble	
  
• Validation	
  
• Exception	
  Mapping	
  Providers	
  
• Bootstrap	
  via	
  javax.ws.rs.core.Application	
  
• @Produces	
  
• CDI	
  Events
41
	
  	
  	
  	
  	
  	
  Early	
  Draft	
  Review
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
HTTP/2
• One	
  TCP	
  Connection	
  
• Request	
  -­‐>	
  Stream	
  
– Multiplexed	
  
– Prioritised	
  
• Binary	
  Framing	
  Layer	
  
– Prioritisation	
  
– Flow	
  Control	
  
– Server	
  Push	
  
• Header	
  Compression
Multiplexed	
  Binary	
  Frames
42
POST	
  /upload	
  HTTP/1.1	
  
Host:	
  www.test.com	
  
Content-­‐Type:	
  application/json	
  
Content-­‐Length:	
  15	
  
{“name”:“duke”}
HTTP	
  1.1 HTTP/2
HEADERS	
  frame
DATA	
  frame
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
Servlet	
  4.0
• Request/response	
  multiplexing	
  
– Servlet	
  Request	
  as	
  HTTP/2	
  message	
  
• Stream	
  prioritization	
  
– Add	
  stream	
  priority	
  to	
  HttpServletRequest	
  
• Server	
  push	
  
• Binary	
  framing	
  
• Upgrade	
  from	
  HTTP	
  1.1
HTTP/2	
  Features	
  in	
  Servlet	
  API
43
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
JSF	
  2.3
• CDI	
  Alignment	
  
– @Inject	
  FacesContext,	
  ExternalContext,	
  etc.	
  
– Rely	
  on	
  CDI	
  for	
  EL	
  resolving	
  
– CDI	
  managed	
  versions	
  of	
  Validator	
  and	
  Converter	
  
– Invoking	
  CDI	
  managed	
  bean	
  methods	
  directly	
  from	
  Ajax,	
  etc.	
  
• “Adjustments”	
  for	
  MVC	
  
– Facelets,	
  JSF	
  scopes,	
  etc.	
  
• Misc.	
  
– Multi-­‐field	
  validation,	
  etc.
44
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
Java	
  EE	
  8	
  Themes
• HTML5	
  /	
  Web	
  Tier	
  Enhancements	
  
• Ease	
  of	
  Development	
  
• Infrastructure	
  for	
  running	
  in	
  the	
  Cloud
45
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
Ease	
  of	
  Development
• CDI	
  alignment	
  
• JAX-­‐RS	
  injection	
  alignment	
  
• Simplified	
  messaging	
  through	
  CDI-­‐based	
  “MDBs”	
  
• WebSocket	
  scopes	
  
• Pruning	
  of	
  EJB	
  2.x	
  client	
  view	
  and	
  IIOP	
  interoperability	
  
• Security	
  interceptors	
  
• …
46
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
JMS	
  2.1
• Alternative	
  to	
  EJB	
  message-­‐driven	
  beans	
  
• Simpler	
  JMS-­‐specific	
  annotations	
  
• Usable	
  by	
  any	
  CDI	
  bean	
  
• No	
  need	
  for	
  MessageListener	
  implementation
New	
  API	
  to	
  receive	
  messages	
  asynchronously
47
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
JMS
@MessageDriven(activationConfig	
  =	
  {	
  
	
  	
  @ActivationConfigProperty(propertyName="connectionFactoryLookup",	
  propertyValue="jms/myCF"),	
  
	
  	
  @ActivationConfigProperty(propertyName="destinationLookup",	
  propertyValue="jms/myQueue"),	
  
	
  	
  @ActivationConfigProperty(propertyName="destinationType",	
  propertyValue="javax.jms.queue")})	
  
public	
  class	
  MyMDB	
  implements	
  MessageListener	
  {	
  
	
  	
  	
  public	
  void	
  onMessage(Message	
  message)	
  {	
  
	
  	
  	
  	
  	
  	
  	
  //	
  extract	
  message	
  body	
  
	
  	
  	
  	
  	
  	
  	
  String	
  body	
  =	
  message.getBody(String.class));	
  
	
  	
  	
  	
  	
  	
  	
  //	
  process	
  message	
  body	
  
	
  	
  	
  }	
  
}	
  	
  
JMS	
  MDBs	
  Today
48
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
JMS	
  2.1
public	
  class	
  MyListenerBean	
  {	
  
	
  	
  	
  @JMSListener(destinationLookup="jms/myQueue")	
  
	
  	
  	
  @Transactional	
  
	
  	
  	
  public	
  void	
  myCallback(Message	
  message)	
  {	
  
	
  	
  	
  ...	
  
	
  	
  	
  }	
  
}
Allow	
  any	
  Java	
  EE	
  bean	
  to	
  be	
  a	
  listener
49
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
• Java	
  SE	
  support	
  
• Modularity	
  
• Enhanced	
  Events	
  
• Misc.	
  
– AOP	
  
– SPI	
  
– Interceptors	
  and	
  Decorators	
  enhancements	
  
– Cleaning	
  
50
CDI	
  2.0
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
CDI	
  2.0
• Add	
  new	
  features	
  to	
  CDI	
  without	
  bloating	
  the	
  specification	
  
• “Sub	
  specification”(aka	
  “parts”)	
  that	
  can	
  be	
  used	
  independently	
  
• Will	
  help	
  CDI	
  adoption	
  
• Parts	
  
– SE	
  
– EE	
  
– more?
51
Modularity
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
   52
public	
  class	
  ProducerClass	
  {	
  
	
   @Inject	
  Event<SomeEvent>	
  someEvent;	
  
	
   public	
  void	
  someMethod(...)	
  {	
  
	
   	
   ...	
  
	
   	
   someEvent.fire(...);	
  
	
   }	
  
}
CDI	
  2.0
Asynchronous	
  Events
public	
  class	
  AnotherClass	
  {	
  
	
  	
  	
  	
  	
  	
  public	
  void	
  someObserver(@Observes	
  SomeEvent	
  someEvent)	
  {	
  
	
  	
  	
  ...	
  
	
  	
  	
  	
  	
  	
  }	
  
}
public	
  class	
  AsynchProducerClass	
  {	
  	
  	
  	
  	
  
	
  	
  	
  	
  	
  @Inject	
  Event<Payload>	
  someEvent;	
  
	
  	
  	
  	
  	
  public	
  void	
  anotherMethod()	
  {	
  
	
  	
  	
  CompletionStage<…>	
  completionStage	
  someEvent.fireAsync(...);	
  
	
  	
  	
  	
  	
  }	
  
}
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
   53
CDI	
  2.0
Events	
  Ordering
public	
  void	
  importantObserver(@Observes	
  @Priority(1)	
  MyEvent	
  evt)	
  
{	
  
...	
  
}	
  
public	
  void	
  anotherObserver(@Observes	
  @Priority(10)	
  MyEvent	
  evt)	
  
{	
  
...	
  
}
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
Pruning
Should	
  we	
  prune	
  EJB	
  2.x	
  remote	
  and	
  local	
  client	
  view	
  (EJBObject,	
  EJBLocalObject,	
  
EJBHome,	
  and	
  EJBLocalHome	
  interfaces)?	
  
Should	
  we	
  prune	
  CORBA,	
  including	
  support	
  for	
  interoperability	
  by	
  means	
  of	
  IIOP?
Candidates	
  for	
  Proposed	
  Optional	
  status
54
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
Java	
  EE	
  8	
  Themes
• HTML5	
  /	
  Web	
  Tier	
  Enhancements	
  
• Ease	
  of	
  Development	
  
• Infrastructure	
  for	
  running	
  in	
  the	
  Cloud
55
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
Modernize	
  the	
  Infrastructure
• Java	
  EE	
  Management	
  2.0	
  
– REST-­‐based	
  APIs	
  for	
  Management	
  and	
  Deployment	
  
• Java	
  EE	
  Security	
  1.0	
  
– Authorization	
  
– Password	
  Aliasing	
  
– User	
  Management	
  
– Role	
  Mapping	
  
– Authentication	
  
– REST	
  Authentication
For	
  On-­‐Premise	
  and	
  for	
  in	
  the	
  Cloud
56
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
Management	
  and	
  Deployment	
  APIs
Should	
  we	
  define	
  new	
  APIs	
  to	
  deploy	
  and	
  manage	
  applications?	
  
Should	
  such	
  new	
  Deployment	
  and	
  Management	
  APIs	
  be	
  REST	
  APIs	
  or	
  JMX	
  APIs?
57
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
Java	
  EE	
  Management	
  2.0
• Update	
  to	
  JSR	
  77	
  (“J2EE	
  Management”)	
  
• REST-­‐based	
  interfaces	
  to	
  augment	
  (or	
  replace)	
  current	
  Management	
  EJB	
  
APIs	
  
– Currently	
  used	
  OBJECT_NAME	
  to	
  become	
  URL	
  
– Define	
  CRUD	
  operations	
  over	
  individual	
  managed	
  objects	
  
– Server-­‐sent	
  events	
  used	
  for	
  event	
  support	
  
• Simple	
  deployment	
  interfaces	
  also	
  to	
  be	
  considered	
  as	
  part	
  of	
  
management	
  API
58
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
Security	
  Simplifications
Should	
  we	
  consider	
  adding	
  Security	
  Interceptors	
  in	
  Java	
  EE	
  8?	
  
Should	
  we	
  simplify	
  authorization	
  by	
  introducing	
  an	
  EL-­‐enabled	
  authorization	
  
annotation?
59
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
Java	
  EE	
  Security	
  1.0
@IsAuthorized("hasRoles('Manager')	
  &&	
  schedule.officeHrs")	
  
void	
  transferFunds()	
  
@IsAuthorized("hasRoles('Manager')	
  &&	
  hasAttribute('directReports',	
  employee.id)")	
  
double	
  getSalary(long	
  employeeId);	
  
@IsAuthorized(ruleSourceName="java:app/payrollAuthRules",	
  rule="report")	
  
void	
  displayReport();
Authorization	
  via	
  CDI	
  Interceptors
60
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	
  
• Password	
  Aliasing	
  
• User	
  Management	
  
• Role	
  Mapping	
  
• Authentication	
  
• REST	
  Authentication	
  
61
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
Java	
  EE	
  8	
  Themes
• HTML5	
  /	
  Web	
  Tier	
  Enhancements	
  
• Ease	
  of	
  Development	
  
• Infrastructure	
  for	
  running	
  in	
  the	
  Cloud	
  
• Java	
  SE	
  8	
  alignment
62
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
Java	
  EE	
  8	
  JSRs
• Java	
  EE	
  8	
  Platform	
  (JSR	
  366)	
  
• CDI	
  2.0	
  (JSR	
  365)	
  
• JSON	
  Binding	
  1.0	
  (JSR	
  367)	
  
• JMS	
  2.1	
  (JSR	
  368)	
  	
  
• Java	
  Servlet	
  4.0	
  (JSR	
  369)	
  	
  
• JAX-­‐RS	
  2.1	
  (JSR	
  370)	
  
• MVC	
  1.0	
  (JSR	
  371)	
  *	
  	
  
• JSF	
  2.3	
  (JSR	
  372)	
  
• Java	
  EE	
  Management	
  2.0	
  (JSR	
  373)	
  
• JSON-­‐P	
  1.1	
  (JSR	
  374)	
  
• Java	
  EE	
  Security	
  1.0	
  (JSR	
  375)
So	
  far…..
63
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
And	
  More	
  to	
  Follow…
• Bean	
  Validation	
  
• EL	
  	
  
• Concurrency	
  Utilities	
  
• Connector	
  Architecture	
  
• WebSocket	
  
• Interceptors	
  
• JPA	
  
• EJB	
  
• JTA	
  
• JCache	
  
• Batch	
  
• JavaMail	
  
• …
64
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
Roadmap
• Tentative	
  Delivery	
  Schedule	
  
– Q3	
  2014:	
  JSR	
  369	
  Expert	
  Group	
  formed	
  
– Q1	
  2015:	
  early	
  draft	
  
– Q3	
  2015:	
  public	
  review	
  
– Q4	
  2015:	
  proposed	
  final	
  draft	
  
– Q3	
  2016:	
  final	
  release	
  
• TBC!	
  
• Contribute!
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
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  
Thanks
67
Copyright	
  ©	
  2015,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
   68

Weitere ähnliche Inhalte

Was ist angesagt?

Java EE 8: On the Horizon
Java EE 8:  On the HorizonJava EE 8:  On the Horizon
Java EE 8: On the HorizonJosh Juneau
 
Adopt-a-JSR for JSON Processing 1.1, JSR 374
Adopt-a-JSR for JSON Processing 1.1, JSR 374Adopt-a-JSR for JSON Processing 1.1, JSR 374
Adopt-a-JSR for JSON Processing 1.1, JSR 374Heather VanCura
 
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 Revisits GoF Design Patterns
Java EE Revisits GoF Design PatternsJava EE Revisits GoF Design Patterns
Java EE Revisits GoF Design PatternsMurat Yener
 
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
 
Seven Points for Applying Java EE 7
Seven Points for Applying Java EE 7Seven Points for Applying Java EE 7
Seven Points for Applying Java EE 7Hirofumi Iwasaki
 
Modern web application development with java ee 7
Modern web application development with java ee 7Modern web application development with java ee 7
Modern web application development with java ee 7Shekhar Gulati
 
EJB and CDI - Alignment and Strategy
EJB and CDI - Alignment and StrategyEJB and CDI - Alignment and Strategy
EJB and CDI - Alignment and StrategyDavid Delabassee
 
HTTP/2 comes to Java. What Servlet 4.0 means to you. DevNexus 2015
HTTP/2 comes to Java.  What Servlet 4.0 means to you. DevNexus 2015HTTP/2 comes to Java.  What Servlet 4.0 means to you. DevNexus 2015
HTTP/2 comes to Java. What Servlet 4.0 means to you. DevNexus 2015Edward Burns
 
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
 
Introducing Java 8
Introducing Java 8Introducing Java 8
Introducing Java 8PT.JUG
 
JavaOne 2011: Migrating Spring Applications to Java EE 6
JavaOne 2011: Migrating Spring Applications to Java EE 6JavaOne 2011: Migrating Spring Applications to Java EE 6
JavaOne 2011: Migrating Spring Applications to Java EE 6Bert Ertman
 
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
 
WebSocket in Enterprise Applications 2015
WebSocket in Enterprise Applications 2015WebSocket in Enterprise Applications 2015
WebSocket in Enterprise Applications 2015Pavel Bucek
 
Testing Java EE Applications Using Arquillian
Testing Java EE Applications Using ArquillianTesting Java EE Applications Using Arquillian
Testing Java EE Applications Using ArquillianReza Rahman
 
Top 50 java ee 7 best practices [con5669]
Top 50 java ee 7 best practices [con5669]Top 50 java ee 7 best practices [con5669]
Top 50 java ee 7 best practices [con5669]Ryan Cuprak
 

Was ist angesagt? (20)

Java EE 8: On the Horizon
Java EE 8:  On the HorizonJava EE 8:  On the Horizon
Java EE 8: On the Horizon
 
Adopt-a-JSR for JSON Processing 1.1, JSR 374
Adopt-a-JSR for JSON Processing 1.1, JSR 374Adopt-a-JSR for JSON Processing 1.1, JSR 374
Adopt-a-JSR for JSON Processing 1.1, JSR 374
 
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 Revisits GoF Design Patterns
Java EE Revisits GoF Design PatternsJava EE Revisits GoF Design Patterns
Java EE Revisits GoF Design Patterns
 
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
 
JavaCro'15 - Java Cloud - Marin Tadić
JavaCro'15 - Java Cloud - Marin TadićJavaCro'15 - Java Cloud - Marin Tadić
JavaCro'15 - Java Cloud - Marin Tadić
 
Seven Points for Applying Java EE 7
Seven Points for Applying Java EE 7Seven Points for Applying Java EE 7
Seven Points for Applying Java EE 7
 
Modern web application development with java ee 7
Modern web application development with java ee 7Modern web application development with java ee 7
Modern web application development with java ee 7
 
Java cro'21 the best tools for java developers in 2021 - hujak
Java cro'21   the best tools for java developers in 2021 - hujakJava cro'21   the best tools for java developers in 2021 - hujak
Java cro'21 the best tools for java developers in 2021 - hujak
 
EJB and CDI - Alignment and Strategy
EJB and CDI - Alignment and StrategyEJB and CDI - Alignment and Strategy
EJB and CDI - Alignment and Strategy
 
HTTP/2 comes to Java. What Servlet 4.0 means to you. DevNexus 2015
HTTP/2 comes to Java.  What Servlet 4.0 means to you. DevNexus 2015HTTP/2 comes to Java.  What Servlet 4.0 means to you. DevNexus 2015
HTTP/2 comes to Java. What Servlet 4.0 means to you. DevNexus 2015
 
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
 
Introducing Java 8
Introducing Java 8Introducing Java 8
Introducing Java 8
 
JavaOne 2011: Migrating Spring Applications to Java EE 6
JavaOne 2011: Migrating Spring Applications to Java EE 6JavaOne 2011: Migrating Spring Applications to Java EE 6
JavaOne 2011: Migrating Spring Applications to Java EE 6
 
Have You Seen Java EE Lately?
Have You Seen Java EE Lately?Have You Seen Java EE Lately?
Have You Seen Java EE Lately?
 
WebSocket in Enterprise Applications 2015
WebSocket in Enterprise Applications 2015WebSocket in Enterprise Applications 2015
WebSocket in Enterprise Applications 2015
 
MySQL
MySQLMySQL
MySQL
 
Testing Java EE Applications Using Arquillian
Testing Java EE Applications Using ArquillianTesting Java EE Applications Using Arquillian
Testing Java EE Applications Using Arquillian
 
Top 50 java ee 7 best practices [con5669]
Top 50 java ee 7 best practices [con5669]Top 50 java ee 7 best practices [con5669]
Top 50 java ee 7 best practices [con5669]
 
Move from J2EE to Java EE
Move from J2EE to Java EEMove from J2EE to Java EE
Move from J2EE to Java EE
 

Andere mochten auch

Andere mochten auch (20)

Javantura v3 - Asseco SEE
Javantura v3 - Asseco SEEJavantura v3 - Asseco SEE
Javantura v3 - Asseco SEE
 
JavaCro'15 - Slick database library - Ivan Senji
JavaCro'15 - Slick database library - Ivan SenjiJavaCro'15 - Slick database library - Ivan Senji
JavaCro'15 - Slick database library - Ivan Senji
 
JavaCro'15 - Reactive I/O - Ivan Turčinović
JavaCro'15 - Reactive I/O - Ivan TurčinovićJavaCro'15 - Reactive I/O - Ivan Turčinović
JavaCro'15 - Reactive I/O - Ivan Turčinović
 
JavaCro'15 - RESTful Web APIs Design - Denis Kranjčec
JavaCro'15 - RESTful Web APIs Design - Denis KranjčecJavaCro'15 - RESTful Web APIs Design - Denis Kranjčec
JavaCro'15 - RESTful Web APIs Design - Denis Kranjčec
 
JavaCro'15 - Java application crashed, now what - Matija Tomašković
JavaCro'15 - Java application crashed, now what - Matija TomaškovićJavaCro'15 - Java application crashed, now what - Matija Tomašković
JavaCro'15 - Java application crashed, now what - Matija Tomašković
 
JavaCro'15 - How to start agile transition - Ivan Krnić
JavaCro'15 - How to start agile transition - Ivan KrnićJavaCro'15 - How to start agile transition - Ivan Krnić
JavaCro'15 - How to start agile transition - Ivan Krnić
 
JavaCro'15 - GWT integration with Vaadin - Peter Lehto
JavaCro'15 - GWT integration with Vaadin - Peter LehtoJavaCro'15 - GWT integration with Vaadin - Peter Lehto
JavaCro'15 - GWT integration with Vaadin - Peter Lehto
 
JavaCro'15 - Managing Java at Scale Security and Compatibility Applications -...
JavaCro'15 - Managing Java at Scale Security and Compatibility Applications -...JavaCro'15 - Managing Java at Scale Security and Compatibility Applications -...
JavaCro'15 - Managing Java at Scale Security and Compatibility Applications -...
 
JavaCro'15 - Service Discovery in OSGi Beyond the JVM using Docker and Consul...
JavaCro'15 - Service Discovery in OSGi Beyond the JVM using Docker and Consul...JavaCro'15 - Service Discovery in OSGi Beyond the JVM using Docker and Consul...
JavaCro'15 - Service Discovery in OSGi Beyond the JVM using Docker and Consul...
 
JavaCro'15 - Java parallelization - Zlatko Sirotić
JavaCro'15 - Java parallelization - Zlatko SirotićJavaCro'15 - Java parallelization - Zlatko Sirotić
JavaCro'15 - Java parallelization - Zlatko Sirotić
 
JavaCro'15 - Is history teaching us that Agile is dead - Roko Roić
JavaCro'15 - Is history teaching us that Agile is dead - Roko RoićJavaCro'15 - Is history teaching us that Agile is dead - Roko Roić
JavaCro'15 - Is history teaching us that Agile is dead - Roko Roić
 
JavaCro'15 - Microservice architecture - Nenad Pečanac
JavaCro'15 - Microservice architecture - Nenad PečanacJavaCro'15 - Microservice architecture - Nenad Pečanac
JavaCro'15 - Microservice architecture - Nenad Pečanac
 
JavaCro'15 - Internet of things with RPi and Java - Matija Novak, Dragutin Ke...
JavaCro'15 - Internet of things with RPi and Java - Matija Novak, Dragutin Ke...JavaCro'15 - Internet of things with RPi and Java - Matija Novak, Dragutin Ke...
JavaCro'15 - Internet of things with RPi and Java - Matija Novak, Dragutin Ke...
 
JavaCro'15 - Remote controlling Parrot AR Drone with Spring Boot and Vaadin -...
JavaCro'15 - Remote controlling Parrot AR Drone with Spring Boot and Vaadin -...JavaCro'15 - Remote controlling Parrot AR Drone with Spring Boot and Vaadin -...
JavaCro'15 - Remote controlling Parrot AR Drone with Spring Boot and Vaadin -...
 
Javantura v3 - The story of Java & HUJAK
Javantura v3 - The story of Java & HUJAKJavantura v3 - The story of Java & HUJAK
Javantura v3 - The story of Java & HUJAK
 
JavaCro'15 - Secure Web Services Development - Askar Akhmerov
JavaCro'15 - Secure Web Services Development - Askar AkhmerovJavaCro'15 - Secure Web Services Development - Askar Akhmerov
JavaCro'15 - Secure Web Services Development - Askar Akhmerov
 
JavaCro'15 - Single mail client for Lotus Domino and MS Exchange with Liferay...
JavaCro'15 - Single mail client for Lotus Domino and MS Exchange with Liferay...JavaCro'15 - Single mail client for Lotus Domino and MS Exchange with Liferay...
JavaCro'15 - Single mail client for Lotus Domino and MS Exchange with Liferay...
 
JavaCro'15 - Introduction to Apache Spark - Petar Zečević
JavaCro'15 - Introduction to Apache Spark - Petar ZečevićJavaCro'15 - Introduction to Apache Spark - Petar Zečević
JavaCro'15 - Introduction to Apache Spark - Petar Zečević
 
JavaCro'15 - GP GUI form generators - Daniel Strmečki
JavaCro'15 - GP GUI form generators - Daniel StrmečkiJavaCro'15 - GP GUI form generators - Daniel Strmečki
JavaCro'15 - GP GUI form generators - Daniel Strmečki
 
Javantura v3 - Conquer the Internet of Things with Java and Docker – Johan Ja...
Javantura v3 - Conquer the Internet of Things with Java and Docker – Johan Ja...Javantura v3 - Conquer the Internet of Things with Java and Docker – Johan Ja...
Javantura v3 - Conquer the Internet of Things with Java and Docker – Johan Ja...
 

Ähnlich wie JavaCro'15 - Java EE 8 - An instant snapshot - David Delabassee

Java EE 8 - An instant snapshot
Java EE 8 - An instant snapshotJava EE 8 - An instant snapshot
Java EE 8 - An instant snapshotDavid Delabassee
 
Java EE 8 - 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
 
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
 
Java API for JSON Binding - Introduction and update
Java API for JSON Binding - Introduction and updateJava API for JSON Binding - Introduction and update
Java API for JSON Binding - Introduction and updateMartin Grebac
 
JavaOne2015フィードバック @ 富山合同勉強会
JavaOne2015フィードバック @ 富山合同勉強会JavaOne2015フィードバック @ 富山合同勉強会
JavaOne2015フィードバック @ 富山合同勉強会Takashi Ito
 
20160123 java one2015_feedback @ Osaka
20160123 java one2015_feedback @ Osaka20160123 java one2015_feedback @ Osaka
20160123 java one2015_feedback @ OsakaTakashi Ito
 
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
 
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
 
Pushing JavaEE outside of the enterprise: Home Automation & IoT - David Delab...
Pushing JavaEE outside of the enterprise: Home Automation & IoT - David Delab...Pushing JavaEE outside of the enterprise: Home Automation & IoT - David Delab...
Pushing JavaEE outside of the enterprise: Home Automation & IoT - David Delab...Codemotion Tel Aviv
 
Enterprise java unit-1_chapter-1
Enterprise java unit-1_chapter-1Enterprise java unit-1_chapter-1
Enterprise java unit-1_chapter-1sandeep54552
 
Java EE7 in action
Java EE7 in actionJava EE7 in action
Java EE7 in actionAnkara JUG
 
Java EE 8 Overview (Japanese)
Java EE 8 Overview (Japanese)Java EE 8 Overview (Japanese)
Java EE 8 Overview (Japanese)Logico
 
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
 
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 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
 
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
 

Ähnlich wie JavaCro'15 - Java EE 8 - An instant snapshot - David Delabassee (20)

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
 
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()
 
Java API for JSON Binding - Introduction and update
Java API for JSON Binding - Introduction and updateJava API for JSON Binding - Introduction and update
Java API for JSON Binding - Introduction and update
 
JavaOne2015フィードバック @ 富山合同勉強会
JavaOne2015フィードバック @ 富山合同勉強会JavaOne2015フィードバック @ 富山合同勉強会
JavaOne2015フィードバック @ 富山合同勉強会
 
Java EE for the Cloud
Java EE for the CloudJava EE for the Cloud
Java EE for the Cloud
 
JSON-B for CZJUG
JSON-B for CZJUGJSON-B for CZJUG
JSON-B for CZJUG
 
20160123 java one2015_feedback @ Osaka
20160123 java one2015_feedback @ Osaka20160123 java one2015_feedback @ Osaka
20160123 java one2015_feedback @ Osaka
 
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
 
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
 
Pushing JavaEE outside of the enterprise: Home Automation & IoT - David Delab...
Pushing JavaEE outside of the enterprise: Home Automation & IoT - David Delab...Pushing JavaEE outside of the enterprise: Home Automation & IoT - David Delab...
Pushing JavaEE outside of the enterprise: Home Automation & IoT - David Delab...
 
Enterprise java unit-1_chapter-1
Enterprise java unit-1_chapter-1Enterprise java unit-1_chapter-1
Enterprise java unit-1_chapter-1
 
Java EE7 in action
Java EE7 in actionJava EE7 in action
Java EE7 in action
 
Java EE 8 Overview (Japanese)
Java EE 8 Overview (Japanese)Java EE 8 Overview (Japanese)
Java EE 8 Overview (Japanese)
 
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
 
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 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)
 
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?
 
JAX-RS.next
JAX-RS.nextJAX-RS.next
JAX-RS.next
 

Mehr von HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association

Mehr von HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association (20)

JavaCro'21 - Java is Here To Stay - HUJAK Keynote
JavaCro'21 - Java is Here To Stay - HUJAK KeynoteJavaCro'21 - Java is Here To Stay - HUJAK Keynote
JavaCro'21 - Java is Here To Stay - HUJAK Keynote
 
Javantura v7 - Behaviour Driven Development with Cucumber - Ivan Lozić
Javantura v7 - Behaviour Driven Development with Cucumber - Ivan LozićJavantura v7 - Behaviour Driven Development with Cucumber - Ivan Lozić
Javantura v7 - Behaviour Driven Development with Cucumber - Ivan Lozić
 
Javantura v7 - The State of Java - Today and Tomowwow - HUJAK's Community Key...
Javantura v7 - The State of Java - Today and Tomowwow - HUJAK's Community Key...Javantura v7 - The State of Java - Today and Tomowwow - HUJAK's Community Key...
Javantura v7 - The State of Java - Today and Tomowwow - HUJAK's Community Key...
 
Javantura v7 - Learning to Scale Yourself: The Journey from Coder to Leader -...
Javantura v7 - Learning to Scale Yourself: The Journey from Coder to Leader -...Javantura v7 - Learning to Scale Yourself: The Journey from Coder to Leader -...
Javantura v7 - Learning to Scale Yourself: The Journey from Coder to Leader -...
 
JavaCro'19 - The State of Java and Software Development in Croatia - Communit...
JavaCro'19 - The State of Java and Software Development in Croatia - Communit...JavaCro'19 - The State of Java and Software Development in Croatia - Communit...
JavaCro'19 - The State of Java and Software Development in Croatia - Communit...
 
Javantura v6 - Java in Croatia and HUJAK - Branko Mihaljević, Aleksander Radovan
Javantura v6 - Java in Croatia and HUJAK - Branko Mihaljević, Aleksander RadovanJavantura v6 - Java in Croatia and HUJAK - Branko Mihaljević, Aleksander Radovan
Javantura v6 - Java in Croatia and HUJAK - Branko Mihaljević, Aleksander Radovan
 
Javantura v6 - On the Aspects of Polyglot Programming and Memory Management i...
Javantura v6 - On the Aspects of Polyglot Programming and Memory Management i...Javantura v6 - On the Aspects of Polyglot Programming and Memory Management i...
Javantura v6 - On the Aspects of Polyglot Programming and Memory Management i...
 
Javantura v6 - Case Study: Marketplace App with Java and Hyperledger Fabric -...
Javantura v6 - Case Study: Marketplace App with Java and Hyperledger Fabric -...Javantura v6 - Case Study: Marketplace App with Java and Hyperledger Fabric -...
Javantura v6 - Case Study: Marketplace App with Java and Hyperledger Fabric -...
 
Javantura v6 - How to help customers report bugs accurately - Miroslav Čerkez...
Javantura v6 - How to help customers report bugs accurately - Miroslav Čerkez...Javantura v6 - How to help customers report bugs accurately - Miroslav Čerkez...
Javantura v6 - How to help customers report bugs accurately - Miroslav Čerkez...
 
Javantura v6 - When remote work really works - the secrets behind successful ...
Javantura v6 - When remote work really works - the secrets behind successful ...Javantura v6 - When remote work really works - the secrets behind successful ...
Javantura v6 - When remote work really works - the secrets behind successful ...
 
Javantura v6 - Kotlin-Java Interop - Matej Vidaković
Javantura v6 - Kotlin-Java Interop - Matej VidakovićJavantura v6 - Kotlin-Java Interop - Matej Vidaković
Javantura v6 - Kotlin-Java Interop - Matej Vidaković
 
Javantura v6 - Spring HATEOAS hypermedia-driven web services, and clients tha...
Javantura v6 - Spring HATEOAS hypermedia-driven web services, and clients tha...Javantura v6 - Spring HATEOAS hypermedia-driven web services, and clients tha...
Javantura v6 - Spring HATEOAS hypermedia-driven web services, and clients tha...
 
Javantura v6 - End to End Continuous Delivery of Microservices for Kubernetes...
Javantura v6 - End to End Continuous Delivery of Microservices for Kubernetes...Javantura v6 - End to End Continuous Delivery of Microservices for Kubernetes...
Javantura v6 - End to End Continuous Delivery of Microservices for Kubernetes...
 
Javantura v6 - Istio Service Mesh - The magic between your microservices - Ma...
Javantura v6 - Istio Service Mesh - The magic between your microservices - Ma...Javantura v6 - Istio Service Mesh - The magic between your microservices - Ma...
Javantura v6 - Istio Service Mesh - The magic between your microservices - Ma...
 
Javantura v6 - How can you improve the quality of your application - Ioannis ...
Javantura v6 - How can you improve the quality of your application - Ioannis ...Javantura v6 - How can you improve the quality of your application - Ioannis ...
Javantura v6 - How can you improve the quality of your application - Ioannis ...
 
Javantura v6 - Just say it v2 - Pavao Varela Petrac
Javantura v6 - Just say it v2 - Pavao Varela PetracJavantura v6 - Just say it v2 - Pavao Varela Petrac
Javantura v6 - Just say it v2 - Pavao Varela Petrac
 
Javantura v6 - Automation of web apps testing - Hrvoje Ruhek
Javantura v6 - Automation of web apps testing - Hrvoje RuhekJavantura v6 - Automation of web apps testing - Hrvoje Ruhek
Javantura v6 - Automation of web apps testing - Hrvoje Ruhek
 
Javantura v6 - Master the Concepts Behind the Java 10 Challenges and Eliminat...
Javantura v6 - Master the Concepts Behind the Java 10 Challenges and Eliminat...Javantura v6 - Master the Concepts Behind the Java 10 Challenges and Eliminat...
Javantura v6 - Master the Concepts Behind the Java 10 Challenges and Eliminat...
 
Javantura v6 - Building IoT Middleware with Microservices - Mario Kusek
Javantura v6 - Building IoT Middleware with Microservices - Mario KusekJavantura v6 - Building IoT Middleware with Microservices - Mario Kusek
Javantura v6 - Building IoT Middleware with Microservices - Mario Kusek
 
Javantura v6 - JDK 11 & JDK 12 - Dalibor Topic
Javantura v6 - JDK 11 & JDK 12 - Dalibor TopicJavantura v6 - JDK 11 & JDK 12 - Dalibor Topic
Javantura v6 - JDK 11 & JDK 12 - Dalibor Topic
 

Kürzlich hochgeladen

ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024SynarionITSolutions
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024The Digital Insurer
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 

Kürzlich hochgeladen (20)

ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 

JavaCro'15 - Java EE 8 - An instant snapshot - David Delabassee

  • 1. David  Delabassee  -­‐  @delabassee   Oracle Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.     Java  EE  8 1
  • 2. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   Agenda How  did  we  get  here?   What  do  we  want  to  do?   How  can  you  get  involved? 1 2 3 Preview  of  Java  EE  8
  • 3. Safe  Harbor  Statement The  following  is  intended  to  outline  our  general  product  direction.  It  is  intended  for   information  purposes  only,  and  may  not  be  incorporated  into  any  contract.  It  is  not  a   commitment  to  deliver  any  material,  code,  or  functionality,  and  should  not  be  relied  upon   in  making  purchasing  decisions.  The  development,  release,  and  timing  of  any  features  or   functionality  described  for  Oracle’s  products  remains  at  the  sole  discretion  of  Oracle. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   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  2013  Java  EE  BOF  and  Java  EE  EG  meeting   – Outreach  by  evangelists   • Consolidated  into  Community  Survey 6
  • 7. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   Java  EE  8  Community  Survey • 3  parts  over  3½  months   – 47  questions   – 15  fill-­‐ins   – 1000’s  of  comments   • 4500+  respondents   • Prioritization  of  most-­‐popular  features 7
  • 8. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   8
  • 9. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   Community-­‐Prioritized  Features 9 http://glassfish.org/survey
  • 10. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.                                  You  asked  for  it,  you  got  it! 10 Java  EE  8 Driven  by  Community  Feedback
  • 11. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   Java  EE  8  Themes • HTML5  /  Web  Tier  Enhancements   • Ease  of  Development   • Infrastructure  for  running  in  the  Cloud 11
  • 12. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   Java  EE  8  Themes • HTML5  /  Web  Tier  Enhancements   • Ease  of  Development   • Infrastructure  for  running  in  the  Cloud 12
  • 13. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   HTML5  Support  /  Web  Tier  Enhancements • JSON  Binding   • JSON  Processing  enhancements   • Server-­‐sent  Events   • Action-­‐based  MVC   • HTTP/2  support 13
  • 14. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   JSON-­‐B • API  to  marshal/unmarshal  Java  objects  to/from  JSON   – Similar  to  JAXB  runtime  API  in  XML  world   • Default  mapping  of  classes  to  JSON   – Annotations  to  customize  the  default  mappings   – JsonProperty,  JsonTransient,  JsonNillable,  JsonValue,  … Java  API  for  JSON  Binding 14
  • 15. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   JSON-­‐B • Draw  from  best  practices  of  existing  JSON  binding  implementations   – Jackson,  Genson,  EclipseLink  MOXy,  Fleece,  JSON-­‐lib,  Gson,  Flexjson,  Json-­‐io,   JSONiJ,  Johnzon,  Xstream,  etc.   • Switch  JSON  binding  providers   • Implementations  compete  on  common  ground Standard  API 15
  • 16. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   JSON-­‐B @Entity  public  class  Person  {      @Id  String  name;      String  gender;      @ElementCollection  Map<String,String>  phones;      ...  //  getters  and  setters   }   Person  duke  =  new  Person();   duke.setName("Duke");   duke.setGender("M");   phones  =  new  HashMap<String,String>();   phones.put("home",  "650-­‐123-­‐4567");   phones.put("mobile",  "650-­‐234-­‐5678");   duke.setPhones(phones);   Marshaller  marshaller  =  new  JsonContext().createMarshaller().setPrettyPrinting(true);   marshaller.marshal(duke,  System.out);    {          "name":"Duke",          "gender":"M",          "phones":{                "home":"650-­‐123-­‐4567",                "mobile":"650-­‐234-­‐5678"}      }       16
  • 17. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   • All  the  way  from  client  to  database   – JSON-­‐B  will  provide  JAX-­‐RS  a  standard  way  to  support  “application/json”  media  type JSON-­‐B JPA JSON-­‐B Data   Source JSON JAX-­‐RS Java  Objects 17 JSR  367
  • 18. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   JSON-­‐P  1.1 Java  API  for  JSON  Processing 18 • Keep  JSON-­‐P  spec  up-­‐to-­‐date   • Track  new  standards   • Add  editing  operations  to  JsonObject  and  JsonArray   • Java  SE  8   • JSON  Big  Data
  • 19. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   JSON-­‐P:  Java  API  for  JSON  Processing  1.1 • String  syntax  for  referencing  a  JSON  value     "/0/phone/mobile" JSON-­‐Pointer  –  IETF  RFC  6901 19
  • 20. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   JSON-­‐P  1.1 JsonArray  contacts  =  …   JsonPointer  p  =  Json.createPointer("/0/phones/mobile");   JsonValue  v  =  p.getValue(contacts);   [    {          "name":"Duke",          "gender":"M",          "phones":{                "home":"650-­‐123-­‐4567",                "mobile":"650-­‐234-­‐5678"}},      {          "name":"Jane",          "gender":"F",          "phones":{                "mobile":"707-­‐555-­‐9999"}}   ]       20
  • 21. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   JSON-­‐P:  Java  API  for  JSON  Processing  1.1 • String  syntax  for  referencing  a  JSON  value     “/0/phone/mobile"   • Methods   – getValue()   – JSON  Patch  operations:  add(),  replace(),  remove(),  move(),  copy(),  test() JSON-­‐Pointer  –  IETF  RFC  6901 21
  • 22. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   JSON-­‐P  1.1 • Patch  is  a  JSON  document   – Array  of  objects  /  operations  for  modifying  a  JSON  document   – add,  replace,  remove,  move,  copy,  test        [        {"op":"replace","path":"/0/phones/mobile","value":"650-­‐111-­‐222"},        {"op":"remove","path":"/1"}    ]   – apply  Vs.  diff JSON-­‐Patch  –  IETF  RFC  6902 22
  • 23. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   JSON-­‐P  1.1 [    {      "op":"replace",      "path":"/0/phones/mobile",      "value":"650-­‐111-­‐2222"},    {      "op":"remove",      "path":"/1"}   ] [    {          "name":"Duke",          "gender":"M",          "phones":{                "home":"650-­‐123-­‐4567",                "mobile":"650-­‐234-­‐5678"}},      {          "name":"Jane",          "gender":"F",          "phones":{                "mobile":"707-­‐555-­‐9999"}}   ]       23
  • 24. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   JSON-­‐P  1.1 [    {      "op":"replace",      "path":"/0/phones/mobile",      "value":"650-­‐111-­‐2222"},    {      "op":"remove",      "path":"/1"}   ] [    {          "name":"Duke",          "gender":"M",          "phones":{                "home":"650-­‐123-­‐4567",                "mobile":"650-­‐111-­‐2222"}},      {          "name":"Jane",          "gender":"F",          "phones":{                "mobile":"707-­‐555-­‐9999"}}   ]       24
  • 25. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   JSON-­‐P  1.1 [    {      "op":"replace",      "path":"/0/phones/mobile",      "value":"650-­‐111-­‐2222"},    {      "op":"remove",      "path":"/1"}   ] [    {          "name":"Duke",          "gender":"M",          "phones":{                "home":"650-­‐123-­‐4567",                "mobile":"650-­‐111-­‐2222"}}   ]       25
  • 26. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   JSON-­‐P  1.1 JSON  Query  using  Lambda  Operations JsonArray  contacts  =  ...;   List<String>  femaleNames  =  contacts.getValuesAs(JsonObject.class).stream()                                                                          .filter(x-­‐>"F".equals(x.getString("gender")))                                                                          .map(x-­‐>(x.getString("name"))                                                                          .collect(Collectors.toList()); 26
  • 27. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   JSON-­‐P  1.1 JSON  Query  collecting  results  in  JsonArray JsonArray  contacts  =  ...;   JsonArray  femaleNames  =  contacts.getValuesAs(JsonObject.class).stream()                                                                                                        .filter(x-­‐>"F".equals(x.getString("gender")))                                                                                                        .map(x-­‐>(x.getString("name"))                                                                                                        .collect(JsonCollectors.toJsonArray()); 27
  • 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 28 JSR  374
  • 29. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   Server-­‐sent  Events Should  we  also  standardize  a  Java  API  for  server-­‐sent  events?   29
  • 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)  {  …  } } } 33 Server-­‐sent  Events
  • 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 34 Server-­‐sent  Events
  • 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   35 Action-­‐based  Model-­‐View-­‐Controller  architecture
  • 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? 36 Glues  together  key  Java  EE  technologies
  • 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() { … } } 37
  • 38. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. Controller @Path("hello") public class HelloController { @GET @Controller public String hello() { … 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. JSR  371 • View  Engine   – JSP  &  Facelets   – FreeMarker,  Velocity,  Thymeleaf,  Mustache,  Handlebars  &  Pebble   • Validation   • Exception  Mapping  Providers   • Bootstrap  via  javax.ws.rs.core.Application   • @Produces   • CDI  Events 41            Early  Draft  Review
  • 42. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   HTTP/2 • One  TCP  Connection   • Request  -­‐>  Stream   – Multiplexed   – Prioritised   • Binary  Framing  Layer   – Prioritisation   – Flow  Control   – Server  Push   • Header  Compression Multiplexed  Binary  Frames 42 POST  /upload  HTTP/1.1   Host:  www.test.com   Content-­‐Type:  application/json   Content-­‐Length:  15   {“name”:“duke”} HTTP  1.1 HTTP/2 HEADERS  frame DATA  frame
  • 43. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   Servlet  4.0 • Request/response  multiplexing   – Servlet  Request  as  HTTP/2  message   • Stream  prioritization   – Add  stream  priority  to  HttpServletRequest   • Server  push   • Binary  framing   • Upgrade  from  HTTP  1.1 HTTP/2  Features  in  Servlet  API 43
  • 44. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   JSF  2.3 • CDI  Alignment   – @Inject  FacesContext,  ExternalContext,  etc.   – Rely  on  CDI  for  EL  resolving   – CDI  managed  versions  of  Validator  and  Converter   – Invoking  CDI  managed  bean  methods  directly  from  Ajax,  etc.   • “Adjustments”  for  MVC   – Facelets,  JSF  scopes,  etc.   • Misc.   – Multi-­‐field  validation,  etc. 44
  • 45. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   Java  EE  8  Themes • HTML5  /  Web  Tier  Enhancements   • Ease  of  Development   • Infrastructure  for  running  in  the  Cloud 45
  • 46. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   Ease  of  Development • CDI  alignment   • JAX-­‐RS  injection  alignment   • Simplified  messaging  through  CDI-­‐based  “MDBs”   • WebSocket  scopes   • Pruning  of  EJB  2.x  client  view  and  IIOP  interoperability   • Security  interceptors   • … 46
  • 47. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   JMS  2.1 • Alternative  to  EJB  message-­‐driven  beans   • Simpler  JMS-­‐specific  annotations   • Usable  by  any  CDI  bean   • No  need  for  MessageListener  implementation New  API  to  receive  messages  asynchronously 47
  • 48. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   JMS @MessageDriven(activationConfig  =  {      @ActivationConfigProperty(propertyName="connectionFactoryLookup",  propertyValue="jms/myCF"),      @ActivationConfigProperty(propertyName="destinationLookup",  propertyValue="jms/myQueue"),      @ActivationConfigProperty(propertyName="destinationType",  propertyValue="javax.jms.queue")})   public  class  MyMDB  implements  MessageListener  {        public  void  onMessage(Message  message)  {                //  extract  message  body                String  body  =  message.getBody(String.class));                //  process  message  body        }   }     JMS  MDBs  Today 48
  • 49. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   JMS  2.1 public  class  MyListenerBean  {        @JMSListener(destinationLookup="jms/myQueue")        @Transactional        public  void  myCallback(Message  message)  {        ...        }   } Allow  any  Java  EE  bean  to  be  a  listener 49
  • 50. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   • Java  SE  support   • Modularity   • Enhanced  Events   • Misc.   – AOP   – SPI   – Interceptors  and  Decorators  enhancements   – Cleaning   50 CDI  2.0
  • 51. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   CDI  2.0 • Add  new  features  to  CDI  without  bloating  the  specification   • “Sub  specification”(aka  “parts”)  that  can  be  used  independently   • Will  help  CDI  adoption   • Parts   – SE   – EE   – more? 51 Modularity
  • 52. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   52 public  class  ProducerClass  {     @Inject  Event<SomeEvent>  someEvent;     public  void  someMethod(...)  {       ...       someEvent.fire(...);     }   } CDI  2.0 Asynchronous  Events public  class  AnotherClass  {              public  void  someObserver(@Observes  SomeEvent  someEvent)  {        ...              }   } public  class  AsynchProducerClass  {                    @Inject  Event<Payload>  someEvent;            public  void  anotherMethod()  {        CompletionStage<…>  completionStage  someEvent.fireAsync(...);            }   }
  • 53. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   53 CDI  2.0 Events  Ordering public  void  importantObserver(@Observes  @Priority(1)  MyEvent  evt)   {   ...   }   public  void  anotherObserver(@Observes  @Priority(10)  MyEvent  evt)   {   ...   }
  • 54. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   Pruning Should  we  prune  EJB  2.x  remote  and  local  client  view  (EJBObject,  EJBLocalObject,   EJBHome,  and  EJBLocalHome  interfaces)?   Should  we  prune  CORBA,  including  support  for  interoperability  by  means  of  IIOP? Candidates  for  Proposed  Optional  status 54
  • 55. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   Java  EE  8  Themes • HTML5  /  Web  Tier  Enhancements   • Ease  of  Development   • Infrastructure  for  running  in  the  Cloud 55
  • 56. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   Modernize  the  Infrastructure • Java  EE  Management  2.0   – REST-­‐based  APIs  for  Management  and  Deployment   • Java  EE  Security  1.0   – Authorization   – Password  Aliasing   – User  Management   – Role  Mapping   – Authentication   – REST  Authentication For  On-­‐Premise  and  for  in  the  Cloud 56
  • 57. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   Management  and  Deployment  APIs Should  we  define  new  APIs  to  deploy  and  manage  applications?   Should  such  new  Deployment  and  Management  APIs  be  REST  APIs  or  JMX  APIs? 57
  • 58. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   Java  EE  Management  2.0 • Update  to  JSR  77  (“J2EE  Management”)   • REST-­‐based  interfaces  to  augment  (or  replace)  current  Management  EJB   APIs   – Currently  used  OBJECT_NAME  to  become  URL   – Define  CRUD  operations  over  individual  managed  objects   – Server-­‐sent  events  used  for  event  support   • Simple  deployment  interfaces  also  to  be  considered  as  part  of   management  API 58
  • 59. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   Security  Simplifications Should  we  consider  adding  Security  Interceptors  in  Java  EE  8?   Should  we  simplify  authorization  by  introducing  an  EL-­‐enabled  authorization   annotation? 59
  • 60. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   Java  EE  Security  1.0 @IsAuthorized("hasRoles('Manager')  &&  schedule.officeHrs")   void  transferFunds()   @IsAuthorized("hasRoles('Manager')  &&  hasAttribute('directReports',  employee.id)")   double  getSalary(long  employeeId);   @IsAuthorized(ruleSourceName="java:app/payrollAuthRules",  rule="report")   void  displayReport(); Authorization  via  CDI  Interceptors 60
  • 61. 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   • Password  Aliasing   • User  Management   • Role  Mapping   • Authentication   • REST  Authentication   61
  • 62. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   Java  EE  8  Themes • HTML5  /  Web  Tier  Enhancements   • Ease  of  Development   • Infrastructure  for  running  in  the  Cloud   • Java  SE  8  alignment 62
  • 63. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   Java  EE  8  JSRs • Java  EE  8  Platform  (JSR  366)   • CDI  2.0  (JSR  365)   • JSON  Binding  1.0  (JSR  367)   • JMS  2.1  (JSR  368)     • Java  Servlet  4.0  (JSR  369)     • JAX-­‐RS  2.1  (JSR  370)   • MVC  1.0  (JSR  371)  *     • JSF  2.3  (JSR  372)   • Java  EE  Management  2.0  (JSR  373)   • JSON-­‐P  1.1  (JSR  374)   • Java  EE  Security  1.0  (JSR  375) So  far….. 63
  • 64. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   And  More  to  Follow… • Bean  Validation   • EL     • Concurrency  Utilities   • Connector  Architecture   • WebSocket   • Interceptors   • JPA   • EJB   • JTA   • JCache   • Batch   • JavaMail   • … 64
  • 65. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   Roadmap • Tentative  Delivery  Schedule   – Q3  2014:  JSR  369  Expert  Group  formed   – Q1  2015:  early  draft   – Q3  2015:  public  review   – Q4  2015:  proposed  final  draft   – Q3  2016:  final  release   • TBC!   • Contribute!
  • 66. 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
  • 67. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   Thanks 67
  • 68. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   68