SlideShare una empresa de Scribd logo
1 de 63
Descargar para leer sin conexión
HTTP/2 on Java
And what it means for the Java/Jakarta EE ecosystem
Ed Burns @edburns
Principal Architect Java on Azure Developer Experiences
2020-07
HTTP/2 Comes to Java
Servlet 4.0 and what it means to the Java/Jakarta EE
Ecosystem
Ed Burns @edburns
Principal Architect Java on Azure Developer Experiences
2020-07
• Brief Personal Journey
• Java/Jakarta EE on Azure
• Servlet 4
• HTTP/2 and Servlet 4
• New Improvements
• Summary
My Plan for Your Time Investment
Professional Biography
Client
NCSA Mosaic (1994)
SGI Cosmo Web Authoring
Sun Netscape 6 OJI
Server
J2EE JSF (2002)
Oracle Java EE
Servlet, JSF, Bean Validation, etc.
Microsoft Azure Cloud (2019)
Books
Starting on the Client: Birth of a Big Thing
Oil and Chemistry Building at University of
Illinois in Urbana-Champaign
Home of NCSA Mosaic
First Graphical Web Browser
Gratis and Free software
Built on prior work really well
Ubiquitous (cross platform)
Delivered something everyone
wanted
Easy to author: copy and paste from
view source!
Cobbles existing things together in an
exciting new way.
Simplicity: HTTP/1.0, TCP/IP sockets
Anyone can add new servers, no need
to ask permission.
Leverages network effect
Dabbling on the Server
Birth of the Monolith: Spring and J2EE
Addressed shared pain points
Transparent development process
Spring rode the crest of vendor
marketing efforts, differentiated
with operational excellence
J2EE had multi-vendor concept,
strong community governance
Photo: Les Chatfield
My First “War”: Web Frameworks
Good variety of “good enough” tools
Created a component ecosystem
Lots of buzz around this space due to
“Web Framework Wars”
The Cloud: Birth of Another Big Thing
2004: Sun Utility Computing
before it’s time…and at the wrong home
I’m Ready for the Cloud
My response to cloud disruption
Get out from inside of the monolith
Work with the hosting platform
Monolith
Microservices
Helps enterprises scale
Java EE on Azure with Oracle WebLogic
Azure Marketplace Solution for WebLogic
Published, maintained and supported by Oracle
Based on Oracle Linux 7.6, Oracle JDK and WebLogic 12c R2
(12.2.1.3)
Bring your own license
Supports common use-cases such as load-balancing and clustering
WebLogic Server on Azure IaaS
Script file
ARM template
Virtual Network
Admin Server Public IP
Admin Server NIC
Admin Sever VM
Managed Sever Public IPs
Managed Server NICs
Managed Server VMs
Storage
WebLogic on Azure IaaS
Four Azure Application Offers in the Marketplace
• Create a single VM with WebLogic Admin Only
domain pre-configured
• Create an N-node WebLogic cluster with the admin
server on one VM and cluster members on
other VMs
• Create an N-node WebLogic cluster as in the
preceding offer, but with an Azure LoadBalancer
automatically configured for the cluster
• Create an N-node WebLogic dynamic cluster with
the admin server on one VM and managed servers in
a Dynamic cluster on the other nodes
How WebLogic and Coherence work on Azure Kubernetes Service
© Microsoft Corporation
Azure
Kubectl
Kubernetes
Kebectl create…
Install Domain
inputs (yaml)
Customer Tenancy
WLS Domain
Image
Operator Image
Kubernetes cluster
Domain
Secrets
Operator
WebLogic Domain(s)
WLS Cluster
AS MS MS MSMS MS
PVLogs
Open Source Helm Charts
Open Source Kubernetes
Operators
• Oracle WebLogic
https://aka.ms/wlsoperator
• Oracle Coherence
https://aka.ms/cohoperator
Demo
Java EE 8 on Azure: Servlet 4.0
• Server Push
• Mapping
HTTP/2
Perception is Reality (especially with Web Browsers)
HTTP/2
Perception is Reality (especially with Web Browsers)
HTTP/2
Perception is Reality (especially with Web Browsers)
Reduced perception of
latency
HTTP/2
Perception is Reality (especially with Web Browsers)
Reduced perception of
latency
Header field
compression
HTTP/2
Perception is Reality (especially with Web Browsers)
Reduced perception of
latency
Header field
compression
Multiple
concurrent
exchanges
HTTP/2 is really just a new transport
layer underneath HTTP/1.1
– same request/response model
– no new methods
– no new headers
– no new usage patterns from
application layer
– no new usage of URL spec and other
lower level specs
Network Programming Review
Standing on the Shoulders
Network Programming Review
Network Programming Review
Network Programming Review
Network Programming Review
Network Programming Review
Network Programming Review
Network Programming Review
• HTTP/1.0
– Sockets are a throwaway resource
– Specification says very little about how
sockets are to be used
– Browsers free to open many sockets to
the same server
Network Programming Review
Credit: chrisjstanley flickr
The Socket Angle
Network Programming Review
The Socket Angle
• HTTP/2
– Sockets seen as a scarce resource
– Specification says much about how
they are to be used
– Only one open per server
Network Programming Review
The Socket Angle
Client ServerClient Server
Client Server
Client Server
Client Server
Client Server
Network Programming Review
Solution in HTTP/2
Client Server
Network Programming Review
• HTTP/1.0 was designed to be easy to implement with contemporary
development practices of 1991
– text based protocol
– leaves flow control to the TCP layer
– easy to write a parser
– simple socket lifecycle
The Adoption Angle
Network Programming Review
• HTTP/2 is much more complicated to implement
– state machine
– flow control
– header compression
– binary framing (arguably easier than text based for parsing)
The Adoption Angle
HTTP/2 Big Ticket Feature Review
• Request/Response multiplexing
• Binary Framing
• Stream Prioritization
• Server Push
• Header Compression
• Upgrade from HTTP/1.1
• ALPN
• 101 Switching Protocols
HTTP/2 Request Response Multiplexing
• Fully bi-directional
• Enabled by defining some terms
– Connection
A TCP socket
– Stream
A “channel” within a connection
– Message
A logical message, such as a request or a response
– Frame
The smallest unit of communication in HTTP/2.
Lets the protocol do more things with a single TCP connection
HTTP/2 Request Response Multiplexing
• Fully bi-directional
• Enabled by defining some terms
– Connection
A TCP socket
– Stream
A “channel” within a connection
– Message
A logical message, such as a request or a response
– Frame
The smallest unit of communication in HTTP/2.
Lets the protocol do more things with a single TCP connection
Back pressure?
HTTP/2 Request Response Multiplexing
• Fully bi-directional
• Enabled by defining some terms
– Connection
A TCP socket
– Stream
A “channel” within a connection
– Message
A logical message, such as a request or a response
– Frame
The smallest unit of communication in HTTP/2.
Lets the protocol do more things with a single TCP connection
Flow control
HTTP/2 Request Response Multiplexing
Connections, Streams, Messages, Frames
HTTP/2 Request Response Multiplexing
• Once you break the communication down into frames, you can interweave
the logical streams over a single TCP connection.
• Yet another idea from the 1960s is new again.
Connections, Streams, Messages, Frames
Browser
ServerSingle TCP connection for HTTP 2
STREAM'4'
HEADERS'
STREAM'9'
HEADERS'
STREAM'7'
DATA'
STREAM'7'
HEADERS'
STREAM'2'
HEADERS'
STREAM'2'
DATA'
HTTP/2 Binary Framing
• Solves Head-Of-Line (HOL) blocking problem
• Type field can be DATA, HEADERS, PRIORITY, RST_STREAM, SETTINGS,
PUSH_PROMISE, PING, GOAWAY, WINDOW_UPDATE, CONTINUATION
Enabled by dumping newline delimited ASCII
Length (24)
Type (8) Flags (8)
R Stream Identifier (31)
Frame Payload (0 …)
HTTP/2 Header Compression
• Observation: most of the headers
are the same in a given connection
– Host: Accept: user-agent: etc.
• Why send them every time?
• Have the server and the client keep
tables of headers, then just send
references and updates to the
tables.
Known as HPACK
HTTP/2 Stream Prioritization
• Stream Dependency in HEADERS Frame
• PRIORITY frame type
• An additional 40 bytes
– Stream id (31)
– Weight (8): [1, 256]
– Exclusive bit (1)
• Only a suggestion
A
B C
4 12
A
B CD
4 16 12
exclusive = 0
A
B C
D
4 12
16
exclusive = 1
HTTP/2 Server Push
• Eliminates the need for resource inlining.
• Lets the server populate the browser’s cache in advance of the browser
asking for the resource to put in the cache.
• No corresponding JavaScript API, but can be combined with SSE
– Server pushes stuff into the browser’s cache.
– Server uses SSE to tell the browser to go fetch it (but we know it’s already in the
browser’s cache).
HTTP/2 Upgrade from HTTP/1.1
• Not secure (h2c)
– We have to use port 80
– Use existing 101 Switching Protocols from HTTP/1.1
– No Browsers implement this!
• Secure (h2)
– Application Layer Protocol Negotiation (ALPN)
Secure or not-secure?
• Allow frameworks to effectively
leverage server push
– flexible strategies for leveraging push
• Leverage ALPN
Abstractions Endure
Servlet API is Well Positioned to Enable HTTP/2 Optimizations
• Request/Response multiplexing
• Binary Framing/Flow Control
• Stream Prioritization
• Server Push
• Header Compression
• Upgrade from HTTP/1.1
– ALPN
– 101 Switching Protocols
HTTP/2 Features
Servlet 4.0 Big Ticket New Features
• Request/Response multiplexing
• Binary Framing/Flow Control
• Stream Prioritization
• Server Push
• Header Compression
• Upgrade from HTTP/1.1
– ALPN
– 101 Switching Protocols
HTTP/2 Features Potentially Exposed in Servlet API
Servlet 4.0 Big Ticket New Features
Servlet 4.0 Big Ticket New Features
• HTTP/2 Required, including ALPN and HPACK
• HTTP/2 Server Push
– Push resource to client for a given url and headers
– Not at all a replacement for WebSocket
– Really useful for frameworks that build on Servlet, such as JSF
– Builder API
• Ease of Use
javax.servlet.http.PushBuilder
Server Push via Builder API
Servlet 4.0
Big Ticket
New Features
Server Push
public class FacesServlet implements Servlet {
public void service(ServletRequest req,
ServletResponse resp) throws IOException, ServletException {
//..
HttpServletRequest request = (HttpServletRequest) req;
try {
ResourceHandler handler =
context.getApplication().getResourceHandler();
if (handler.isResourceRequest(context)) {
handler.handleResourceRequest(context);
} else {
lifecycle.attachWindow(context);
lifecycle.execute(context);
lifecycle.render(context);
}
}
}
Example of Potential Use from JSF
Server Push
public class ExternalContextImpl extends ExternalContext {
//…
public String encodeResourceURL(String url) {
if (null == url) {
String message = MessageUtils.getExceptionMessageString
(MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "url");
throw new NullPointerException(message);
}
((HttpServletRequest) request).getPushBuilder().path(url).push();
return ((HttpServletResponse) response).encodeURL(url);
}
//…
}
Example of Potential Use from JSF
Reactive Programming
ResponsiveResponsive
Message DrivenMessage Driven
ResilientResilientElasticElastic
image credit: reactivemanifesto.org
Non-blocking IO in Servlet 3.1
• ServletInputStream
– #setReadListener, #isReady
• ServletOutputStream
– #setWriteListener, #isReady
• ReadListener
– #onDataAvailable, #onAllDataRead, #onError
• WriteListener
– #onWritePossible, #onError
Non-blocking IO in Servlet 3.1
• ServletInputStream
– #setReadListener, #isReady
• ServletOutputStream
– #setWriteListener, #isReady
• ReadListener
– #onDataAvailable, #onAllDataRead, #onError
• WriteListener
– #onWritePossible, #onError
Flow control
• Add Java SE 8 default methods
– ServletContextAttributeListener, ServletContextListener,
ServletRequestAttributeListener, ServletRequestListener,
HttpSessionActivationListener, HttpSessionAttributeListener,
HttpSessionBindingListener, HttpSessionListener
• Add default to Filter#init, #destroy
• Add GenericFilter and HttpFilter
• <default-context-path> element in web.xml
• Add Cookie[] getCookie(String name) to
HttpServletRequest
Servlet 4.0 Small Change
Servlet 4.0 Small Change
• Mapping javax.servlet.http.HttpServletRequest.
getMapping()
• javax.servlet.http.Mapping
– MappingMatch getMatchType()
– String getMatchValue()
– String getPattern()
• javax.servlet.http.MappingMatch enum
– CONTEXT_ROOT, DEFAULT, EXACT, EXTENSION, IMPLICIT, PATH,
UNKNOWN
Discover current Active Mapping
@Deprecate some methods and classes
– ServletContext: getServlet(), getServlets(), getServletNames(), log()
– ServletRequestWrapper: getRealPath()
– SingleThreadModel
– UnavailableException
– HttpServletResponse: encodeUrl(), encodeRedirectUrl(), setStatus()
– HttpServletResponseWrapper: encodeUrl(), encodeRedirectUrl(), setStatus()
– HttpSession: getSessionContext(), getValue(), getValueNames(), putValue(),
removeValue()
– HttpSessionContext
Servlet 4.0 Small Change
• HttpConstraint
• HttpMethodConstraint
• MultipartConfig
• ServletSecurity
• WebFilter
• WebInitParam
• WebListener
• WebServlet
• …
• PostConstruct
• PreDestroy
• Resource
• Resources
• DeclareRoles
• RunAs
• DataSourceDefinition
• DataSourceDefinitions
• …
•
• AroundConstruct
• AroundInvoke
• AroundTimeout
• ExcludeClassInterceptors
• ExcludeDefaultInterceptors
• Interceptors
• …
Servlet 4.0 Small Change
Clarify exactly which annotations are
not scanned when metadata-complete="true"
• Be willing to adapt and change your focus
• The cloud has disrupted everything
• Azure is a great cloud for Java workloads
Summary

Más contenido relacionado

La actualidad más candente

HTML5, HTTP2, and You 1.1
HTML5, HTTP2, and You 1.1HTML5, HTTP2, and You 1.1
HTML5, HTTP2, and You 1.1Daniel Austin
 
Migrating from Pivotal tc Server on-prem to IBM Liberty in the cloud
Migrating from Pivotal tc Server on-prem to IBM Liberty in the cloudMigrating from Pivotal tc Server on-prem to IBM Liberty in the cloud
Migrating from Pivotal tc Server on-prem to IBM Liberty in the cloudJohn Donaldson
 
HTTP/2 : why upgrading the web? - apidays Paris
HTTP/2 : why upgrading the web? - apidays ParisHTTP/2 : why upgrading the web? - apidays Paris
HTTP/2 : why upgrading the web? - apidays ParisQuentin Adam
 
Introduction to HTTP/2
Introduction to HTTP/2Introduction to HTTP/2
Introduction to HTTP/2Ido Flatow
 
AMIS SIG - Introducing Apache Kafka - Scalable, reliable Event Bus & Message ...
AMIS SIG - Introducing Apache Kafka - Scalable, reliable Event Bus & Message ...AMIS SIG - Introducing Apache Kafka - Scalable, reliable Event Bus & Message ...
AMIS SIG - Introducing Apache Kafka - Scalable, reliable Event Bus & Message ...Lucas Jellema
 
Let the alpakka pull your stream
Let the alpakka pull your streamLet the alpakka pull your stream
Let the alpakka pull your streamEnno Runne
 
An Introduction to Apache Kafka
An Introduction to Apache KafkaAn Introduction to Apache Kafka
An Introduction to Apache KafkaAmir Sedighi
 
No Surprises Geo Replication - Pulsar Virtual Summit Europe 2021
No Surprises Geo Replication - Pulsar Virtual Summit Europe 2021No Surprises Geo Replication - Pulsar Virtual Summit Europe 2021
No Surprises Geo Replication - Pulsar Virtual Summit Europe 2021StreamNative
 
Tomcat New Evolution
Tomcat New EvolutionTomcat New Evolution
Tomcat New EvolutionAllan Huang
 
Servletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,postServletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,postvamsi krishna
 
Advanced WCF Workshop
Advanced WCF WorkshopAdvanced WCF Workshop
Advanced WCF WorkshopIdo Flatow
 
The Good, The Bad, and The Avro (Graham Stirling, Saxo Bank and David Navalho...
The Good, The Bad, and The Avro (Graham Stirling, Saxo Bank and David Navalho...The Good, The Bad, and The Avro (Graham Stirling, Saxo Bank and David Navalho...
The Good, The Bad, and The Avro (Graham Stirling, Saxo Bank and David Navalho...confluent
 
Kafka Summit SF 2017 - Kafka Connect Best Practices – Advice from the Field
Kafka Summit SF 2017 - Kafka Connect Best Practices – Advice from the FieldKafka Summit SF 2017 - Kafka Connect Best Practices – Advice from the Field
Kafka Summit SF 2017 - Kafka Connect Best Practices – Advice from the Fieldconfluent
 
WebSocket MicroService vs. REST Microservice
WebSocket MicroService vs. REST MicroserviceWebSocket MicroService vs. REST Microservice
WebSocket MicroService vs. REST MicroserviceRick Hightower
 
Connecting Applications Everywhere with ActiveMQ
Connecting Applications Everywhere with ActiveMQConnecting Applications Everywhere with ActiveMQ
Connecting Applications Everywhere with ActiveMQRob Davies
 
Building a FaaS with pulsar
Building a FaaS with pulsarBuilding a FaaS with pulsar
Building a FaaS with pulsarStreamNative
 

La actualidad más candente (20)

HTML5, HTTP2, and You 1.1
HTML5, HTTP2, and You 1.1HTML5, HTTP2, and You 1.1
HTML5, HTTP2, and You 1.1
 
Migrating from Pivotal tc Server on-prem to IBM Liberty in the cloud
Migrating from Pivotal tc Server on-prem to IBM Liberty in the cloudMigrating from Pivotal tc Server on-prem to IBM Liberty in the cloud
Migrating from Pivotal tc Server on-prem to IBM Liberty in the cloud
 
HTTP/2 : why upgrading the web? - apidays Paris
HTTP/2 : why upgrading the web? - apidays ParisHTTP/2 : why upgrading the web? - apidays Paris
HTTP/2 : why upgrading the web? - apidays Paris
 
Introduction to HTTP/2
Introduction to HTTP/2Introduction to HTTP/2
Introduction to HTTP/2
 
AMIS SIG - Introducing Apache Kafka - Scalable, reliable Event Bus & Message ...
AMIS SIG - Introducing Apache Kafka - Scalable, reliable Event Bus & Message ...AMIS SIG - Introducing Apache Kafka - Scalable, reliable Event Bus & Message ...
AMIS SIG - Introducing Apache Kafka - Scalable, reliable Event Bus & Message ...
 
Let the alpakka pull your stream
Let the alpakka pull your streamLet the alpakka pull your stream
Let the alpakka pull your stream
 
An Introduction to Apache Kafka
An Introduction to Apache KafkaAn Introduction to Apache Kafka
An Introduction to Apache Kafka
 
Kafka Security
Kafka SecurityKafka Security
Kafka Security
 
Apache Kafka Security
Apache Kafka Security Apache Kafka Security
Apache Kafka Security
 
No Surprises Geo Replication - Pulsar Virtual Summit Europe 2021
No Surprises Geo Replication - Pulsar Virtual Summit Europe 2021No Surprises Geo Replication - Pulsar Virtual Summit Europe 2021
No Surprises Geo Replication - Pulsar Virtual Summit Europe 2021
 
Tomcat New Evolution
Tomcat New EvolutionTomcat New Evolution
Tomcat New Evolution
 
Servletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,postServletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,post
 
Advanced WCF Workshop
Advanced WCF WorkshopAdvanced WCF Workshop
Advanced WCF Workshop
 
What's New in WildFly 9?
What's New in WildFly 9?What's New in WildFly 9?
What's New in WildFly 9?
 
The Good, The Bad, and The Avro (Graham Stirling, Saxo Bank and David Navalho...
The Good, The Bad, and The Avro (Graham Stirling, Saxo Bank and David Navalho...The Good, The Bad, and The Avro (Graham Stirling, Saxo Bank and David Navalho...
The Good, The Bad, and The Avro (Graham Stirling, Saxo Bank and David Navalho...
 
Kafka Summit SF 2017 - Kafka Connect Best Practices – Advice from the Field
Kafka Summit SF 2017 - Kafka Connect Best Practices – Advice from the FieldKafka Summit SF 2017 - Kafka Connect Best Practices – Advice from the Field
Kafka Summit SF 2017 - Kafka Connect Best Practices – Advice from the Field
 
Apache Kafka Demo
Apache Kafka DemoApache Kafka Demo
Apache Kafka Demo
 
WebSocket MicroService vs. REST Microservice
WebSocket MicroService vs. REST MicroserviceWebSocket MicroService vs. REST Microservice
WebSocket MicroService vs. REST Microservice
 
Connecting Applications Everywhere with ActiveMQ
Connecting Applications Everywhere with ActiveMQConnecting Applications Everywhere with ActiveMQ
Connecting Applications Everywhere with ActiveMQ
 
Building a FaaS with pulsar
Building a FaaS with pulsarBuilding a FaaS with pulsar
Building a FaaS with pulsar
 

Similar a HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE ecosystem

Accelerating and Securing your Applications in AWS. In-depth look at Solving ...
Accelerating and Securing your Applications in AWS. In-depth look at Solving ...Accelerating and Securing your Applications in AWS. In-depth look at Solving ...
Accelerating and Securing your Applications in AWS. In-depth look at Solving ...Amazon Web Services
 
[Draft] Fast Prototyping with DPDK and eBPF in Containernet
[Draft] Fast Prototyping with DPDK and eBPF in Containernet[Draft] Fast Prototyping with DPDK and eBPF in Containernet
[Draft] Fast Prototyping with DPDK and eBPF in ContainernetAndrew Wang
 
CON5898 What Servlet 4.0 Means To You
CON5898 What Servlet 4.0 Means To YouCON5898 What Servlet 4.0 Means To You
CON5898 What Servlet 4.0 Means To YouEdward Burns
 
WebSockets wiith Scala and Play! Framework
WebSockets wiith Scala and Play! FrameworkWebSockets wiith Scala and Play! Framework
WebSockets wiith Scala and Play! FrameworkFabio Tiriticco
 
The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...
 The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ... The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...
The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...Josef Adersberger
 
Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...
Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...
Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...QAware GmbH
 
Servlet 4.0 at GeekOut 2015
Servlet 4.0 at GeekOut 2015Servlet 4.0 at GeekOut 2015
Servlet 4.0 at GeekOut 2015Edward Burns
 
HTTP/2 comes to Java. What Servlet 4.0 means to you. DevNexus 2015
HTTP/2 comes to Java.  What Servlet 4.0 means to you. DevNexus 2015HTTP/2 comes to Java.  What Servlet 4.0 means to you. DevNexus 2015
HTTP/2 comes to Java. What Servlet 4.0 means to you. DevNexus 2015Edward Burns
 
2015 UJUG, Servlet 4.0 portion
2015 UJUG, Servlet 4.0 portion2015 UJUG, Servlet 4.0 portion
2015 UJUG, Servlet 4.0 portionmnriem
 
OpenStack Networking and Automation
OpenStack Networking and AutomationOpenStack Networking and Automation
OpenStack Networking and AutomationAdam Johnson
 
Cloud compiler - Minor Project by students of CBPGEC
Cloud compiler - Minor Project by students of CBPGEC  Cloud compiler - Minor Project by students of CBPGEC
Cloud compiler - Minor Project by students of CBPGEC vipin kumar
 
Java servlet technology
Java servlet technologyJava servlet technology
Java servlet technologyMinal Maniar
 
The next step from Microsoft - Vnext (Srdjan Poznic)
The next step from Microsoft - Vnext (Srdjan Poznic)The next step from Microsoft - Vnext (Srdjan Poznic)
The next step from Microsoft - Vnext (Srdjan Poznic)Geekstone
 
What's New and Noteworthy on Oracle CAF 12.1.3
What's New and Noteworthy on Oracle CAF 12.1.3What's New and Noteworthy on Oracle CAF 12.1.3
What's New and Noteworthy on Oracle CAF 12.1.3Bruno Borges
 
Better performances with HTTP/2
Better performances with HTTP/2Better performances with HTTP/2
Better performances with HTTP/2Thomas Segismont
 
Open stackaustinmeetupsept21
Open stackaustinmeetupsept21Open stackaustinmeetupsept21
Open stackaustinmeetupsept21Brent Doncaster
 

Similar a HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE ecosystem (20)

Accelerating and Securing your Applications in AWS. In-depth look at Solving ...
Accelerating and Securing your Applications in AWS. In-depth look at Solving ...Accelerating and Securing your Applications in AWS. In-depth look at Solving ...
Accelerating and Securing your Applications in AWS. In-depth look at Solving ...
 
[Draft] Fast Prototyping with DPDK and eBPF in Containernet
[Draft] Fast Prototyping with DPDK and eBPF in Containernet[Draft] Fast Prototyping with DPDK and eBPF in Containernet
[Draft] Fast Prototyping with DPDK and eBPF in Containernet
 
Web-Socket
Web-SocketWeb-Socket
Web-Socket
 
CON5898 What Servlet 4.0 Means To You
CON5898 What Servlet 4.0 Means To YouCON5898 What Servlet 4.0 Means To You
CON5898 What Servlet 4.0 Means To You
 
WebSockets wiith Scala and Play! Framework
WebSockets wiith Scala and Play! FrameworkWebSockets wiith Scala and Play! Framework
WebSockets wiith Scala and Play! Framework
 
Servlet programming
Servlet programmingServlet programming
Servlet programming
 
The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...
 The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ... The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...
The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...
 
Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...
Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...
Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...
 
Servlet 4.0 at GeekOut 2015
Servlet 4.0 at GeekOut 2015Servlet 4.0 at GeekOut 2015
Servlet 4.0 at GeekOut 2015
 
HTTP/2 comes to Java. What Servlet 4.0 means to you. DevNexus 2015
HTTP/2 comes to Java.  What Servlet 4.0 means to you. DevNexus 2015HTTP/2 comes to Java.  What Servlet 4.0 means to you. DevNexus 2015
HTTP/2 comes to Java. What Servlet 4.0 means to you. DevNexus 2015
 
2015 UJUG, Servlet 4.0 portion
2015 UJUG, Servlet 4.0 portion2015 UJUG, Servlet 4.0 portion
2015 UJUG, Servlet 4.0 portion
 
OpenStack Networking and Automation
OpenStack Networking and AutomationOpenStack Networking and Automation
OpenStack Networking and Automation
 
Servlet programming
Servlet programmingServlet programming
Servlet programming
 
Real time web apps
Real time web appsReal time web apps
Real time web apps
 
Cloud compiler - Minor Project by students of CBPGEC
Cloud compiler - Minor Project by students of CBPGEC  Cloud compiler - Minor Project by students of CBPGEC
Cloud compiler - Minor Project by students of CBPGEC
 
Java servlet technology
Java servlet technologyJava servlet technology
Java servlet technology
 
The next step from Microsoft - Vnext (Srdjan Poznic)
The next step from Microsoft - Vnext (Srdjan Poznic)The next step from Microsoft - Vnext (Srdjan Poznic)
The next step from Microsoft - Vnext (Srdjan Poznic)
 
What's New and Noteworthy on Oracle CAF 12.1.3
What's New and Noteworthy on Oracle CAF 12.1.3What's New and Noteworthy on Oracle CAF 12.1.3
What's New and Noteworthy on Oracle CAF 12.1.3
 
Better performances with HTTP/2
Better performances with HTTP/2Better performances with HTTP/2
Better performances with HTTP/2
 
Open stackaustinmeetupsept21
Open stackaustinmeetupsept21Open stackaustinmeetupsept21
Open stackaustinmeetupsept21
 

Más de Edward Burns

Developer Career Masterplan
Developer Career MasterplanDeveloper Career Masterplan
Developer Career MasterplanEdward Burns
 
Jakarta EE 11 Status Update​
Jakarta EE 11 Status Update​Jakarta EE 11 Status Update​
Jakarta EE 11 Status Update​Edward Burns
 
Sponsored Session: Please touch that dial!
Sponsored Session: Please touch that dial!Sponsored Session: Please touch that dial!
Sponsored Session: Please touch that dial!Edward Burns
 
How modernizing enterprise applications gives you a competitive advantage
How modernizing enterprise applications gives you a competitive advantageHow modernizing enterprise applications gives you a competitive advantage
How modernizing enterprise applications gives you a competitive advantageEdward Burns
 
Wie Azure Jakarta EE Nutzt
Wie Azure Jakarta EE NutztWie Azure Jakarta EE Nutzt
Wie Azure Jakarta EE NutztEdward Burns
 
Practical lessons from customers performing digital transformation with Azure
Practical lessons from customers performing digital transformation with AzurePractical lessons from customers performing digital transformation with Azure
Practical lessons from customers performing digital transformation with AzureEdward Burns
 
wls-azure-devnexus-2022.pdf
wls-azure-devnexus-2022.pdfwls-azure-devnexus-2022.pdf
wls-azure-devnexus-2022.pdfEdward Burns
 
Jakarta EE und Microprofile sind bei Azure zu Hause
Jakarta EE und Microprofile sind bei Azure zu HauseJakarta EE und Microprofile sind bei Azure zu Hause
Jakarta EE und Microprofile sind bei Azure zu HauseEdward Burns
 
Java on Your Terms with Azure
Java on Your Terms with AzureJava on Your Terms with Azure
Java on Your Terms with AzureEdward Burns
 
Wars I’ve Seen From Java EE to Spring and more, Azure has you covered
Wars I’ve SeenFrom Java EE to Spring and more, Azure has you coveredWars I’ve SeenFrom Java EE to Spring and more, Azure has you covered
Wars I’ve Seen From Java EE to Spring and more, Azure has you coveredEdward 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?Edward 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?Edward Burns
 
Building a Serverless State Service for the Cloud
Building a Serverless State Service for the CloudBuilding a Serverless State Service for the Cloud
Building a Serverless State Service for the CloudEdward Burns
 
Burns jsf-confess-2015
Burns jsf-confess-2015Burns jsf-confess-2015
Burns jsf-confess-2015Edward Burns
 
JSF 2.2 Input Output JavaLand 2015
JSF 2.2 Input Output JavaLand 2015JSF 2.2 Input Output JavaLand 2015
JSF 2.2 Input Output JavaLand 2015Edward Burns
 
Java EE 7 from an HTML5 Perspective, JavaLand 2015
Java EE 7 from an HTML5 Perspective, JavaLand 2015Java EE 7 from an HTML5 Perspective, JavaLand 2015
Java EE 7 from an HTML5 Perspective, JavaLand 2015Edward Burns
 
JSF 2.3 Adopt-a-JSR 10 Minute Infodeck
JSF 2.3 Adopt-a-JSR 10 Minute InfodeckJSF 2.3 Adopt-a-JSR 10 Minute Infodeck
JSF 2.3 Adopt-a-JSR 10 Minute InfodeckEdward Burns
 
Servlet 4.0 Adopt-a-JSR 10 Minute Infodeck
Servlet 4.0 Adopt-a-JSR 10 Minute InfodeckServlet 4.0 Adopt-a-JSR 10 Minute Infodeck
Servlet 4.0 Adopt-a-JSR 10 Minute InfodeckEdward Burns
 
JavaOne 2014 BOF4241 What's Next for JSF?
JavaOne 2014 BOF4241 What's Next for JSF?JavaOne 2014 BOF4241 What's Next for JSF?
JavaOne 2014 BOF4241 What's Next for JSF?Edward Burns
 
JavaOne 2014 Java EE 8 Booth Slides
JavaOne 2014 Java EE 8 Booth SlidesJavaOne 2014 Java EE 8 Booth Slides
JavaOne 2014 Java EE 8 Booth SlidesEdward Burns
 

Más de Edward Burns (20)

Developer Career Masterplan
Developer Career MasterplanDeveloper Career Masterplan
Developer Career Masterplan
 
Jakarta EE 11 Status Update​
Jakarta EE 11 Status Update​Jakarta EE 11 Status Update​
Jakarta EE 11 Status Update​
 
Sponsored Session: Please touch that dial!
Sponsored Session: Please touch that dial!Sponsored Session: Please touch that dial!
Sponsored Session: Please touch that dial!
 
How modernizing enterprise applications gives you a competitive advantage
How modernizing enterprise applications gives you a competitive advantageHow modernizing enterprise applications gives you a competitive advantage
How modernizing enterprise applications gives you a competitive advantage
 
Wie Azure Jakarta EE Nutzt
Wie Azure Jakarta EE NutztWie Azure Jakarta EE Nutzt
Wie Azure Jakarta EE Nutzt
 
Practical lessons from customers performing digital transformation with Azure
Practical lessons from customers performing digital transformation with AzurePractical lessons from customers performing digital transformation with Azure
Practical lessons from customers performing digital transformation with Azure
 
wls-azure-devnexus-2022.pdf
wls-azure-devnexus-2022.pdfwls-azure-devnexus-2022.pdf
wls-azure-devnexus-2022.pdf
 
Jakarta EE und Microprofile sind bei Azure zu Hause
Jakarta EE und Microprofile sind bei Azure zu HauseJakarta EE und Microprofile sind bei Azure zu Hause
Jakarta EE und Microprofile sind bei Azure zu Hause
 
Java on Your Terms with Azure
Java on Your Terms with AzureJava on Your Terms with Azure
Java on Your Terms with Azure
 
Wars I’ve Seen From Java EE to Spring and more, Azure has you covered
Wars I’ve SeenFrom Java EE to Spring and more, Azure has you coveredWars I’ve SeenFrom Java EE to Spring and more, Azure has you covered
Wars I’ve Seen From Java EE to Spring and more, Azure has 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?
 
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?
 
Building a Serverless State Service for the Cloud
Building a Serverless State Service for the CloudBuilding a Serverless State Service for the Cloud
Building a Serverless State Service for the Cloud
 
Burns jsf-confess-2015
Burns jsf-confess-2015Burns jsf-confess-2015
Burns jsf-confess-2015
 
JSF 2.2 Input Output JavaLand 2015
JSF 2.2 Input Output JavaLand 2015JSF 2.2 Input Output JavaLand 2015
JSF 2.2 Input Output JavaLand 2015
 
Java EE 7 from an HTML5 Perspective, JavaLand 2015
Java EE 7 from an HTML5 Perspective, JavaLand 2015Java EE 7 from an HTML5 Perspective, JavaLand 2015
Java EE 7 from an HTML5 Perspective, JavaLand 2015
 
JSF 2.3 Adopt-a-JSR 10 Minute Infodeck
JSF 2.3 Adopt-a-JSR 10 Minute InfodeckJSF 2.3 Adopt-a-JSR 10 Minute Infodeck
JSF 2.3 Adopt-a-JSR 10 Minute Infodeck
 
Servlet 4.0 Adopt-a-JSR 10 Minute Infodeck
Servlet 4.0 Adopt-a-JSR 10 Minute InfodeckServlet 4.0 Adopt-a-JSR 10 Minute Infodeck
Servlet 4.0 Adopt-a-JSR 10 Minute Infodeck
 
JavaOne 2014 BOF4241 What's Next for JSF?
JavaOne 2014 BOF4241 What's Next for JSF?JavaOne 2014 BOF4241 What's Next for JSF?
JavaOne 2014 BOF4241 What's Next for JSF?
 
JavaOne 2014 Java EE 8 Booth Slides
JavaOne 2014 Java EE 8 Booth SlidesJavaOne 2014 Java EE 8 Booth Slides
JavaOne 2014 Java EE 8 Booth Slides
 

Último

Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 

Último (20)

Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 

HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE ecosystem

  • 1. HTTP/2 on Java And what it means for the Java/Jakarta EE ecosystem Ed Burns @edburns Principal Architect Java on Azure Developer Experiences 2020-07
  • 2. HTTP/2 Comes to Java Servlet 4.0 and what it means to the Java/Jakarta EE Ecosystem Ed Burns @edburns Principal Architect Java on Azure Developer Experiences 2020-07
  • 3. • Brief Personal Journey • Java/Jakarta EE on Azure • Servlet 4 • HTTP/2 and Servlet 4 • New Improvements • Summary My Plan for Your Time Investment
  • 4. Professional Biography Client NCSA Mosaic (1994) SGI Cosmo Web Authoring Sun Netscape 6 OJI Server J2EE JSF (2002) Oracle Java EE Servlet, JSF, Bean Validation, etc. Microsoft Azure Cloud (2019) Books
  • 5. Starting on the Client: Birth of a Big Thing Oil and Chemistry Building at University of Illinois in Urbana-Champaign Home of NCSA Mosaic First Graphical Web Browser Gratis and Free software Built on prior work really well Ubiquitous (cross platform) Delivered something everyone wanted Easy to author: copy and paste from view source!
  • 6. Cobbles existing things together in an exciting new way. Simplicity: HTTP/1.0, TCP/IP sockets Anyone can add new servers, no need to ask permission. Leverages network effect Dabbling on the Server
  • 7. Birth of the Monolith: Spring and J2EE Addressed shared pain points Transparent development process Spring rode the crest of vendor marketing efforts, differentiated with operational excellence J2EE had multi-vendor concept, strong community governance Photo: Les Chatfield
  • 8. My First “War”: Web Frameworks Good variety of “good enough” tools Created a component ecosystem Lots of buzz around this space due to “Web Framework Wars”
  • 9. The Cloud: Birth of Another Big Thing 2004: Sun Utility Computing before it’s time…and at the wrong home
  • 10. I’m Ready for the Cloud My response to cloud disruption Get out from inside of the monolith Work with the hosting platform Monolith Microservices Helps enterprises scale
  • 11. Java EE on Azure with Oracle WebLogic Azure Marketplace Solution for WebLogic Published, maintained and supported by Oracle Based on Oracle Linux 7.6, Oracle JDK and WebLogic 12c R2 (12.2.1.3) Bring your own license Supports common use-cases such as load-balancing and clustering
  • 12.
  • 13. WebLogic Server on Azure IaaS Script file ARM template Virtual Network Admin Server Public IP Admin Server NIC Admin Sever VM Managed Sever Public IPs Managed Server NICs Managed Server VMs Storage
  • 14. WebLogic on Azure IaaS Four Azure Application Offers in the Marketplace • Create a single VM with WebLogic Admin Only domain pre-configured • Create an N-node WebLogic cluster with the admin server on one VM and cluster members on other VMs • Create an N-node WebLogic cluster as in the preceding offer, but with an Azure LoadBalancer automatically configured for the cluster • Create an N-node WebLogic dynamic cluster with the admin server on one VM and managed servers in a Dynamic cluster on the other nodes
  • 15. How WebLogic and Coherence work on Azure Kubernetes Service © Microsoft Corporation Azure Kubectl Kubernetes Kebectl create… Install Domain inputs (yaml) Customer Tenancy WLS Domain Image Operator Image Kubernetes cluster Domain Secrets Operator WebLogic Domain(s) WLS Cluster AS MS MS MSMS MS PVLogs Open Source Helm Charts Open Source Kubernetes Operators • Oracle WebLogic https://aka.ms/wlsoperator • Oracle Coherence https://aka.ms/cohoperator
  • 16. Demo Java EE 8 on Azure: Servlet 4.0 • Server Push • Mapping
  • 17. HTTP/2 Perception is Reality (especially with Web Browsers)
  • 18. HTTP/2 Perception is Reality (especially with Web Browsers)
  • 19. HTTP/2 Perception is Reality (especially with Web Browsers) Reduced perception of latency
  • 20. HTTP/2 Perception is Reality (especially with Web Browsers) Reduced perception of latency Header field compression
  • 21. HTTP/2 Perception is Reality (especially with Web Browsers) Reduced perception of latency Header field compression Multiple concurrent exchanges
  • 22. HTTP/2 is really just a new transport layer underneath HTTP/1.1 – same request/response model – no new methods – no new headers – no new usage patterns from application layer – no new usage of URL spec and other lower level specs Network Programming Review
  • 23. Standing on the Shoulders
  • 31. • HTTP/1.0 – Sockets are a throwaway resource – Specification says very little about how sockets are to be used – Browsers free to open many sockets to the same server Network Programming Review Credit: chrisjstanley flickr The Socket Angle
  • 32. Network Programming Review The Socket Angle • HTTP/2 – Sockets seen as a scarce resource – Specification says much about how they are to be used – Only one open per server
  • 33. Network Programming Review The Socket Angle Client ServerClient Server Client Server Client Server Client Server Client Server
  • 34. Network Programming Review Solution in HTTP/2 Client Server
  • 35. Network Programming Review • HTTP/1.0 was designed to be easy to implement with contemporary development practices of 1991 – text based protocol – leaves flow control to the TCP layer – easy to write a parser – simple socket lifecycle The Adoption Angle
  • 36. Network Programming Review • HTTP/2 is much more complicated to implement – state machine – flow control – header compression – binary framing (arguably easier than text based for parsing) The Adoption Angle
  • 37. HTTP/2 Big Ticket Feature Review • Request/Response multiplexing • Binary Framing • Stream Prioritization • Server Push • Header Compression • Upgrade from HTTP/1.1 • ALPN • 101 Switching Protocols
  • 38. HTTP/2 Request Response Multiplexing • Fully bi-directional • Enabled by defining some terms – Connection A TCP socket – Stream A “channel” within a connection – Message A logical message, such as a request or a response – Frame The smallest unit of communication in HTTP/2. Lets the protocol do more things with a single TCP connection
  • 39. HTTP/2 Request Response Multiplexing • Fully bi-directional • Enabled by defining some terms – Connection A TCP socket – Stream A “channel” within a connection – Message A logical message, such as a request or a response – Frame The smallest unit of communication in HTTP/2. Lets the protocol do more things with a single TCP connection Back pressure?
  • 40. HTTP/2 Request Response Multiplexing • Fully bi-directional • Enabled by defining some terms – Connection A TCP socket – Stream A “channel” within a connection – Message A logical message, such as a request or a response – Frame The smallest unit of communication in HTTP/2. Lets the protocol do more things with a single TCP connection Flow control
  • 41. HTTP/2 Request Response Multiplexing Connections, Streams, Messages, Frames
  • 42. HTTP/2 Request Response Multiplexing • Once you break the communication down into frames, you can interweave the logical streams over a single TCP connection. • Yet another idea from the 1960s is new again. Connections, Streams, Messages, Frames Browser ServerSingle TCP connection for HTTP 2 STREAM'4' HEADERS' STREAM'9' HEADERS' STREAM'7' DATA' STREAM'7' HEADERS' STREAM'2' HEADERS' STREAM'2' DATA'
  • 43. HTTP/2 Binary Framing • Solves Head-Of-Line (HOL) blocking problem • Type field can be DATA, HEADERS, PRIORITY, RST_STREAM, SETTINGS, PUSH_PROMISE, PING, GOAWAY, WINDOW_UPDATE, CONTINUATION Enabled by dumping newline delimited ASCII Length (24) Type (8) Flags (8) R Stream Identifier (31) Frame Payload (0 …)
  • 44. HTTP/2 Header Compression • Observation: most of the headers are the same in a given connection – Host: Accept: user-agent: etc. • Why send them every time? • Have the server and the client keep tables of headers, then just send references and updates to the tables. Known as HPACK
  • 45. HTTP/2 Stream Prioritization • Stream Dependency in HEADERS Frame • PRIORITY frame type • An additional 40 bytes – Stream id (31) – Weight (8): [1, 256] – Exclusive bit (1) • Only a suggestion A B C 4 12 A B CD 4 16 12 exclusive = 0 A B C D 4 12 16 exclusive = 1
  • 46. HTTP/2 Server Push • Eliminates the need for resource inlining. • Lets the server populate the browser’s cache in advance of the browser asking for the resource to put in the cache. • No corresponding JavaScript API, but can be combined with SSE – Server pushes stuff into the browser’s cache. – Server uses SSE to tell the browser to go fetch it (but we know it’s already in the browser’s cache).
  • 47. HTTP/2 Upgrade from HTTP/1.1 • Not secure (h2c) – We have to use port 80 – Use existing 101 Switching Protocols from HTTP/1.1 – No Browsers implement this! • Secure (h2) – Application Layer Protocol Negotiation (ALPN) Secure or not-secure?
  • 48. • Allow frameworks to effectively leverage server push – flexible strategies for leveraging push • Leverage ALPN Abstractions Endure Servlet API is Well Positioned to Enable HTTP/2 Optimizations
  • 49. • Request/Response multiplexing • Binary Framing/Flow Control • Stream Prioritization • Server Push • Header Compression • Upgrade from HTTP/1.1 – ALPN – 101 Switching Protocols HTTP/2 Features Servlet 4.0 Big Ticket New Features
  • 50. • Request/Response multiplexing • Binary Framing/Flow Control • Stream Prioritization • Server Push • Header Compression • Upgrade from HTTP/1.1 – ALPN – 101 Switching Protocols HTTP/2 Features Potentially Exposed in Servlet API Servlet 4.0 Big Ticket New Features
  • 51. Servlet 4.0 Big Ticket New Features • HTTP/2 Required, including ALPN and HPACK • HTTP/2 Server Push – Push resource to client for a given url and headers – Not at all a replacement for WebSocket – Really useful for frameworks that build on Servlet, such as JSF – Builder API • Ease of Use
  • 53. Server Push via Builder API Servlet 4.0 Big Ticket New Features
  • 54. Server Push public class FacesServlet implements Servlet { public void service(ServletRequest req, ServletResponse resp) throws IOException, ServletException { //.. HttpServletRequest request = (HttpServletRequest) req; try { ResourceHandler handler = context.getApplication().getResourceHandler(); if (handler.isResourceRequest(context)) { handler.handleResourceRequest(context); } else { lifecycle.attachWindow(context); lifecycle.execute(context); lifecycle.render(context); } } } Example of Potential Use from JSF
  • 55. Server Push public class ExternalContextImpl extends ExternalContext { //… public String encodeResourceURL(String url) { if (null == url) { String message = MessageUtils.getExceptionMessageString (MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "url"); throw new NullPointerException(message); } ((HttpServletRequest) request).getPushBuilder().path(url).push(); return ((HttpServletResponse) response).encodeURL(url); } //… } Example of Potential Use from JSF
  • 56. Reactive Programming ResponsiveResponsive Message DrivenMessage Driven ResilientResilientElasticElastic image credit: reactivemanifesto.org
  • 57. Non-blocking IO in Servlet 3.1 • ServletInputStream – #setReadListener, #isReady • ServletOutputStream – #setWriteListener, #isReady • ReadListener – #onDataAvailable, #onAllDataRead, #onError • WriteListener – #onWritePossible, #onError
  • 58. Non-blocking IO in Servlet 3.1 • ServletInputStream – #setReadListener, #isReady • ServletOutputStream – #setWriteListener, #isReady • ReadListener – #onDataAvailable, #onAllDataRead, #onError • WriteListener – #onWritePossible, #onError Flow control
  • 59. • Add Java SE 8 default methods – ServletContextAttributeListener, ServletContextListener, ServletRequestAttributeListener, ServletRequestListener, HttpSessionActivationListener, HttpSessionAttributeListener, HttpSessionBindingListener, HttpSessionListener • Add default to Filter#init, #destroy • Add GenericFilter and HttpFilter • <default-context-path> element in web.xml • Add Cookie[] getCookie(String name) to HttpServletRequest Servlet 4.0 Small Change
  • 60. Servlet 4.0 Small Change • Mapping javax.servlet.http.HttpServletRequest. getMapping() • javax.servlet.http.Mapping – MappingMatch getMatchType() – String getMatchValue() – String getPattern() • javax.servlet.http.MappingMatch enum – CONTEXT_ROOT, DEFAULT, EXACT, EXTENSION, IMPLICIT, PATH, UNKNOWN Discover current Active Mapping
  • 61. @Deprecate some methods and classes – ServletContext: getServlet(), getServlets(), getServletNames(), log() – ServletRequestWrapper: getRealPath() – SingleThreadModel – UnavailableException – HttpServletResponse: encodeUrl(), encodeRedirectUrl(), setStatus() – HttpServletResponseWrapper: encodeUrl(), encodeRedirectUrl(), setStatus() – HttpSession: getSessionContext(), getValue(), getValueNames(), putValue(), removeValue() – HttpSessionContext Servlet 4.0 Small Change
  • 62. • HttpConstraint • HttpMethodConstraint • MultipartConfig • ServletSecurity • WebFilter • WebInitParam • WebListener • WebServlet • … • PostConstruct • PreDestroy • Resource • Resources • DeclareRoles • RunAs • DataSourceDefinition • DataSourceDefinitions • … • • AroundConstruct • AroundInvoke • AroundTimeout • ExcludeClassInterceptors • ExcludeDefaultInterceptors • Interceptors • … Servlet 4.0 Small Change Clarify exactly which annotations are not scanned when metadata-complete="true"
  • 63. • Be willing to adapt and change your focus • The cloud has disrupted everything • Azure is a great cloud for Java workloads Summary