SlideShare a Scribd company logo
1 of 80
Download to read offline
HKJUG&
December&2015&
David&Delabassee&
@delabassee&
Oracle
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.**
What's*Coming*in*Java*EE*8
1
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee
Safe*Harbor*Statement
The*following*is*intended*to*outline*our*general*product*direction.*It*is*intended*for*
information*purposes*only,*and*may*not*be*incorporated*into*any*contract.*It*is*not*a*
commitment*to*deliver*any*material,*code,*or*functionality,*and*should*not*be*relied*upon*
in*making*purchasing*decisions.*The*development,*release,*and*timing*of*any*features*or*
functionality*described*for*Oracle’s*products*remains*at*the*sole*discretion*of*Oracle.
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.*
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee
Agenda
How*did*we*get*here?*
What*do*we*want*to*do?*
How*can*you*get*involved?
Preview&of&Java&EE&8
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee
Industry*Trends*We're*Seeing
Cloud
Mobile
HTTP/2
SECURITY
Reactive&Programming
User*Experience
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee
CommunityQPrioritized*Features
7
http://glassfish.org/survey
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee
Java*EE*8*Themes
• HTML5*/*Web*Tier*Enhancements*
• Ease*of*Development*
• Infrastructure*for*running*in*the*Cloud
8
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee
Java*EE*8*Themes
• HTML5*/*Web*Tier*Enhancements*
• Ease*of*Development*
• Infrastructure*for*running*in*the*Cloud
8
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee
HTML5*Support*/*Web*Tier*Enhancements
• JSON*Binding*
• JSON*Processing*enhancements*
• ServerQsent*Events*
• ActionQbased*MVC*
• HTTP/2*support
9
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee
JSONQP*1.1
Java&API&for&JSON&Processing
• Keep*JSONQP*spec*upQtoQdate*
• Track*new*standards*
• Add*editing*operations*to*JsonObject*and*JsonArray*
• Java*SE*8*
• JSON*Big*Data
10
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee
JSONQP*1.1
• String*syntax*for*referencing*a*JSON*value*
* "/0/phone/mobile"
JSONMPointer&–&IETF&RFC&6901
11
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee
JSONQP*1.1
JsonArray)contacts)=)…)
JsonPointer)pointer)=)new)JsonPointer("/0/name");)
JsonValue)value)=)pointer.getValue(contacts);)
[*
){*
))))"name":"Duke",*
))))"gender":"M",*
))))"phones":{*
)))))))"home":"650K123K4567",*
)))))))"mobile":"650K234K5678"}},*
)){*
))))"name":"Jane",)
))))"gender":"F",)
))))"phones":{*
)))))))"mobile":"707K555K9999"}}*
]*
))
12
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee
JSONQP*1.1
• String*syntax*for*referencing*a*JSON*value*
* “/0/name"*
• Methods*
– getValue()*
– JSON*operations:*add(),*replace(),*remove()
JSONMPointer&–&IETF&RFC&6901
)JsonPointer)pointer)=)new)JsonPointer("/0/name");)
)JsonArray)result)=)pointer.replace(contacts,)Json.createValue("Alex"));
13
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee
JSONQP*1.1
• Patch*is*a*JSON*document*
– Array*of*objects*/*operations*for*modifying*a*JSON*document*
– add,*replace,*remove,*move,*copy,*test
JSONMPatch&–&IETF&RFC&6902
[)
))){"op":"replace","path":"/0/phones/mobile","value":"650K111K222"},)
))){"op":"remove","path":"/1"})
]
14
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee
JSONQP*1.1
[)
){)
))"op":"replace",)
))"path":"/0/phones/mobile",)
))"value":"650211122222"},)
){)
))"op":"remove",)
))"path":"/1"})
]
[*
){*
))))"name":"Duke",*
))))"gender":"M",*
))))"phones":{*
)))))))"home":"650K123K4567",*
)))))))"mobile":"650211122222"}},*
)){*
))))"name":"Jane",)
))))"gender":"F",)
))))"phones":{*
)))))))"mobile":"707K555K9999"}}*
]*
))
16
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee
JSONQP*1.1
[)
){)
))"op":"replace",)
))"path":"/0/phones/mobile",)
))"value":"650K111K2222"},)
){)
))"op":"remove",)
))"path":"/1"})
]
[*
){*
))))"name":"Duke",*
))))"gender":"M",*
))))"phones":{*
)))))))"home":"650K123K4567",*
)))))))"mobile":"650K111K2222"}}*
])
))
17
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee
)JsonArray)target)=)…;)
)JsonArray)patch)=)…;)
))
)JsonPatch)jsonPatch)=)new)JsonPatch(patch);)
)JsonArray)result)=)jsonPatch.apply(target);
JSONQP*1.1
)JsonPatchBuilder)builder)=)new)JsonPatchBuilder();)
)JsonArray)result)=)builder.add("/Joe/phones/office",)"1234K567"))
))))))))))))))))))))))))))).remove("/Amy/age"))
))))))))))))))))))))))))))).apply(contacts);
18
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee
JSONQP*1.1
JSONMMerge&Patch&–&IETF&RFC&7386
Orignal****************Patch*******************Result&
{"a":"b"}*************{"a":"c"}**************{"a":"c"}*
{"a":"b"}*************{"b":"c"}**************{"a":"b",*
***********************************************************"b":"c"}*
{"a":"b"}*************{"a":null}*************{*}*
{"a":"b",*************{"a":null}*************{"b":"c"}*
*"b":"c"}*
{*}*************************{"a":*********************{"a":*
*******************************{"bb":******************{"bb":*
***********************************{"ccc":****************{}}}*
***************************************null}}}*
19
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee
JSONQP*1.1
{)
)))))"title":)"Hello!",)
)))))"author":){)
))))))))))))"familyName":)null)
))))))},)
))))))"tags":)[;"example";],)
))))))"phoneNumber":)"+012123245627890")
)})
{)
))))"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":)"+01K123K456K7890")
)})
))
JSONMMerge&Patch&–&IETF&RFC&7386
20
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee
)JsonObject)contact)=)…;)//)The)target)to)be)patched)
)JsonObject)patch)=)…;)
))
)JsonValue)output)=)JsonMergePatch.mergePatch(target,)patch);
JSONQP*1.1
JSONMMerge&Patch&–&IETF&RFC&7386
21
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee
JSONQP*1.1
• Reverse*operation*
– Given*two*objects*returns*the*patch*to*apply*(diff)*
JSONMPatch&&&JSONMMerge&Patch&Diff
JsonValue)output)=)JsonMergePatch.diff(original,)target);)
JsonArray)diff)=)JsonPatch.diff(original,)target);
22
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee
JSONQP*1.1
JSON&Query&using&Streams
JsonArray)cars)=)...;)
List<String>)audis)=)cars.getValuesAs(JsonObject.class).stream())
))))))))))))))))))))))))).filter(xK>"Audi".equals(x.getString("brand"))))
))))))))))))))))))))))))).map(xK>(x.getString("serial")))
))))))))))))))))))))))))).collect(Collectors.toList());
23
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee
JSONQP*1.1
JSON&Query&using&Streams
JsonArray)cars)=)...;*
JsonArray)audis)=)cars.getValuesAs(JsonObject.class).stream()*
*****************************************************.filter(xK>"Audi".equals(x.getString("brand")))*
*****************************************************.map(xK>(x.getString("serial"))*
*****************************************************.collect(JsonCollectors.toJsonArray());
24
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee
JSONQP*1.1
• Keep*JSONQP*spec*upQtoQdate*
• Track*new*standards*
• Add*editing*operations*to*JsonObject*and*JsonArray*
• Java*SE*8*
• JSON*Big*Data
JSR&374
25
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee
JSONQB
• 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
26
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee
JSONQB
• Draw*from*best*practices*of*existing*JSON*binding*implementations*
– Jackson,*Genson,*EclipseLink&MOXy,*Fleece,*JSONQlib,*Gson,*Flexjson,*JsonQio,*
JSONiJ,*Johnzon,*Xstream,*etc.*
• Switch*JSON*binding*providers*
• Implementations*compete*on*common*ground
Standard&API
27
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee
JSONQB
// from default JsonbBuilder instance of the default JsonbProvider
Jsonb jsonb = JsonbBuilder.create();
JsonbProvider myProvider =
JsonbProvider.provider("foo.bar.ProviderImpl");
Jsonb jsonb = JsonbBuilder.newBuilder(myProvider);
// UnMarshall
Book book = jsonb.fromJson(new File("myBook.json"), Book.class);
// Marshall
String result = jsonb.toJson(myObject);
jsonb.toJson(myObject, new File(“foo.json”));
jsonb.toJson(myObject, new PrintWriter(System.out));
28
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee
JAXQRS*2.1
29
• Improving*integration*with*CDI*
• JSONQB*Integration*
• NIO*support*in*providers*(filters,*interceptors,*…)*
• Building*upon*the*hypermedia*API*
• JAXQRS*resource*classes*as*MVC*controllers*
• Reactive*API*
• ServerQsent*Events,*etc.
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee
JAXQRS*2.1
…*
CompletionStage<List<String>>)cs)=)
)))))))))))))))))client.target("forecast/{destination}"))
))))))))))))))))))))))).resolveTemplate("destination",)"mars"))
))))))))))))))))))))))).request())
))))))))))))))))))))))).header("RxKUser",)"Java8"))
))))))))))))))))))))))).rx())//)CompletionStageRxInvoker)
))))))))))))))))))))))).get(new)GenericType<List<String>>()){)
)))))))))))))))))))))))});)
cs.thenAccept(l)K>)System.out.println(l));
Reactive&Client&API
30
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee
• Servlet,*WebSocket,*JAXQRS*or*standalone*API?*
• JAXQRS*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
JAXQRS*2.1
ServerMsent&Events
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee
ServerQsent*Events
@Path("tickers"))
public)class)StockTicker){)
…)
)))@Get)
)))@Produces("text/event2stream"))
)))public)EventOutput)getQuotes()){)
)))))))EventOutput)eo)=)new)EventOutput();)
)))))))new)StockThread(eo).start())
)))))))return)eo;)
)))})
}
JAXMRS&resource&class
32
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee
JAXMRS&StockThread&class
class)StockThread)extends)Thread){*
*private)EventOutput)eo;)
)…)
)@Override
public)void)run()){
)))))))try){
…
)))))))))))eo.send(new)StockQuote("..."));)
)))))))})catch)(IOException)e)){)…)}
}
}
ServerQsent*Events
33
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee
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();
JAXMRS&Client
ServerQsent*Events
34
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee
HTTP*1.1*circa*1999
• HoLB*
• HTTP*uses*TCP*poorly*
- HTTP*flows*are*short*and*bursty*
- TCP*was*built*for*longQlived*flows*
• Solutions*
- File*concatenations,*Assets*Inlining,*Domain*sharding,*etc.
Problems&Vs&Solutions
35
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee
HTTP/2
• HTTP/2*
– Hypertext*Transfer*Protocol*version*2*Q*RFC*7540*
– HPACK*Q*Header*Compression*for*HTTP/2*Q*RFC*7541*
• Reduce*latency*
• Address*the*HOL*blocking*problem*
• Support*parallelism*
• Define*interaction*with*HTTP*1.x*
• Retain*semantics*of*HTTP*1.1
Address&the&Limitations&of&HTTP&1.x
36
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved. 37 @delabassee
HTTP/2
Connections,&Streams,&Messages,&Frames
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee
HTTP/2
• One*TCP*Connection*
• Request*Q>*Stream*
– Multiplexed*
– Prioritised*
• Binary*Framing*Layer*
– Prioritisation*
– Flow*Control*
– Server*Push*
• Header*Compression
Address&HTTP&1.x&Limitations POST*/upload*HTTP/1.1*
Host:*www.test.com*
ContentQType:*application/json*
ContentQLength:*15*
{“name”:“duke”}
HTTP&1.1 HTTP/2
HEADERS&frame
DATA&frame
38
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee
HTTP/2
Server&Push
/index.html*:*stream*1*
/style.css*:*stream*2*
/logo.png*:*stream*4
Client Server
stream&1&
HEADERS
stream&1&
FRAME&x
stream&2&
PROMISE
stream&4&
PROMISE
39
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee
HTTP/2
Header&Compression
40
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee
Servlet*4.0
• Request/response*multiplexing*
– Servlet*Request*as*HTTP/2*message*
• Stream*prioritization*
• Server*push*
• Binary*framing*
• Upgrade*from*HTTP*1.1
HTTP/2&Features&in&Servlet&API
41
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee
Servlet*4.0
• Request/response*multiplexing*
– Servlet*Request*as*HTTP/2*message*
• Stream*prioritization*
• Server*push*
• Binary*framing*
• Upgrade*from*HTTP*1.1
HTTP/2&Features&in&Servlet&API
41
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved. @delabassee
PushBuilder;builder = baseRequest.getPushBuilder();
builder.addHeader(“X-Pusher", …);
builder.path(aResource)
.etag(associated._etag)
.lastModified(associated._lastModified)
.push();
42
Servlet*4.0
Server&Push
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved. @delabassee
ActionQbased*MVC
• Controller(s)*defined*by*the*application*
• Examples*
– Struts*1*(end*of*life),*Struts*2*
– Spring*MVC*
• No*standard*Java*EE*implementation*
– JSR*371*
– “ActionQbased”*MVC*1.0*JSR*
– Targeted*for*inclusion*in*Java*EE*8
43
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee
MVC*1.0
• ActionQbased*MVC*
• Glues*together*key*Java*EE*technologies*
– Model*:*CDI,*Bean*Validation,*JPA*
– *View*:*Facelets,*JSP,*more?*
– *Controller*:*Invent*new*technology*Vs.*Leverage*existing*technologies
44
Principles
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved. @delabassee
Controller
• Combine*data*models*and*views*to*produce*web*application*pages
@Path("hello")
public class HelloController {
@GET
@Controller
public String hello() {
// do something
return “hello.jsp”;
}
}
45
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved. @delabassee
Controller
• Class/method*decorated*with*@Controller
@Path(“hello")
@Controller
public class HelloController {
@GET @View(“hello.md”)
public void hello() {
// do business stuff
}
}
46
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved. @delabassee
Controller
@Path(“hello")
@Controller
public class HelloController {
@GET
public Viewable hello() {
// some other stuff
return new Viewable("hello.adoc");
}
}
47
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved. @delabassee
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();
}
}
48
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved. @delabassee
Model
• CDI*@Named*bean*
• javax.mvc.Models*interface
49
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved. @delabassee
Model
@Named(“greeting”)
@RequestScoped
public class Greeting {
private String message;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
50
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved. @delabassee
Model
@Path(“hello”)
public class HelloController {
@Inject
private Models models;
@GET
@Controller
public String hello() {
models.set(“greeting”, new Greeting(“Salut”));
return “hello.jsp”;
}
}
51
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved. @delabassee
View
• Define*the*structure*of*the*output*
• Can*refer*to*model(s)*
• Rendered*by*a*View*Engine*
– JSP*
– Facelets*
• Not*accessible*as*static*resources*
– /WEBQINF/views/*
52
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee
View
<html>
<head>
<title>FreeMarker</title>
</head>
<body>
<p>Hello ${user}</p>
…
</body>
</html>
53
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved. @delabassee
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,*Jade,*AsciiDoc,*…
54
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved. @delabassee
MVC
• New*annotations*
– @Controller,*@View,*@csrf,*@RedirectScoped*
• Doing*MVC*now*is*not*a*bad*idea*
– Leveraging*CDI,*JAXQRS,*Facelets,*BV*
– More?*Servlet*4.0’s*ServerPush*
– Easy*migration*path*for*JSPs*
• Offers*more*choices
55
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved. @delabassee
JavaServer*Faces
56
• CDI*Alignment*
– @Inject*FacesContext,*ExternalContext,*etc.*
– CDI*managed*versions*of*Validator*and*Converter*
– Rely*on*CDI*for*EL*resolving*
– Invoking*CDI*managed*bean*methods*directly*from*Ajax,*etc.*
• “Adjustments”*for*MVC*
• Misc.*
– MultiQfield*validation,*etc.
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee
Java*EE*8*Themes
• HTML5*/*Web*Tier*Enhancements*
• Ease*of*Development*
• Infrastructure*for*running*in*the*Cloud
57
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee
Ease*of*Development
• CDI*alignment*
• JAXQRS*injection*alignment*
• Simplified*messaging*through*CDIQbased*“MDBs”*
• WebSocket*scopes*
• Pruning*of*EJB*2.x*client*view*and*IIOP*interoperability*
• Security*interceptors*
• …
58
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee
JMS
@MessageDriven(activationConfig)=){)
))@ActivationConfigProperty(propertyName="connectionFactoryLookup",)propertyValue="jms/myCF"),)
))@ActivationConfigProperty(propertyName="destinationLookup",)propertyValue="jms/myQueue"),)
))@ActivationConfigProperty(propertyName="destinationType",)propertyValue="javax.jms.queue")}))
public)class)MyMDB)implements)MessageListener){)
)))public)void)onMessage(Message)message)){)
)))))))//)extract)message)body)
)))))))String)body)=)message.getBody(String.class));)
)))))))//)process)message)body)
)))})
}))
MDBs&Today
59
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee
JMS*2.1
)@MessageDriven)
)public)class)MyMessageBean)implements;JMSMessageDrivenBean){)
))
)))@JMSQueueListener(destinationLookup=“java:global/TradesQ”))
)))public)void)processTrade(TextMessage)tradeMessage){)
)))))...)
)))})
)}
“Flexible&MDBs”
60
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee
JMS*2.1
@Dependent)
public)class)MyCDIBean21){)
)))))@JMSQueueListener(destinationLookup=“java:global/requestQueue”))
)))))public)void)myMessageCallback(Message)message)){)
)))))))...)
)))))})
}
CDI&beans&as&message&listener?
61
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee
• Java*SE*support*
• Modularity*
• Enhanced*Events*
• Misc.*
– AOP*
– SPI*
– Interceptors*and*Decorators*enhancements*
– Cleaning*
62
CDI*2.0
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee
CDI*2.0
• Add*new*features*to*CDI*without*bloating*the*specification*
• “Sub*specification”(aka*“parts”)*that*can*be*used*independently*
– SE*
– EE*
– more?*
• Will*help*CDI*adoption
63
Modularity
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee64
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)){)
)))...)
))))))})
}
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee64
public)class)ProducerClass){)
; @Inject;Event<SomeEvent>;someEvent;;
) public)void)someMethod(...)){)
) ) ...)
) ) someEvent.fire(...);)
) })
}
CDI*2.0
Asynchronous&Events
public)class)AsynchProducerClass){)))))
;;;;;@Inject;Event<Payload>;someEvent;;
)))))public)void)anotherMethod()){)
)))CompletionStage<…>)completionStage)someEvent.fireAsync(...);)
)))))})
}
public)class)AnotherClass){)
))))))public)void)anotherObserver(@ObservesAsync;SomeEvent;someEvent)){)
)))...)
))))))})
}
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee65
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.* @delabassee
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
66
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee
Java*EE*8*Themes
• HTML5*/*Web*Tier*Enhancements*
• Ease*of*Development*
• Infrastructure*for*running*in*the*Cloud
67
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee
Java*EE*Management*2.0
• Update*to*JSR*77*(“J2EE*Management”)*
• RESTQbased*interfaces*to*augment*(or*replace)*current*Management*EJB*
APIs*
– Currently*used*OBJECT_NAME*to*become*URL*
– Define*CRUD*operations*over*individual*managed*objects*
– ServerQsent*events*used*for*event*support*
• Simple*deployment*interfaces*also*to*be*considered*as*part*of*
management*API
68
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee
Java*EE*Security*1.0
Identity&Store
@Inject**
IdentityStore*idStore;**
Credential*cred*=*new*UsernamePasswordCredential("john",new*Password("secret"));*
CredentialValidationResult*result*=*idStore.validate(cred);*
if*(Status.VALID*==*result.getStatus())*{*
*******groups*=*result.getGroups();*
*******…*
}*else*{*
*******//*Invalid*or*not*validated*
*******…*
}*
69
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee
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
70
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee
Java*EE*Security*1.0
Candidate&Areas&to&Enhance&Portability,&Flexibility,&EaseMofMUse
• Authorization*Interceptors*
• User*Management*
• Role*Mapping*
• Authentication*
• REST*Authentication*
• Password*Aliasing*
71
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee
Java*EE*8*Themes
• HTML5*/*Web*Tier*Enhancements*
• Ease*of*Development*
• Infrastructure*for*running*in*the*Cloud*
• Java*SE*8*alignment
72
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved. @delabassee
Java*EE*8
• Java&EE&8&Platform&(JSR&366)
• CDI&2.0&(JSR&365)
• JSON&Binding&1.0&(JSR&367)
• JMS*2.1*(JSR*368)*
• Servlet*4.0*(JSR*369)*
• JAXQRS*2.1*(JSR*370)
• MVC&1.0&(JSR&371)&
• JSF&2.3&(JSR&372)
• Java*EE*Management*2.0*(JSR*373)
• JSONMP&1.1&(JSR&374)
• Java*EE*Security*1.0*(JSR*375)
So&far…..
73
&&&&&&&&&&Early&Draft&Review
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee
More*to*Follow…
• Batch**
• JPA&
• Bean*Validation*
• Connector*Architecture*
• WebSocket*
• Interceptors*
• EJB*
• JTA*
• JCache*
• Concurrency*Utilities**
• JavaMail*
• …
74
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee
Transparency
• Our*Java*EE*8*JSRs*run*in*the*open*on*java.net*
– http://javaeeQspec.java.net*
– One*project*per*JSR*–*jaxQrsQspec,*mvcQspec,*servletQspec,…*
• Publicly*viewable*Expert*Group*mail*archive*
– Users*observer*lists*gets*all*copies*
• Publicly*accessible*issue*tracker*/*JIRA**
• Publicly*accessible*download*area*
• …
Commitment&to&JCP&transparent&processes
76
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee
Adopt*A*JSR*for*Java*EE*8
• Make*Java*EE*8*the*most*community*driven*platform*to*date!*
- Share*ideas*and*feedback*(e.g.*fill*issues)*
- Follow*EG*discussions,*chime*in*
- Read*early*versions*of*specifications,*Javadocs*
- Write*apps*using*early*RI*builds*
- Write,*speak*about*the*technology*
- Encourage*others*to*participate,*etc.*
• http://glassfish.org/adoptajsr
77
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee
How*to*Get*Involved
• Join*an*Expert*Group*
– http://javaeeQspec.java.net*
• Adopt*a*JSR*
– http://glassfish.org/adoptajsr*
• The*Aquarium*
– http://blogs.oracle.com/theaquarium*
• Java*EE*Reference*Implementation*
– http://glassfish.org
78
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee
Thanks!
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.*

More Related Content

What's hot

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
 
Another compilation method in java - AOT (Ahead of Time) compilation
Another compilation method in java - AOT (Ahead of Time) compilationAnother compilation method in java - AOT (Ahead of Time) compilation
Another compilation method in java - AOT (Ahead of Time) compilationLogico
 
Java EE 8 Overview (Japanese)
Java EE 8 Overview (Japanese)Java EE 8 Overview (Japanese)
Java EE 8 Overview (Japanese)Logico
 
Nonblocking Database Access in Helidon SE
Nonblocking Database Access in Helidon SENonblocking Database Access in Helidon SE
Nonblocking Database Access in Helidon SEDmitry Kornilov
 
Java Embedded у вас дома
Java Embedded у вас домаJava Embedded у вас дома
Java Embedded у вас домаDiana Dymolazova
 
Supercharge your Code to get optimal Database Performance
Supercharge your Code to get optimal Database PerformanceSupercharge your Code to get optimal Database Performance
Supercharge your Code to get optimal Database Performancegvenzl
 
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
 
Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur!
Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur! Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur!
Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur! David Delabassee
 
Java API for WebSocket 1.0: Java EE 7 and GlassFish
Java API for WebSocket 1.0: Java EE 7 and GlassFishJava API for WebSocket 1.0: Java EE 7 and GlassFish
Java API for WebSocket 1.0: Java EE 7 and GlassFishArun Gupta
 
Your Code Isn’t Static. Your Processes Shouldn’t be Either.
Your Code Isn’t Static. Your Processes Shouldn’t be Either.Your Code Isn’t Static. Your Processes Shouldn’t be Either.
Your Code Isn’t Static. Your Processes Shouldn’t be Either.DevOps.com
 
Java 9 New Features | Java Tutorial | What’s New in Java 9 | Java 9 Features ...
Java 9 New Features | Java Tutorial | What’s New in Java 9 | Java 9 Features ...Java 9 New Features | Java Tutorial | What’s New in Java 9 | Java 9 Features ...
Java 9 New Features | Java Tutorial | What’s New in Java 9 | Java 9 Features ...Edureka!
 
Pi Day 2022 - from IoT to MySQL HeatWave Database Service
Pi Day 2022 -  from IoT to MySQL HeatWave Database ServicePi Day 2022 -  from IoT to MySQL HeatWave Database Service
Pi Day 2022 - from IoT to MySQL HeatWave Database ServiceFrederic Descamps
 
What do Technical Support want from Technical Communicators
What do Technical Support want from Technical CommunicatorsWhat do Technical Support want from Technical Communicators
What do Technical Support want from Technical CommunicatorsLee Mullin
 
MySQL InnoDB Cluster - Advanced Configuration & Operations
MySQL InnoDB Cluster - Advanced Configuration & OperationsMySQL InnoDB Cluster - Advanced Configuration & Operations
MySQL InnoDB Cluster - Advanced Configuration & OperationsFrederic Descamps
 
Getting Started: Developing Tropo Applications
Getting Started: Developing Tropo ApplicationsGetting Started: Developing Tropo Applications
Getting Started: Developing Tropo ApplicationsCisco DevNet
 
MySQL Group Replication: Handling Network Glitches - Best Practices
MySQL Group Replication: Handling Network Glitches - Best PracticesMySQL Group Replication: Handling Network Glitches - Best Practices
MySQL Group Replication: Handling Network Glitches - Best PracticesFrederic Descamps
 
MySQL Tech Café #8: MySQL 8.0 for Python Developers
MySQL Tech Café #8: MySQL 8.0 for Python DevelopersMySQL Tech Café #8: MySQL 8.0 for Python Developers
MySQL Tech Café #8: MySQL 8.0 for Python DevelopersFrederic Descamps
 
Sitecore on containers and AKS
Sitecore on containers and AKSSitecore on containers and AKS
Sitecore on containers and AKSBart Plasmeijer
 
Sitecore loves containers
Sitecore loves containersSitecore loves containers
Sitecore loves containersBart Plasmeijer
 

What's hot (19)

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
 
Another compilation method in java - AOT (Ahead of Time) compilation
Another compilation method in java - AOT (Ahead of Time) compilationAnother compilation method in java - AOT (Ahead of Time) compilation
Another compilation method in java - AOT (Ahead of Time) compilation
 
Java EE 8 Overview (Japanese)
Java EE 8 Overview (Japanese)Java EE 8 Overview (Japanese)
Java EE 8 Overview (Japanese)
 
Nonblocking Database Access in Helidon SE
Nonblocking Database Access in Helidon SENonblocking Database Access in Helidon SE
Nonblocking Database Access in Helidon SE
 
Java Embedded у вас дома
Java Embedded у вас домаJava Embedded у вас дома
Java Embedded у вас дома
 
Supercharge your Code to get optimal Database Performance
Supercharge your Code to get optimal Database PerformanceSupercharge your Code to get optimal Database Performance
Supercharge your Code to get optimal Database Performance
 
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
 
Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur!
Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur! Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur!
Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur!
 
Java API for WebSocket 1.0: Java EE 7 and GlassFish
Java API for WebSocket 1.0: Java EE 7 and GlassFishJava API for WebSocket 1.0: Java EE 7 and GlassFish
Java API for WebSocket 1.0: Java EE 7 and GlassFish
 
Your Code Isn’t Static. Your Processes Shouldn’t be Either.
Your Code Isn’t Static. Your Processes Shouldn’t be Either.Your Code Isn’t Static. Your Processes Shouldn’t be Either.
Your Code Isn’t Static. Your Processes Shouldn’t be Either.
 
Java 9 New Features | Java Tutorial | What’s New in Java 9 | Java 9 Features ...
Java 9 New Features | Java Tutorial | What’s New in Java 9 | Java 9 Features ...Java 9 New Features | Java Tutorial | What’s New in Java 9 | Java 9 Features ...
Java 9 New Features | Java Tutorial | What’s New in Java 9 | Java 9 Features ...
 
Pi Day 2022 - from IoT to MySQL HeatWave Database Service
Pi Day 2022 -  from IoT to MySQL HeatWave Database ServicePi Day 2022 -  from IoT to MySQL HeatWave Database Service
Pi Day 2022 - from IoT to MySQL HeatWave Database Service
 
What do Technical Support want from Technical Communicators
What do Technical Support want from Technical CommunicatorsWhat do Technical Support want from Technical Communicators
What do Technical Support want from Technical Communicators
 
MySQL InnoDB Cluster - Advanced Configuration & Operations
MySQL InnoDB Cluster - Advanced Configuration & OperationsMySQL InnoDB Cluster - Advanced Configuration & Operations
MySQL InnoDB Cluster - Advanced Configuration & Operations
 
Getting Started: Developing Tropo Applications
Getting Started: Developing Tropo ApplicationsGetting Started: Developing Tropo Applications
Getting Started: Developing Tropo Applications
 
MySQL Group Replication: Handling Network Glitches - Best Practices
MySQL Group Replication: Handling Network Glitches - Best PracticesMySQL Group Replication: Handling Network Glitches - Best Practices
MySQL Group Replication: Handling Network Glitches - Best Practices
 
MySQL Tech Café #8: MySQL 8.0 for Python Developers
MySQL Tech Café #8: MySQL 8.0 for Python DevelopersMySQL Tech Café #8: MySQL 8.0 for Python Developers
MySQL Tech Café #8: MySQL 8.0 for Python Developers
 
Sitecore on containers and AKS
Sitecore on containers and AKSSitecore on containers and AKS
Sitecore on containers and AKS
 
Sitecore loves containers
Sitecore loves containersSitecore loves containers
Sitecore loves containers
 

Viewers also liked

Sist Informacion Clase 12 2009 1 7880
Sist Informacion Clase 12 2009 1 7880Sist Informacion Clase 12 2009 1 7880
Sist Informacion Clase 12 2009 1 7880Danieltorrealba
 
Presentazione melixa system
Presentazione melixa system Presentazione melixa system
Presentazione melixa system Melixa
 
Michael_Anderson_CV.NewFeb2017
Michael_Anderson_CV.NewFeb2017Michael_Anderson_CV.NewFeb2017
Michael_Anderson_CV.NewFeb2017Michael Anderson
 
Introduction to Hibernate Framework
Introduction to Hibernate FrameworkIntroduction to Hibernate Framework
Introduction to Hibernate FrameworkRaveendra R
 
Initial short film ideas
Initial short film ideasInitial short film ideas
Initial short film ideasFilipstojcic
 

Viewers also liked (9)

Sist Informacion Clase 12 2009 1 7880
Sist Informacion Clase 12 2009 1 7880Sist Informacion Clase 12 2009 1 7880
Sist Informacion Clase 12 2009 1 7880
 
Presentazione melixa system
Presentazione melixa system Presentazione melixa system
Presentazione melixa system
 
Ceip "Saco e Arce" 2016
Ceip "Saco e Arce"  2016Ceip "Saco e Arce"  2016
Ceip "Saco e Arce" 2016
 
Michael_Anderson_CV.NewFeb2017
Michael_Anderson_CV.NewFeb2017Michael_Anderson_CV.NewFeb2017
Michael_Anderson_CV.NewFeb2017
 
CSM_ADL_V1_JUGM
CSM_ADL_V1_JUGMCSM_ADL_V1_JUGM
CSM_ADL_V1_JUGM
 
Introduction to Hibernate Framework
Introduction to Hibernate FrameworkIntroduction to Hibernate Framework
Introduction to Hibernate Framework
 
Drafting
DraftingDrafting
Drafting
 
Matematika keuangan silabus
Matematika keuangan   silabusMatematika keuangan   silabus
Matematika keuangan silabus
 
Initial short film ideas
Initial short film ideasInitial short film ideas
Initial short film ideas
 

Similar to Java EE 8 Preview: Enhancements for JSON, Reactive Programming

Oracle Keynote from JMagghreb 2014
Oracle Keynote from JMagghreb 2014Oracle Keynote from JMagghreb 2014
Oracle Keynote from JMagghreb 2014Simon Ritter
 
GTRI.com Splunk for Vmware APP
GTRI.com Splunk for Vmware APPGTRI.com Splunk for Vmware APP
GTRI.com Splunk for Vmware APPZivaro Inc
 
Splunk Application logging Best Practices
Splunk Application logging Best PracticesSplunk Application logging Best Practices
Splunk Application logging Best PracticesGreg Hanchin
 
Building beacon-enabled apps with Oracle MCS
Building beacon-enabled apps with Oracle MCSBuilding beacon-enabled apps with Oracle MCS
Building beacon-enabled apps with Oracle MCSSteven Davelaar
 
London Java Community (LJC) Open Meeting Keynote - Nov 2015
London Java Community (LJC) Open Meeting Keynote - Nov 2015London Java Community (LJC) Open Meeting Keynote - Nov 2015
London Java Community (LJC) Open Meeting Keynote - Nov 2015Steve Elliott
 
[db tech showcase 2015 Sapporo HOKKAIDO] MySQL 5.7
[db tech showcase 2015 Sapporo HOKKAIDO] MySQL 5.7[db tech showcase 2015 Sapporo HOKKAIDO] MySQL 5.7
[db tech showcase 2015 Sapporo HOKKAIDO] MySQL 5.7Ryusuke Kajiyama
 
[db tech showcase 2015 Sapporo HOKKAIDO] MySQL as document database!?
[db tech showcase 2015 Sapporo HOKKAIDO] MySQL as document database!?[db tech showcase 2015 Sapporo HOKKAIDO] MySQL as document database!?
[db tech showcase 2015 Sapporo HOKKAIDO] MySQL as document database!?Ryusuke Kajiyama
 
Splunk Beyond application monitoring PDF
Splunk Beyond application monitoring PDFSplunk Beyond application monitoring PDF
Splunk Beyond application monitoring PDFGreg Hanchin
 
Making DevOps Secure with Docker on Solaris (Oracle Open World, with Jesse Bu...
Making DevOps Secure with Docker on Solaris (Oracle Open World, with Jesse Bu...Making DevOps Secure with Docker on Solaris (Oracle Open World, with Jesse Bu...
Making DevOps Secure with Docker on Solaris (Oracle Open World, with Jesse Bu...Jérôme Petazzoni
 
Using Edition-Based Redefinition for Zero Downtime PL/SQL Changes
Using Edition-Based Redefinition for Zero Downtime PL/SQL ChangesUsing Edition-Based Redefinition for Zero Downtime PL/SQL Changes
Using Edition-Based Redefinition for Zero Downtime PL/SQL ChangesChris Saxon
 
Jakarta EE: Today and Tomorrow
Jakarta EE: Today and TomorrowJakarta EE: Today and Tomorrow
Jakarta EE: Today and TomorrowDmitry Kornilov
 
Application Development with Oracle Database
Application Development with Oracle DatabaseApplication Development with Oracle Database
Application Development with Oracle Databasegvenzl
 
OOW15 - EBS Certification and Roadmap
OOW15 - EBS Certification and RoadmapOOW15 - EBS Certification and Roadmap
OOW15 - EBS Certification and Roadmapvasuballa
 
No sql from the web’s favourite relational database MySQL
No sql from the web’s favourite relational database MySQLNo sql from the web’s favourite relational database MySQL
No sql from the web’s favourite relational database MySQLMark Swarbrick
 
Hello worldswing.java
Hello worldswing.javaHello worldswing.java
Hello worldswing.javaSubhash Kumar
 
Oracle RAC - A Safe Investment into the Future of Your IT
Oracle RAC - A Safe Investment into the Future of Your ITOracle RAC - A Safe Investment into the Future of Your IT
Oracle RAC - A Safe Investment into the Future of Your ITMarkus Michalewicz
 
GlassFish Roadmap
GlassFish RoadmapGlassFish Roadmap
GlassFish Roadmapglassfish
 
Using Oracle Real Application Clusters (RAC) in Database as a Service
Using Oracle Real Application Clusters (RAC) in Database as a ServiceUsing Oracle Real Application Clusters (RAC) in Database as a Service
Using Oracle Real Application Clusters (RAC) in Database as a ServiceJean-Philippe PINTE
 

Similar to Java EE 8 Preview: Enhancements for JSON, Reactive Programming (20)

Oracle Keynote from JMagghreb 2014
Oracle Keynote from JMagghreb 2014Oracle Keynote from JMagghreb 2014
Oracle Keynote from JMagghreb 2014
 
Apex day 1.0 oracle apex 5.0 patrick wolf
Apex day 1.0 oracle apex 5.0 patrick wolfApex day 1.0 oracle apex 5.0 patrick wolf
Apex day 1.0 oracle apex 5.0 patrick wolf
 
GTRI.com Splunk for Vmware APP
GTRI.com Splunk for Vmware APPGTRI.com Splunk for Vmware APP
GTRI.com Splunk for Vmware APP
 
Splunk Application logging Best Practices
Splunk Application logging Best PracticesSplunk Application logging Best Practices
Splunk Application logging Best Practices
 
Building beacon-enabled apps with Oracle MCS
Building beacon-enabled apps with Oracle MCSBuilding beacon-enabled apps with Oracle MCS
Building beacon-enabled apps with Oracle MCS
 
London Java Community (LJC) Open Meeting Keynote - Nov 2015
London Java Community (LJC) Open Meeting Keynote - Nov 2015London Java Community (LJC) Open Meeting Keynote - Nov 2015
London Java Community (LJC) Open Meeting Keynote - Nov 2015
 
[db tech showcase 2015 Sapporo HOKKAIDO] MySQL 5.7
[db tech showcase 2015 Sapporo HOKKAIDO] MySQL 5.7[db tech showcase 2015 Sapporo HOKKAIDO] MySQL 5.7
[db tech showcase 2015 Sapporo HOKKAIDO] MySQL 5.7
 
[db tech showcase 2015 Sapporo HOKKAIDO] MySQL as document database!?
[db tech showcase 2015 Sapporo HOKKAIDO] MySQL as document database!?[db tech showcase 2015 Sapporo HOKKAIDO] MySQL as document database!?
[db tech showcase 2015 Sapporo HOKKAIDO] MySQL as document database!?
 
Oracle cmg15
Oracle cmg15Oracle cmg15
Oracle cmg15
 
Splunk Beyond application monitoring PDF
Splunk Beyond application monitoring PDFSplunk Beyond application monitoring PDF
Splunk Beyond application monitoring PDF
 
Making DevOps Secure with Docker on Solaris (Oracle Open World, with Jesse Bu...
Making DevOps Secure with Docker on Solaris (Oracle Open World, with Jesse Bu...Making DevOps Secure with Docker on Solaris (Oracle Open World, with Jesse Bu...
Making DevOps Secure with Docker on Solaris (Oracle Open World, with Jesse Bu...
 
Using Edition-Based Redefinition for Zero Downtime PL/SQL Changes
Using Edition-Based Redefinition for Zero Downtime PL/SQL ChangesUsing Edition-Based Redefinition for Zero Downtime PL/SQL Changes
Using Edition-Based Redefinition for Zero Downtime PL/SQL Changes
 
Jakarta EE: Today and Tomorrow
Jakarta EE: Today and TomorrowJakarta EE: Today and Tomorrow
Jakarta EE: Today and Tomorrow
 
Application Development with Oracle Database
Application Development with Oracle DatabaseApplication Development with Oracle Database
Application Development with Oracle Database
 
OOW15 - EBS Certification and Roadmap
OOW15 - EBS Certification and RoadmapOOW15 - EBS Certification and Roadmap
OOW15 - EBS Certification and Roadmap
 
No sql from the web’s favourite relational database MySQL
No sql from the web’s favourite relational database MySQLNo sql from the web’s favourite relational database MySQL
No sql from the web’s favourite relational database MySQL
 
Hello worldswing.java
Hello worldswing.javaHello worldswing.java
Hello worldswing.java
 
Oracle RAC - A Safe Investment into the Future of Your IT
Oracle RAC - A Safe Investment into the Future of Your ITOracle RAC - A Safe Investment into the Future of Your IT
Oracle RAC - A Safe Investment into the Future of Your IT
 
GlassFish Roadmap
GlassFish RoadmapGlassFish Roadmap
GlassFish Roadmap
 
Using Oracle Real Application Clusters (RAC) in Database as a Service
Using Oracle Real Application Clusters (RAC) in Database as a ServiceUsing Oracle Real Application Clusters (RAC) in Database as a Service
Using Oracle Real Application Clusters (RAC) in Database as a Service
 

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
 
EJB and CDI - Alignment and Strategy
EJB and CDI - Alignment and StrategyEJB and CDI - Alignment and Strategy
EJB and CDI - Alignment and StrategyDavid 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
 
What's coming in Java EE 8
What's coming in Java EE 8What's coming in Java EE 8
What's coming in Java EE 8David Delabassee
 
Java EE 8 Adopt a JSR : JSON-P 1.1 & MVC 1.0
Java EE 8 Adopt a JSR : JSON-P 1.1 & MVC 1.0Java EE 8 Adopt a JSR : JSON-P 1.1 & MVC 1.0
Java EE 8 Adopt a JSR : JSON-P 1.1 & MVC 1.0David Delabassee
 
Java EE 8 - An instant snapshot
Java EE 8 - An instant snapshot Java EE 8 - An instant snapshot
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
 
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
 

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
 
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
HTTP/2 Comes to JavaHTTP/2 Comes to Java
HTTP/2 Comes to Java
 
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
 
HTTP/2 Comes to Java
HTTP/2 Comes to JavaHTTP/2 Comes to Java
HTTP/2 Comes to Java
 
What's coming in Java EE 8
What's coming in Java EE 8What's coming in Java EE 8
What's coming in Java EE 8
 
Java EE 8 Adopt a JSR : JSON-P 1.1 & MVC 1.0
Java EE 8 Adopt a JSR : JSON-P 1.1 & MVC 1.0Java EE 8 Adopt a JSR : JSON-P 1.1 & MVC 1.0
Java EE 8 Adopt a JSR : JSON-P 1.1 & MVC 1.0
 
MVC 1.0 / JSR 371
MVC 1.0 / JSR 371MVC 1.0 / JSR 371
MVC 1.0 / JSR 371
 
Java EE 8 - An instant snapshot
Java EE 8 - An instant snapshot Java EE 8 - An instant snapshot
Java EE 8 - An instant snapshot
 
Avatar 2.0
Avatar 2.0Avatar 2.0
Avatar 2.0
 
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
 

Recently uploaded

Understanding Plagiarism: Causes, Consequences and Prevention.pptx
Understanding Plagiarism: Causes, Consequences and Prevention.pptxUnderstanding Plagiarism: Causes, Consequences and Prevention.pptx
Understanding Plagiarism: Causes, Consequences and Prevention.pptxSasikiranMarri
 
eSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration toolseSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration toolsosttopstonverter
 
Effectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorEffectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorTier1 app
 
VictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News UpdateVictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News UpdateVictoriaMetrics
 
Osi security architecture in network.pptx
Osi security architecture in network.pptxOsi security architecture in network.pptx
Osi security architecture in network.pptxVinzoCenzo
 
Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldRoberto Pérez Alcolea
 
Santander Stream Processing with Apache Flink
Santander Stream Processing with Apache FlinkSantander Stream Processing with Apache Flink
Santander Stream Processing with Apache Flinkconfluent
 
logical backup of Oracle Datapump-detailed.pptx
logical backup of Oracle Datapump-detailed.pptxlogical backup of Oracle Datapump-detailed.pptx
logical backup of Oracle Datapump-detailed.pptxRemote DBA Services
 
Revolutionize Your Video Editing with InVideo.io: A Comprehensive Review
Revolutionize Your Video Editing with InVideo.io: A Comprehensive ReviewRevolutionize Your Video Editing with InVideo.io: A Comprehensive Review
Revolutionize Your Video Editing with InVideo.io: A Comprehensive Reviewjw364beach
 
Business Analyzopedia - Your Pocket Gita for Business Analysis
Business Analyzopedia - Your Pocket Gita for Business AnalysisBusiness Analyzopedia - Your Pocket Gita for Business Analysis
Business Analyzopedia - Your Pocket Gita for Business AnalysisDEEPRAJ PATHAK
 
Pros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdf
Pros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdfPros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdf
Pros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdfkalichargn70th171
 
SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?Alexandre Beguel
 
The Ultimate Guide to Performance Testing in Low-Code, No-Code Environments (...
The Ultimate Guide to Performance Testing in Low-Code, No-Code Environments (...The Ultimate Guide to Performance Testing in Low-Code, No-Code Environments (...
The Ultimate Guide to Performance Testing in Low-Code, No-Code Environments (...kalichargn70th171
 
full course of software engineering mid term.pdf
full course of software engineering mid term.pdffull course of software engineering mid term.pdf
full course of software engineering mid term.pdfAbdul salam
 
[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdf
[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdf[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdf
[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdfSteve Caron
 
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...OnePlan Solutions
 
Mastering Project Planning with Microsoft Project 2016.pptx
Mastering Project Planning with Microsoft Project 2016.pptxMastering Project Planning with Microsoft Project 2016.pptx
Mastering Project Planning with Microsoft Project 2016.pptxAS Design & AST.
 
Advantages of Cargo Cloud Solutions.pptx
Advantages of Cargo Cloud Solutions.pptxAdvantages of Cargo Cloud Solutions.pptx
Advantages of Cargo Cloud Solutions.pptxRTS corp
 
Ronisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited CatalogueRonisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited Catalogueitservices996
 
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...OnePlan Solutions
 

Recently uploaded (20)

Understanding Plagiarism: Causes, Consequences and Prevention.pptx
Understanding Plagiarism: Causes, Consequences and Prevention.pptxUnderstanding Plagiarism: Causes, Consequences and Prevention.pptx
Understanding Plagiarism: Causes, Consequences and Prevention.pptx
 
eSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration toolseSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration tools
 
Effectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorEffectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryError
 
VictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News UpdateVictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News Update
 
Osi security architecture in network.pptx
Osi security architecture in network.pptxOsi security architecture in network.pptx
Osi security architecture in network.pptx
 
Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository world
 
Santander Stream Processing with Apache Flink
Santander Stream Processing with Apache FlinkSantander Stream Processing with Apache Flink
Santander Stream Processing with Apache Flink
 
logical backup of Oracle Datapump-detailed.pptx
logical backup of Oracle Datapump-detailed.pptxlogical backup of Oracle Datapump-detailed.pptx
logical backup of Oracle Datapump-detailed.pptx
 
Revolutionize Your Video Editing with InVideo.io: A Comprehensive Review
Revolutionize Your Video Editing with InVideo.io: A Comprehensive ReviewRevolutionize Your Video Editing with InVideo.io: A Comprehensive Review
Revolutionize Your Video Editing with InVideo.io: A Comprehensive Review
 
Business Analyzopedia - Your Pocket Gita for Business Analysis
Business Analyzopedia - Your Pocket Gita for Business AnalysisBusiness Analyzopedia - Your Pocket Gita for Business Analysis
Business Analyzopedia - Your Pocket Gita for Business Analysis
 
Pros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdf
Pros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdfPros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdf
Pros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdf
 
SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?
 
The Ultimate Guide to Performance Testing in Low-Code, No-Code Environments (...
The Ultimate Guide to Performance Testing in Low-Code, No-Code Environments (...The Ultimate Guide to Performance Testing in Low-Code, No-Code Environments (...
The Ultimate Guide to Performance Testing in Low-Code, No-Code Environments (...
 
full course of software engineering mid term.pdf
full course of software engineering mid term.pdffull course of software engineering mid term.pdf
full course of software engineering mid term.pdf
 
[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdf
[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdf[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdf
[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdf
 
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
 
Mastering Project Planning with Microsoft Project 2016.pptx
Mastering Project Planning with Microsoft Project 2016.pptxMastering Project Planning with Microsoft Project 2016.pptx
Mastering Project Planning with Microsoft Project 2016.pptx
 
Advantages of Cargo Cloud Solutions.pptx
Advantages of Cargo Cloud Solutions.pptxAdvantages of Cargo Cloud Solutions.pptx
Advantages of Cargo Cloud Solutions.pptx
 
Ronisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited CatalogueRonisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited Catalogue
 
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
 

Java EE 8 Preview: Enhancements for JSON, Reactive Programming