SlideShare une entreprise Scribd logo
1  sur  57
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Servlet 4.0: A new twist
on an old favorite
Dr. Shing Wai Chan
Ed Burns
Java EE Specification leads
3
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
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.
4
E
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
• Ed Burns
– Servlet and JSF co-spec lead
– Frequent international conference
speaker
– Author of four Enterprise Java related
books from McGraw-Hill, including JSF
2.0 the Complete Reference
• Dr. Shing Wai Chan
– Servlet co-spec lead since 2011
– Expert Group and implementation
team member on many JSRs relating to
Servlet since 2001
5
Speaker Credentials
SE
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Our Plan for Your Time Investment
The Contemporary Role of Servlets
New Features in Servlet 4.0
Opening Up Java EE
Summary
1
2
3
4
6
E
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Introduction
Micro, Mono, Oh no?
7
E
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
J2EE Servlets: A Very Early Java Microservices Platform
• Consensus definition of Microservices: system is a collection of services,
each of which is
– Small
– Loosely coupled (can be composed)
– Isolated from other services
– Highly internally cohesive (does one thing)
– Can be managed, deployed, developed independent of others
– Is responsible for handling its own data
8
E
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
J2EE Servlets: A Very Early Java Microservices Platform
• Consensus definition of Microservices: system is a collection of services,
each of which is
– Small
• There is nothing stopping you from keeping your servlets small
• But in practice it was very easy to allow them to get pretty big, chains of servlets and filters
9
E
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
J2EE Servlets: A Very Early Java Microservices Platform
• Consensus definition of Microservices: system is a collection of services,
each of which is
– Small: maybe
– Loosely coupled (can be composed)
• Filters can compose pretty well
• Filter chain concept is expressly designed to support composing
10
E
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
J2EE Servlets: A Very Early Java Microservices Platform
• Consensus definition of Microservices: system is a collection of services,
each of which is
– Small: maybe
– Loosely coupled (can be composed): yes
– Isolated from other services
• Generally this is not how people use Servlets. An outage in a Servlet would prevent the entire rest
of the call flow from continuing
11
E
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
J2EE Servlets: A Very Early Java Microservices Platform
• Consensus definition of Microservices: system is a collection of services,
each of which is
– Small: maybe
– Loosely coupled (can be composed): yes
– Isolated from other services: no
– Highly internally cohesive (does one thing)
• Generally Servlets are used as controllers or filters that act on an HTTP request and either pass it on
to some other service, or send a response.
12
E
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
J2EE Servlets: A Very Early Java Microservices Platform
• Consensus definition of Microservices: system is a collection of services,
each of which is
– Small: maybe
– Loosely coupled (can be composed): yes
– Isolated from other services: no
– Highly internally cohesive (does one thing): yes
– Can be managed, deployed, developed independent of others
• Yes the WAR file format has always allowed this.
13
E
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
J2EE Servlets: A Very Early Java Microservices Platform
• Consensus definition of Microservices: system is a collection of services,
each of which is
– Small: maybe
– Loosely coupled (can be composed): yes
– Isolated from other services: no
– Highly internally cohesive (does one thing): yes
– Can be managed, deployed, developed independent of others: yes
– Is responsible for handling its own data
• Servlets generally don’t have much in the way of data, this was always handled by other parts of the
Java EE monolith. But whatever data a Servlet does have, it is generally not shared with other parts
of the system
14
E
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
J2EE Servlets: A Very Early Java Microservices Platform
• Consensus definition of Microservices: system is a collection of services,
each of which is
– Small: maybe
– Loosely coupled (can be composed): yes
– Isolated from other services: no
– Highly internally cohesive (does one thing): yes
– Can be managed, deployed, developed independent of others: yes
– Is responsible for handling its own data: yes
15
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
The Power of JCP
• Servlets have adapted and incorporated new features from industry trends
and best practices all along
– Packaging concept: WAR
– Asynchronous
– Non Blocking IO
• Reactive/back pressure: onDataAvailable(), onWritePossible()
– Resource Injection
– HTTP/2
16
Incorporating Industry Trends and Maintaining Compatibility
E
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Servlets Within a Contemporary Microservices System
• Some possible reasons to use Servlet for green-field development in the
Microservices style
– Constrained to use a specific software stack for non-technical reasons
– Team is risk averse in trying new technologies, but adventurous in trying new
architectures
– Want to take an incremental approach to adopting Microservices for green-field
• New Architecture, Old Stack
• New Architecture, New Stack
17
Green Field? Servlets would be a stretch…
E
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Servlets as a Stepping Stone to a more “pure” Microservices
System
• EAR with WARs  separate WARs
• Rest Services in front of WARs
• Rest Services absorb functionalities of WARs
18
This is the more common case
E
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
New Feature Review
Servlet 4.0
19
Lots under the hood,
some good stuff on top of it
S
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
• Yes, everything from Oracle about
Java EE is on GitHub now.
• Samples for all these features are at
https://github.com/javaee/glassfish-samples
20
Try the Samples on GitHub
S
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
HTTP/2
• You already know why it's important, but briefly, it improves perceived
browser performance, through the use of
– Binary framing
– Stream multiplexing
– Header compression (HPACK)
– Server push
– Keeping the connection open, more than just keep alive
21
S
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
HTTP/2 in Servlet 4.0
• Most of what's great about HTTP/2 comes for free in using Servlet 4.0
– Binary framing
– Stream multiplexing
– Header compression (HPACK)
– Server push
– Keeping the connection open, more than just keep alive Server push
– …
22
S
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
A Common Use Case
23
S
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Server Push in HTTP/2
“Server push allows a server to speculatively send data to a
client that the server anticipates the client will need, trading
off some network usage against a potential latency gain.”
RFC 7540
24
S
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Server Push in HTTP/2
• Promised Requests
– Cacheable
– Safe
• Essentially read-only
– Without a request body
RFC 7540 / RFC 7231
25
GET
HEAD
POSTOPTIONS
TRACE
cacheableSafe
S
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Server Push in Servlet 4.0
javax.servlet.http.PushBuilder
26
S
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Server Push in Servlet 4.0
Server Push via Builder API
27
S
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
DEMO
28
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
HTTP Trailer
“… the sender desires to send metadata in the form of trailer
fields at the end of the message, the sender SHOULD generate
a Trailer header field before the message body to indicate
which fields will be present in the trailers.”
RFC 7230 / RFC 7540
29
S
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
HTTP Trailer
HTTP/1.1 200 OK
Content-Type: text/plain
Transfer-Encoding: chunked
Trailer: foo
6rn
Hello rn
5rn
Worldrn
0rn
foo: barrn
rn
Example in HTTP/1.1
30
S
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
HTTP Trailer
• Pseudo-header fields MUST NOT appear in trailers
– Request
• :method, :scheme, :authority, :path
– Response
• :status
RFC 7540
31
S
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
HTTP Trailer
• Message integrity check
• Digital signature
• gRPC
– Required Trailer and HTTP/2
Use Cases
32
S
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
HTTP Trailer
Servlet Trailer API
33
package java.util.function;
@FunctionalInterface
public interface Supplier<T> {
T get();
}
S
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
HTTP Trailer
HTTP Request Trailer
34
S
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
HTTP Trailer
public class TestServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
res.addHeader("Transfer-encoding", "chunked");
res.addHeader("Trailer", "bar1, bar2");
. . .
res.setTrailerFields(() -> {
Map<String, String> map = new HashMap<>();
map.put("bar1", "A");
map.put("bar2", "B");
return map;
});
. . .
}
}
Http Response Trailer
35
S
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
HTTP Trailer
HTTP Response Composite TrailerFields Suppliers
36
S
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Mapping Discovery
• Allows for discovering how the current Servlet was reached
– Does not include mappings for Filters
– Accounts for all the various ways for the container to invoke a Servlet
• Container applies mapping rules
• Application code invokes
– getRequestDispatcher().forward()
– getRequestDispatcher().include()
– AsyncContext.dispatch()
– getNamedDispatcher()
37
E
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Mapping Discovery
• Allows for discovering how the current Servlet was reached
– Does not include mappings for Filters
– Accounts for all the various ways for the container to invoke a Servlet
• Container applies mapping rules
• Application code invokes
– getRequestDispatcher().forward()
– getRequestDispatcher().include()
– AsyncContext.dispatch()
– getNamedDispatcher()
38
}
New request attributes
• INCLUDE_MAPPING
• FORWARD_MAPPING
• ASYNC_MAPPING
E
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Mapping Discovery
• HttpServletRequest.getServletMapping()
– Returns immutable HttpServletMapping
• MappingMatch enum
39
E
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Mapping Discovery
• HttpServletRequest.getServletMapping()
– Returns immutable HttpServletMapping
• matchValue
• pattern
• servletName
40
E
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Request Encoding
• URL paths read from the wire are
specified to be in UTF-8
– Vendor specific configuration is allowed
• Clarifications on form data
• ServletContext.
setRequestCharacterEncoding()
• New XML element, ie
<request-character-encoding>UTF-8
</request-character-encoding>
Response Encoding
• ServletContext.
setResponseCharacterEncoding()
• New XML element, ie
<response-character-encoding>UTF-8
</response-character-encoding>
41
Encoding Clarifications
E
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Odds and Ends
• Add Java SE 8 default methods
– ServletContextAttributeListener, ServletContextListener,
ServletRequestAttributeListener, ServletRequestListener,
HttpSessionActivationListener, HttpSessionAttributeListener,
HttpSessionBindingListener, HttpSessionListener
– Filter#init, #destroy
• Add GenericFilter and HttpFilter
Servlet 4.0 Ease of Use
42
S
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Odds and Ends
• <default-context-path> element in web.xml
• ServletContext
– void setSessionTimeout(int minutes)
– ServletRegistration.Dynamic addJspFile(String name, String
jspFile)
43
S
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Opening Up JavaEE 8
Overview and Servlet Perspective
44
E
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
J2EE 1.3
CMP,
JCA
Robustness J2EE 1.4
JAX-RPC
Mgmt,
Deploy-
ment
Web
Services
Java EE 5
Annotations,
EJB 3.0,
JPA, JSF,
JAXB
JAX-WS
Ease of
Development
Java EE 6
JAX-RS,
CDI,
Servlet 3.0,
Web Profile,
Pruning
Lightweight
1999 2001 2003 2006 2009 2013
Java EE 7
JAX-RS 2.0,
JSON-P,
WebSocket,
JMS 2.0,
Batch
Productivity
& HTML5
J2EE 1.2
Servlet,
JSP, EJB,
JMS
Enterprise
Java
Java EE 8 – The Next Step
Java EE 8
Servlet 4.0,
JAX-RS 2.1,
JSON-B
JSON-P 1.1,
Security
Modernization,
Simplification
2017
E
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Eclipse Enterprise for Java (EE4J)
Moving Java EE to Eclipse Foundation
46
Technology
 Agile
 Flexible
 Open
 Compatible
Community
and
Vendors
Sponsorship
Join the discussion at ee4j-community@eclipse.org
Enterprise for Java
E
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Eclipse Enterprise for Java (EE4J)
Project Overview
• Open process
• Collaboration: community, vendors, Eclipse
• Transition to EE4J in CY2018
– GlassFish 5.0/Java EE 8 RIs, TCKs, product docs
– Process for existing and new specs
– Compatibility process
• Technology evolution, MicroProfile integration
• Oracle Java EE Support through Java EE 8
– Continuity for Java EE community
47
 Agile
 Flexible
 Open
 Compatible
Enterprise for Java
E
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Project Overview – Additional Detail
48
• Relicense Oracle Java EE 8 and GlassFish 5.0 technologies to EE4J - RIs, TCKs, and
product docs
• Build a compatible EE4J implementation that passes existing Java EE 8 TCKs
• Use existing javax package names, and component specification names for existing
JSRs for continuity
• Define a process by which existing specifications can evolve, and new specifications
can be included in the platform
• Recruit developers, vendors and other community members as sponsors – Oracle no
longer the platform “Spec lead”
• Evolve the platform and potentially incorporate Eclipse MicroProfile technologies
• Begin the above ASAP after Java EE 8 delivery to facilitate a rapid transition
E
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Open Process
See Aquarium Blog for Updates
49
Join the discussion at ee4j-community@eclipse.org
E
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Oracle Will Continue to Support Vendors/Licensees
• Oracle will honor existing agreements with vendors of Java EE
implementations
• Oracle will continue to offer renewals to license agreements
• Oracle will continue to support vendor/licensee implementations and
certifications as it has done prior to this announcement
• Oracle intends to support Java EE 8 through Sept 2025
• We expect licensees will plan migration to EE4J prior to 2025
• EE4J licensing/compatibility will be defined by the EE4J project
50
E
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
For Oracle Customers
WebLogic Server “Next” Release – Version TBD
• WebLogic Server “Next” – CY2018
• Commercial Java EE 8 Support
• Compatible with prior versions
• Available on premises
– Installers, Docker images
• Available in Oracle Cloud
– Java Cloud Service, Application Container Cloud
WebLogic Server “Next”
Java EE 8 Reference
Implementation
Java Cloud Service
Application Container Cloud
CY2017
CY2018
CY2018
51
E
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Challenges I Can See for Servlet in EE4J
• Servlet has always been revised in lock-step with the whole EE platform
– Hard to make that agile
– Extremely high backward compatibility expectations
• Important Servlet EG Members that are not full “Java EE” vendors
– Jetty
– Tomcat
• Very large numbers of implementations
52
The next chapter is still unwritten
E
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Benefits - A New, Open Direction Forward
• Agile - more rapid evolution of the technology
• Flexible - modern open source process and licensing
• Open – transparent process, broader vendor and community participation
• Compatible - Transition from Java EE 8 to new offering
• Multiple vendors and established foundation supporting the initiative
53
E
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Summary
• Moving Java EE to EE4J
– In collaboration with the community
– More agile, flexible and open process
– Compatible implementation
– Evolve the platform
• Oracle will continue to...
– Support licensees/vendors
– Support existing WebLogic Server releases
– Invest in new WebLogic Server releases, capabilities
54
 Agile
 Flexible
 Open
 Compatible
Enterprise for Java
E
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Summary
55
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Summary – Servlet 4.0
• brings HTTP/2 to the Java EE Platform
• has significant incremental improvements
• maintains the backward compatibility promise for which EE is (in)famous
• reference implementation is GlassFish 5.0
– Only run in Java SE 8, not Java SE 9
– 5.0.1 plans to run on Java SE 9
56
S
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Safe Harbor Statement
The preceding 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.
57

Contenu connexe

Tendances

3 Ways to Connect to the Oracle Cloud
3 Ways to Connect to the Oracle Cloud3 Ways to Connect to the Oracle Cloud
3 Ways to Connect to the Oracle CloudSimon Haslam
 
Managing Oracle Solaris Systems with Puppet
Managing Oracle Solaris Systems with PuppetManaging Oracle Solaris Systems with Puppet
Managing Oracle Solaris Systems with Puppetglynnfoster
 
Tips & Tricks for Java & SOA Cloud Service
Tips & Tricks for Java & SOA Cloud ServiceTips & Tricks for Java & SOA Cloud Service
Tips & Tricks for Java & SOA Cloud ServiceSimon Haslam
 
Jug Poitou Charentes - Apache, OSGi and Karaf
Jug Poitou Charentes -  Apache, OSGi and KarafJug Poitou Charentes -  Apache, OSGi and Karaf
Jug Poitou Charentes - Apache, OSGi and KarafGuillaume Nodet
 
Experiences of SOACS
Experiences of SOACSExperiences of SOACS
Experiences of SOACSSimon Haslam
 
Oracle Solaris Application-Centric Lifecycle and DevOps
Oracle Solaris Application-Centric Lifecycle and DevOpsOracle Solaris Application-Centric Lifecycle and DevOps
Oracle Solaris Application-Centric Lifecycle and DevOpsOTN Systems Hub
 
Developing Oracle Fusion Middleware Applications in the Cloud
Developing Oracle Fusion Middleware Applications in the CloudDeveloping Oracle Fusion Middleware Applications in the Cloud
Developing Oracle Fusion Middleware Applications in the CloudMatt Wright
 
Using MySQL Containers
Using MySQL ContainersUsing MySQL Containers
Using MySQL ContainersMatt Lord
 
Node.js and Oracle Database: New Development Techniques
Node.js and Oracle Database: New Development TechniquesNode.js and Oracle Database: New Development Techniques
Node.js and Oracle Database: New Development TechniquesChristopher Jones
 
Migrate Oracle WebLogic Applications onto a Containerized Cloud Data Center
Migrate Oracle WebLogic Applications onto a Containerized Cloud Data CenterMigrate Oracle WebLogic Applications onto a Containerized Cloud Data Center
Migrate Oracle WebLogic Applications onto a Containerized Cloud Data CenterJingnan Zhou
 
TWJUG August, MySQL JDBC Driver "Connector/J"
TWJUG August, MySQL JDBC Driver "Connector/J"TWJUG August, MySQL JDBC Driver "Connector/J"
TWJUG August, MySQL JDBC Driver "Connector/J"Ryusuke Kajiyama
 
WebSockets - Realtime em Mundo Conectado
WebSockets - Realtime em Mundo ConectadoWebSockets - Realtime em Mundo Conectado
WebSockets - Realtime em Mundo ConectadoBruno Borges
 
Oracle making openstack an enterprise grade solution
Oracle making openstack an enterprise grade solutionOracle making openstack an enterprise grade solution
Oracle making openstack an enterprise grade solutionOTN Systems Hub
 
TWJUG August, What's new in MySQL 5.7 RC
TWJUG August, What's new in MySQL 5.7 RCTWJUG August, What's new in MySQL 5.7 RC
TWJUG August, What's new in MySQL 5.7 RCRyusuke Kajiyama
 
eProseed Oracle Open World 2016 debrief - Oracle Management Cloud
eProseed Oracle Open World 2016 debrief - Oracle Management CloudeProseed Oracle Open World 2016 debrief - Oracle Management Cloud
eProseed Oracle Open World 2016 debrief - Oracle Management CloudMarco Gralike
 
Java EE 7 for WebLogic 12c Developers
Java EE 7 for WebLogic 12c DevelopersJava EE 7 for WebLogic 12c Developers
Java EE 7 for WebLogic 12c DevelopersBruno Borges
 
Apache, osgi and karaf par Guillaume Nodet
Apache, osgi and karaf par Guillaume NodetApache, osgi and karaf par Guillaume Nodet
Apache, osgi and karaf par Guillaume NodetNormandy JUG
 

Tendances (20)

3 Ways to Connect to the Oracle Cloud
3 Ways to Connect to the Oracle Cloud3 Ways to Connect to the Oracle Cloud
3 Ways to Connect to the Oracle Cloud
 
Managing Oracle Solaris Systems with Puppet
Managing Oracle Solaris Systems with PuppetManaging Oracle Solaris Systems with Puppet
Managing Oracle Solaris Systems with Puppet
 
Tips & Tricks for Java & SOA Cloud Service
Tips & Tricks for Java & SOA Cloud ServiceTips & Tricks for Java & SOA Cloud Service
Tips & Tricks for Java & SOA Cloud Service
 
Jug Poitou Charentes - Apache, OSGi and Karaf
Jug Poitou Charentes -  Apache, OSGi and KarafJug Poitou Charentes -  Apache, OSGi and Karaf
Jug Poitou Charentes - Apache, OSGi and Karaf
 
Experiences of SOACS
Experiences of SOACSExperiences of SOACS
Experiences of SOACS
 
Oracle Solaris Application-Centric Lifecycle and DevOps
Oracle Solaris Application-Centric Lifecycle and DevOpsOracle Solaris Application-Centric Lifecycle and DevOps
Oracle Solaris Application-Centric Lifecycle and DevOps
 
Developing Oracle Fusion Middleware Applications in the Cloud
Developing Oracle Fusion Middleware Applications in the CloudDeveloping Oracle Fusion Middleware Applications in the Cloud
Developing Oracle Fusion Middleware Applications in the Cloud
 
Using MySQL Containers
Using MySQL ContainersUsing MySQL Containers
Using MySQL Containers
 
Oracle Database Cloud Service
Oracle Database Cloud ServiceOracle Database Cloud Service
Oracle Database Cloud Service
 
Node.js and Oracle Database: New Development Techniques
Node.js and Oracle Database: New Development TechniquesNode.js and Oracle Database: New Development Techniques
Node.js and Oracle Database: New Development Techniques
 
Migrate Oracle WebLogic Applications onto a Containerized Cloud Data Center
Migrate Oracle WebLogic Applications onto a Containerized Cloud Data CenterMigrate Oracle WebLogic Applications onto a Containerized Cloud Data Center
Migrate Oracle WebLogic Applications onto a Containerized Cloud Data Center
 
TWJUG August, MySQL JDBC Driver "Connector/J"
TWJUG August, MySQL JDBC Driver "Connector/J"TWJUG August, MySQL JDBC Driver "Connector/J"
TWJUG August, MySQL JDBC Driver "Connector/J"
 
MySQL 5.7 + Java
MySQL 5.7 + JavaMySQL 5.7 + Java
MySQL 5.7 + Java
 
WebSockets - Realtime em Mundo Conectado
WebSockets - Realtime em Mundo ConectadoWebSockets - Realtime em Mundo Conectado
WebSockets - Realtime em Mundo Conectado
 
Oracle making openstack an enterprise grade solution
Oracle making openstack an enterprise grade solutionOracle making openstack an enterprise grade solution
Oracle making openstack an enterprise grade solution
 
TWJUG August, What's new in MySQL 5.7 RC
TWJUG August, What's new in MySQL 5.7 RCTWJUG August, What's new in MySQL 5.7 RC
TWJUG August, What's new in MySQL 5.7 RC
 
eProseed Oracle Open World 2016 debrief - Oracle Management Cloud
eProseed Oracle Open World 2016 debrief - Oracle Management CloudeProseed Oracle Open World 2016 debrief - Oracle Management Cloud
eProseed Oracle Open World 2016 debrief - Oracle Management Cloud
 
Java EE 7 for WebLogic 12c Developers
Java EE 7 for WebLogic 12c DevelopersJava EE 7 for WebLogic 12c Developers
Java EE 7 for WebLogic 12c Developers
 
OpenStack & MySQL
OpenStack & MySQLOpenStack & MySQL
OpenStack & MySQL
 
Apache, osgi and karaf par Guillaume Nodet
Apache, osgi and karaf par Guillaume NodetApache, osgi and karaf par Guillaume Nodet
Apache, osgi and karaf par Guillaume Nodet
 

Similaire à Servlet 4.0: New Features for Java Microservices

Oracle Code Online: Building a Serverless State Service for the Cloud
Oracle Code Online: Building a Serverless State Service for the CloudOracle Code Online: Building a Serverless State Service for the Cloud
Oracle Code Online: Building a Serverless State Service for the CloudEd Burns
 
MySQL Tech Tour 2015 - 5.7 Connector/J/Net
MySQL Tech Tour 2015 - 5.7 Connector/J/NetMySQL Tech Tour 2015 - 5.7 Connector/J/Net
MySQL Tech Tour 2015 - 5.7 Connector/J/NetMark Swarbrick
 
FOSDEM19 MySQL Component Infrastructure
FOSDEM19 MySQL Component InfrastructureFOSDEM19 MySQL Component Infrastructure
FOSDEM19 MySQL Component InfrastructureGeorgi Kodinov
 
Experiences in building a PaaS Platform - Java One SFO 2012
Experiences in building a PaaS Platform - Java One SFO 2012Experiences in building a PaaS Platform - Java One SFO 2012
Experiences in building a PaaS Platform - Java One SFO 2012Jagadish Prasath
 
MySQL & Oracle Linux Keynote at Open Source India 2014
MySQL & Oracle Linux Keynote at Open Source India 2014MySQL & Oracle Linux Keynote at Open Source India 2014
MySQL & Oracle Linux Keynote at Open Source India 2014Sanjay Manwani
 
Develop PHP Applications with MySQL X DevAPI
Develop PHP Applications with MySQL X DevAPIDevelop PHP Applications with MySQL X DevAPI
Develop PHP Applications with MySQL X DevAPIDave Stokes
 
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
 
How to Thrive on REST/WebSocket-Based Microservices
How to Thrive on REST/WebSocket-Based MicroservicesHow to Thrive on REST/WebSocket-Based Microservices
How to Thrive on REST/WebSocket-Based MicroservicesPavel Bucek
 
Aioug2017 deploying-ebs-on-prem-and-on-oracle-cloud v2
Aioug2017 deploying-ebs-on-prem-and-on-oracle-cloud v2Aioug2017 deploying-ebs-on-prem-and-on-oracle-cloud v2
Aioug2017 deploying-ebs-on-prem-and-on-oracle-cloud v2pasalapudi
 
10 Razões para Usar MySQL em Startups
10 Razões para Usar MySQL em Startups10 Razões para Usar MySQL em Startups
10 Razões para Usar MySQL em StartupsMySQL Brasil
 
What's next for Java API for WebSocket (JSR 356)
What's next for Java API for WebSocket (JSR 356)What's next for Java API for WebSocket (JSR 356)
What's next for Java API for WebSocket (JSR 356)Pavel Bucek
 
MySQL for Oracle DBAs
MySQL for Oracle DBAsMySQL for Oracle DBAs
MySQL for Oracle DBAsBen Krug
 
Handling Service Orchestration in the Cloud for GlassFish - JavaOne, San Fran...
Handling Service Orchestration in the Cloud for GlassFish - JavaOne, San Fran...Handling Service Orchestration in the Cloud for GlassFish - JavaOne, San Fran...
Handling Service Orchestration in the Cloud for GlassFish - JavaOne, San Fran...Sivakumar Thyagarajan
 
Oracle - Continuous Delivery NYC meetup, June 07, 2018
Oracle - Continuous Delivery NYC meetup, June 07, 2018Oracle - Continuous Delivery NYC meetup, June 07, 2018
Oracle - Continuous Delivery NYC meetup, June 07, 2018Oracle Developers
 
Adam Bien at GlassFish Community Event, JavaOne 2011
Adam Bien at GlassFish Community Event, JavaOne 2011Adam Bien at GlassFish Community Event, JavaOne 2011
Adam Bien at GlassFish Community Event, JavaOne 2011Arun Gupta
 
Install Redis on Oracle Linux
Install Redis on Oracle LinuxInstall Redis on Oracle Linux
Install Redis on Oracle LinuxJohan Louwers
 

Similaire à Servlet 4.0: New Features for Java Microservices (20)

Oracle Code Online: Building a Serverless State Service for the Cloud
Oracle Code Online: Building a Serverless State Service for the CloudOracle Code Online: Building a Serverless State Service for the Cloud
Oracle Code Online: Building a Serverless State Service for the Cloud
 
Hadoop cluster using_vesper
Hadoop cluster using_vesperHadoop cluster using_vesper
Hadoop cluster using_vesper
 
MySQL Tech Tour 2015 - 5.7 Connector/J/Net
MySQL Tech Tour 2015 - 5.7 Connector/J/NetMySQL Tech Tour 2015 - 5.7 Connector/J/Net
MySQL Tech Tour 2015 - 5.7 Connector/J/Net
 
FOSDEM19 MySQL Component Infrastructure
FOSDEM19 MySQL Component InfrastructureFOSDEM19 MySQL Component Infrastructure
FOSDEM19 MySQL Component Infrastructure
 
Experiences in building a PaaS Platform - Java One SFO 2012
Experiences in building a PaaS Platform - Java One SFO 2012Experiences in building a PaaS Platform - Java One SFO 2012
Experiences in building a PaaS Platform - Java One SFO 2012
 
MySQL & Oracle Linux Keynote at Open Source India 2014
MySQL & Oracle Linux Keynote at Open Source India 2014MySQL & Oracle Linux Keynote at Open Source India 2014
MySQL & Oracle Linux Keynote at Open Source India 2014
 
Develop PHP Applications with MySQL X DevAPI
Develop PHP Applications with MySQL X DevAPIDevelop PHP Applications with MySQL X DevAPI
Develop PHP Applications with MySQL X DevAPI
 
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
 
How to Thrive on REST/WebSocket-Based Microservices
How to Thrive on REST/WebSocket-Based MicroservicesHow to Thrive on REST/WebSocket-Based Microservices
How to Thrive on REST/WebSocket-Based Microservices
 
Aioug2017 deploying-ebs-on-prem-and-on-oracle-cloud v2
Aioug2017 deploying-ebs-on-prem-and-on-oracle-cloud v2Aioug2017 deploying-ebs-on-prem-and-on-oracle-cloud v2
Aioug2017 deploying-ebs-on-prem-and-on-oracle-cloud v2
 
10 Razões para Usar MySQL em Startups
10 Razões para Usar MySQL em Startups10 Razões para Usar MySQL em Startups
10 Razões para Usar MySQL em Startups
 
What's next for Java API for WebSocket (JSR 356)
What's next for Java API for WebSocket (JSR 356)What's next for Java API for WebSocket (JSR 356)
What's next for Java API for WebSocket (JSR 356)
 
MySQL for Oracle DBAs
MySQL for Oracle DBAsMySQL for Oracle DBAs
MySQL for Oracle DBAs
 
DevOps for the DBA- Jax Style!
DevOps for the DBA-  Jax Style!DevOps for the DBA-  Jax Style!
DevOps for the DBA- Jax Style!
 
Handling Service Orchestration in the Cloud for GlassFish - JavaOne, San Fran...
Handling Service Orchestration in the Cloud for GlassFish - JavaOne, San Fran...Handling Service Orchestration in the Cloud for GlassFish - JavaOne, San Fran...
Handling Service Orchestration in the Cloud for GlassFish - JavaOne, San Fran...
 
My sql8 innodb_cluster
My sql8 innodb_clusterMy sql8 innodb_cluster
My sql8 innodb_cluster
 
APAC Tour 2019 update
APAC Tour 2019 updateAPAC Tour 2019 update
APAC Tour 2019 update
 
Oracle - Continuous Delivery NYC meetup, June 07, 2018
Oracle - Continuous Delivery NYC meetup, June 07, 2018Oracle - Continuous Delivery NYC meetup, June 07, 2018
Oracle - Continuous Delivery NYC meetup, June 07, 2018
 
Adam Bien at GlassFish Community Event, JavaOne 2011
Adam Bien at GlassFish Community Event, JavaOne 2011Adam Bien at GlassFish Community Event, JavaOne 2011
Adam Bien at GlassFish Community Event, JavaOne 2011
 
Install Redis on Oracle Linux
Install Redis on Oracle LinuxInstall Redis on Oracle Linux
Install Redis on Oracle Linux
 

Plus de Ed Burns

What We Learned from Porting PiggyMetrics from Spring Boot to MicroProfile
What We Learned from Porting PiggyMetrics from Spring Boot to MicroProfileWhat We Learned from Porting PiggyMetrics from Spring Boot to MicroProfile
What We Learned from Porting PiggyMetrics from Spring Boot to MicroProfileEd Burns
 
2020-02-10 Java on Azure Solution Briefing
2020-02-10 Java on Azure Solution Briefing2020-02-10 Java on Azure Solution Briefing
2020-02-10 Java on Azure Solution BriefingEd Burns
 
What Visual Studio Code can do for Java Development
What Visual Studio Code can do for Java DevelopmentWhat Visual Studio Code can do for Java Development
What Visual Studio Code can do for Java DevelopmentEd Burns
 
Enterprise Java on Microsoft Azure: From Java EE to Spring, we’ve got you cov...
Enterprise Java on Microsoft Azure: From Java EE to Spring, we’ve got you cov...Enterprise Java on Microsoft Azure: From Java EE to Spring, we’ve got you cov...
Enterprise Java on Microsoft Azure: From Java EE to Spring, we’ve got you cov...Ed Burns
 
Enterprise Java on Azure: From Java EE to Spring, we have you covered
Enterprise Java on Azure: From Java EE to Spring, we have you coveredEnterprise Java on Azure: From Java EE to Spring, we have you covered
Enterprise Java on Azure: From Java EE to Spring, we have you coveredEd Burns
 
Programming Language Platform Growth: Table Stakes or Deal Makes?
Programming Language Platform Growth: Table Stakes or Deal Makes?Programming Language Platform Growth: Table Stakes or Deal Makes?
Programming Language Platform Growth: Table Stakes or Deal Makes?Ed Burns
 
Seminole County Teach In 2017: Crooms Acadamy of Information Technology
Seminole County Teach In 2017: Crooms Acadamy of Information TechnologySeminole County Teach In 2017: Crooms Acadamy of Information Technology
Seminole County Teach In 2017: Crooms Acadamy of Information TechnologyEd Burns
 
JavaOne-2017 Ignite Session: How to build a Theremin
JavaOne-2017 Ignite Session: How to build a ThereminJavaOne-2017 Ignite Session: How to build a Theremin
JavaOne-2017 Ignite Session: How to build a ThereminEd Burns
 
Chicago JUG / GOTO Meetup
Chicago JUG / GOTO MeetupChicago JUG / GOTO Meetup
Chicago JUG / GOTO MeetupEd Burns
 
HTTP/2 in the Java Platform -- Java Champions call February 2016
HTTP/2 in the Java Platform -- Java Champions call February 2016HTTP/2 in the Java Platform -- Java Champions call February 2016
HTTP/2 in the Java Platform -- Java Champions call February 2016Ed Burns
 
Oracle WebLogic Server 12.2.1 Do More with Less
Oracle WebLogic Server 12.2.1 Do More with LessOracle WebLogic Server 12.2.1 Do More with Less
Oracle WebLogic Server 12.2.1 Do More with LessEd Burns
 

Plus de Ed Burns (11)

What We Learned from Porting PiggyMetrics from Spring Boot to MicroProfile
What We Learned from Porting PiggyMetrics from Spring Boot to MicroProfileWhat We Learned from Porting PiggyMetrics from Spring Boot to MicroProfile
What We Learned from Porting PiggyMetrics from Spring Boot to MicroProfile
 
2020-02-10 Java on Azure Solution Briefing
2020-02-10 Java on Azure Solution Briefing2020-02-10 Java on Azure Solution Briefing
2020-02-10 Java on Azure Solution Briefing
 
What Visual Studio Code can do for Java Development
What Visual Studio Code can do for Java DevelopmentWhat Visual Studio Code can do for Java Development
What Visual Studio Code can do for Java Development
 
Enterprise Java on Microsoft Azure: From Java EE to Spring, we’ve got you cov...
Enterprise Java on Microsoft Azure: From Java EE to Spring, we’ve got you cov...Enterprise Java on Microsoft Azure: From Java EE to Spring, we’ve got you cov...
Enterprise Java on Microsoft Azure: From Java EE to Spring, we’ve got you cov...
 
Enterprise Java on Azure: From Java EE to Spring, we have you covered
Enterprise Java on Azure: From Java EE to Spring, we have you coveredEnterprise Java on Azure: From Java EE to Spring, we have you covered
Enterprise Java on Azure: From Java EE to Spring, we have you covered
 
Programming Language Platform Growth: Table Stakes or Deal Makes?
Programming Language Platform Growth: Table Stakes or Deal Makes?Programming Language Platform Growth: Table Stakes or Deal Makes?
Programming Language Platform Growth: Table Stakes or Deal Makes?
 
Seminole County Teach In 2017: Crooms Acadamy of Information Technology
Seminole County Teach In 2017: Crooms Acadamy of Information TechnologySeminole County Teach In 2017: Crooms Acadamy of Information Technology
Seminole County Teach In 2017: Crooms Acadamy of Information Technology
 
JavaOne-2017 Ignite Session: How to build a Theremin
JavaOne-2017 Ignite Session: How to build a ThereminJavaOne-2017 Ignite Session: How to build a Theremin
JavaOne-2017 Ignite Session: How to build a Theremin
 
Chicago JUG / GOTO Meetup
Chicago JUG / GOTO MeetupChicago JUG / GOTO Meetup
Chicago JUG / GOTO Meetup
 
HTTP/2 in the Java Platform -- Java Champions call February 2016
HTTP/2 in the Java Platform -- Java Champions call February 2016HTTP/2 in the Java Platform -- Java Champions call February 2016
HTTP/2 in the Java Platform -- Java Champions call February 2016
 
Oracle WebLogic Server 12.2.1 Do More with Less
Oracle WebLogic Server 12.2.1 Do More with LessOracle WebLogic Server 12.2.1 Do More with Less
Oracle WebLogic Server 12.2.1 Do More with Less
 

Dernier

TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 

Dernier (20)

TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 

Servlet 4.0: New Features for Java Microservices

  • 1.
  • 2.
  • 3. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Servlet 4.0: A new twist on an old favorite Dr. Shing Wai Chan Ed Burns Java EE Specification leads 3
  • 4. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 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. 4 E
  • 5. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | • Ed Burns – Servlet and JSF co-spec lead – Frequent international conference speaker – Author of four Enterprise Java related books from McGraw-Hill, including JSF 2.0 the Complete Reference • Dr. Shing Wai Chan – Servlet co-spec lead since 2011 – Expert Group and implementation team member on many JSRs relating to Servlet since 2001 5 Speaker Credentials SE
  • 6. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Our Plan for Your Time Investment The Contemporary Role of Servlets New Features in Servlet 4.0 Opening Up Java EE Summary 1 2 3 4 6 E
  • 7. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Introduction Micro, Mono, Oh no? 7 E
  • 8. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | J2EE Servlets: A Very Early Java Microservices Platform • Consensus definition of Microservices: system is a collection of services, each of which is – Small – Loosely coupled (can be composed) – Isolated from other services – Highly internally cohesive (does one thing) – Can be managed, deployed, developed independent of others – Is responsible for handling its own data 8 E
  • 9. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | J2EE Servlets: A Very Early Java Microservices Platform • Consensus definition of Microservices: system is a collection of services, each of which is – Small • There is nothing stopping you from keeping your servlets small • But in practice it was very easy to allow them to get pretty big, chains of servlets and filters 9 E
  • 10. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | J2EE Servlets: A Very Early Java Microservices Platform • Consensus definition of Microservices: system is a collection of services, each of which is – Small: maybe – Loosely coupled (can be composed) • Filters can compose pretty well • Filter chain concept is expressly designed to support composing 10 E
  • 11. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | J2EE Servlets: A Very Early Java Microservices Platform • Consensus definition of Microservices: system is a collection of services, each of which is – Small: maybe – Loosely coupled (can be composed): yes – Isolated from other services • Generally this is not how people use Servlets. An outage in a Servlet would prevent the entire rest of the call flow from continuing 11 E
  • 12. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | J2EE Servlets: A Very Early Java Microservices Platform • Consensus definition of Microservices: system is a collection of services, each of which is – Small: maybe – Loosely coupled (can be composed): yes – Isolated from other services: no – Highly internally cohesive (does one thing) • Generally Servlets are used as controllers or filters that act on an HTTP request and either pass it on to some other service, or send a response. 12 E
  • 13. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | J2EE Servlets: A Very Early Java Microservices Platform • Consensus definition of Microservices: system is a collection of services, each of which is – Small: maybe – Loosely coupled (can be composed): yes – Isolated from other services: no – Highly internally cohesive (does one thing): yes – Can be managed, deployed, developed independent of others • Yes the WAR file format has always allowed this. 13 E
  • 14. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | J2EE Servlets: A Very Early Java Microservices Platform • Consensus definition of Microservices: system is a collection of services, each of which is – Small: maybe – Loosely coupled (can be composed): yes – Isolated from other services: no – Highly internally cohesive (does one thing): yes – Can be managed, deployed, developed independent of others: yes – Is responsible for handling its own data • Servlets generally don’t have much in the way of data, this was always handled by other parts of the Java EE monolith. But whatever data a Servlet does have, it is generally not shared with other parts of the system 14 E
  • 15. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | J2EE Servlets: A Very Early Java Microservices Platform • Consensus definition of Microservices: system is a collection of services, each of which is – Small: maybe – Loosely coupled (can be composed): yes – Isolated from other services: no – Highly internally cohesive (does one thing): yes – Can be managed, deployed, developed independent of others: yes – Is responsible for handling its own data: yes 15
  • 16. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | The Power of JCP • Servlets have adapted and incorporated new features from industry trends and best practices all along – Packaging concept: WAR – Asynchronous – Non Blocking IO • Reactive/back pressure: onDataAvailable(), onWritePossible() – Resource Injection – HTTP/2 16 Incorporating Industry Trends and Maintaining Compatibility E
  • 17. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Servlets Within a Contemporary Microservices System • Some possible reasons to use Servlet for green-field development in the Microservices style – Constrained to use a specific software stack for non-technical reasons – Team is risk averse in trying new technologies, but adventurous in trying new architectures – Want to take an incremental approach to adopting Microservices for green-field • New Architecture, Old Stack • New Architecture, New Stack 17 Green Field? Servlets would be a stretch… E
  • 18. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Servlets as a Stepping Stone to a more “pure” Microservices System • EAR with WARs  separate WARs • Rest Services in front of WARs • Rest Services absorb functionalities of WARs 18 This is the more common case E
  • 19. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | New Feature Review Servlet 4.0 19 Lots under the hood, some good stuff on top of it S
  • 20. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | • Yes, everything from Oracle about Java EE is on GitHub now. • Samples for all these features are at https://github.com/javaee/glassfish-samples 20 Try the Samples on GitHub S
  • 21. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | HTTP/2 • You already know why it's important, but briefly, it improves perceived browser performance, through the use of – Binary framing – Stream multiplexing – Header compression (HPACK) – Server push – Keeping the connection open, more than just keep alive 21 S
  • 22. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | HTTP/2 in Servlet 4.0 • Most of what's great about HTTP/2 comes for free in using Servlet 4.0 – Binary framing – Stream multiplexing – Header compression (HPACK) – Server push – Keeping the connection open, more than just keep alive Server push – … 22 S
  • 23. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | A Common Use Case 23 S
  • 24. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Server Push in HTTP/2 “Server push allows a server to speculatively send data to a client that the server anticipates the client will need, trading off some network usage against a potential latency gain.” RFC 7540 24 S
  • 25. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Server Push in HTTP/2 • Promised Requests – Cacheable – Safe • Essentially read-only – Without a request body RFC 7540 / RFC 7231 25 GET HEAD POSTOPTIONS TRACE cacheableSafe S
  • 26. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Server Push in Servlet 4.0 javax.servlet.http.PushBuilder 26 S
  • 27. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Server Push in Servlet 4.0 Server Push via Builder API 27 S
  • 28. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | DEMO 28
  • 29. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | HTTP Trailer “… the sender desires to send metadata in the form of trailer fields at the end of the message, the sender SHOULD generate a Trailer header field before the message body to indicate which fields will be present in the trailers.” RFC 7230 / RFC 7540 29 S
  • 30. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | HTTP Trailer HTTP/1.1 200 OK Content-Type: text/plain Transfer-Encoding: chunked Trailer: foo 6rn Hello rn 5rn Worldrn 0rn foo: barrn rn Example in HTTP/1.1 30 S
  • 31. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | HTTP Trailer • Pseudo-header fields MUST NOT appear in trailers – Request • :method, :scheme, :authority, :path – Response • :status RFC 7540 31 S
  • 32. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | HTTP Trailer • Message integrity check • Digital signature • gRPC – Required Trailer and HTTP/2 Use Cases 32 S
  • 33. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | HTTP Trailer Servlet Trailer API 33 package java.util.function; @FunctionalInterface public interface Supplier<T> { T get(); } S
  • 34. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | HTTP Trailer HTTP Request Trailer 34 S
  • 35. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | HTTP Trailer public class TestServlet extends HttpServlet { @Override protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.addHeader("Transfer-encoding", "chunked"); res.addHeader("Trailer", "bar1, bar2"); . . . res.setTrailerFields(() -> { Map<String, String> map = new HashMap<>(); map.put("bar1", "A"); map.put("bar2", "B"); return map; }); . . . } } Http Response Trailer 35 S
  • 36. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | HTTP Trailer HTTP Response Composite TrailerFields Suppliers 36 S
  • 37. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Mapping Discovery • Allows for discovering how the current Servlet was reached – Does not include mappings for Filters – Accounts for all the various ways for the container to invoke a Servlet • Container applies mapping rules • Application code invokes – getRequestDispatcher().forward() – getRequestDispatcher().include() – AsyncContext.dispatch() – getNamedDispatcher() 37 E
  • 38. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Mapping Discovery • Allows for discovering how the current Servlet was reached – Does not include mappings for Filters – Accounts for all the various ways for the container to invoke a Servlet • Container applies mapping rules • Application code invokes – getRequestDispatcher().forward() – getRequestDispatcher().include() – AsyncContext.dispatch() – getNamedDispatcher() 38 } New request attributes • INCLUDE_MAPPING • FORWARD_MAPPING • ASYNC_MAPPING E
  • 39. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Mapping Discovery • HttpServletRequest.getServletMapping() – Returns immutable HttpServletMapping • MappingMatch enum 39 E
  • 40. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Mapping Discovery • HttpServletRequest.getServletMapping() – Returns immutable HttpServletMapping • matchValue • pattern • servletName 40 E
  • 41. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Request Encoding • URL paths read from the wire are specified to be in UTF-8 – Vendor specific configuration is allowed • Clarifications on form data • ServletContext. setRequestCharacterEncoding() • New XML element, ie <request-character-encoding>UTF-8 </request-character-encoding> Response Encoding • ServletContext. setResponseCharacterEncoding() • New XML element, ie <response-character-encoding>UTF-8 </response-character-encoding> 41 Encoding Clarifications E
  • 42. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Odds and Ends • Add Java SE 8 default methods – ServletContextAttributeListener, ServletContextListener, ServletRequestAttributeListener, ServletRequestListener, HttpSessionActivationListener, HttpSessionAttributeListener, HttpSessionBindingListener, HttpSessionListener – Filter#init, #destroy • Add GenericFilter and HttpFilter Servlet 4.0 Ease of Use 42 S
  • 43. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Odds and Ends • <default-context-path> element in web.xml • ServletContext – void setSessionTimeout(int minutes) – ServletRegistration.Dynamic addJspFile(String name, String jspFile) 43 S
  • 44. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Opening Up JavaEE 8 Overview and Servlet Perspective 44 E
  • 45. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | J2EE 1.3 CMP, JCA Robustness J2EE 1.4 JAX-RPC Mgmt, Deploy- ment Web Services Java EE 5 Annotations, EJB 3.0, JPA, JSF, JAXB JAX-WS Ease of Development Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Lightweight 1999 2001 2003 2006 2009 2013 Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch Productivity & HTML5 J2EE 1.2 Servlet, JSP, EJB, JMS Enterprise Java Java EE 8 – The Next Step Java EE 8 Servlet 4.0, JAX-RS 2.1, JSON-B JSON-P 1.1, Security Modernization, Simplification 2017 E
  • 46. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Eclipse Enterprise for Java (EE4J) Moving Java EE to Eclipse Foundation 46 Technology  Agile  Flexible  Open  Compatible Community and Vendors Sponsorship Join the discussion at ee4j-community@eclipse.org Enterprise for Java E
  • 47. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Eclipse Enterprise for Java (EE4J) Project Overview • Open process • Collaboration: community, vendors, Eclipse • Transition to EE4J in CY2018 – GlassFish 5.0/Java EE 8 RIs, TCKs, product docs – Process for existing and new specs – Compatibility process • Technology evolution, MicroProfile integration • Oracle Java EE Support through Java EE 8 – Continuity for Java EE community 47  Agile  Flexible  Open  Compatible Enterprise for Java E
  • 48. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Project Overview – Additional Detail 48 • Relicense Oracle Java EE 8 and GlassFish 5.0 technologies to EE4J - RIs, TCKs, and product docs • Build a compatible EE4J implementation that passes existing Java EE 8 TCKs • Use existing javax package names, and component specification names for existing JSRs for continuity • Define a process by which existing specifications can evolve, and new specifications can be included in the platform • Recruit developers, vendors and other community members as sponsors – Oracle no longer the platform “Spec lead” • Evolve the platform and potentially incorporate Eclipse MicroProfile technologies • Begin the above ASAP after Java EE 8 delivery to facilitate a rapid transition E
  • 49. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Open Process See Aquarium Blog for Updates 49 Join the discussion at ee4j-community@eclipse.org E
  • 50. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Oracle Will Continue to Support Vendors/Licensees • Oracle will honor existing agreements with vendors of Java EE implementations • Oracle will continue to offer renewals to license agreements • Oracle will continue to support vendor/licensee implementations and certifications as it has done prior to this announcement • Oracle intends to support Java EE 8 through Sept 2025 • We expect licensees will plan migration to EE4J prior to 2025 • EE4J licensing/compatibility will be defined by the EE4J project 50 E
  • 51. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | For Oracle Customers WebLogic Server “Next” Release – Version TBD • WebLogic Server “Next” – CY2018 • Commercial Java EE 8 Support • Compatible with prior versions • Available on premises – Installers, Docker images • Available in Oracle Cloud – Java Cloud Service, Application Container Cloud WebLogic Server “Next” Java EE 8 Reference Implementation Java Cloud Service Application Container Cloud CY2017 CY2018 CY2018 51 E
  • 52. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Challenges I Can See for Servlet in EE4J • Servlet has always been revised in lock-step with the whole EE platform – Hard to make that agile – Extremely high backward compatibility expectations • Important Servlet EG Members that are not full “Java EE” vendors – Jetty – Tomcat • Very large numbers of implementations 52 The next chapter is still unwritten E
  • 53. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Benefits - A New, Open Direction Forward • Agile - more rapid evolution of the technology • Flexible - modern open source process and licensing • Open – transparent process, broader vendor and community participation • Compatible - Transition from Java EE 8 to new offering • Multiple vendors and established foundation supporting the initiative 53 E
  • 54. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Summary • Moving Java EE to EE4J – In collaboration with the community – More agile, flexible and open process – Compatible implementation – Evolve the platform • Oracle will continue to... – Support licensees/vendors – Support existing WebLogic Server releases – Invest in new WebLogic Server releases, capabilities 54  Agile  Flexible  Open  Compatible Enterprise for Java E
  • 55. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Summary 55
  • 56. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Summary – Servlet 4.0 • brings HTTP/2 to the Java EE Platform • has significant incremental improvements • maintains the backward compatibility promise for which EE is (in)famous • reference implementation is GlassFish 5.0 – Only run in Java SE 8, not Java SE 9 – 5.0.1 plans to run on Java SE 9 56 S
  • 57. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Safe Harbor Statement The preceding 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. 57