SlideShare a Scribd company logo
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
HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE ecosystem
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
Ad

More Related Content

What's hot (20)

HTML5, HTTP2, and You 1.1
HTML5, HTTP2, and You 1.1HTML5, HTTP2, and You 1.1
HTML5, HTTP2, and You 1.1
Daniel 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 cloud
John 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 Paris
Quentin Adam
 
Introduction to HTTP/2
Introduction to HTTP/2Introduction to HTTP/2
Introduction to HTTP/2
Ido 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 stream
Enno Runne
 
An Introduction to Apache Kafka
An Introduction to Apache KafkaAn Introduction to Apache Kafka
An Introduction to Apache Kafka
Amir Sedighi
 
Kafka Security
Kafka SecurityKafka Security
Kafka Security
Sriharsha Chintalapani
 
Apache Kafka Security
Apache Kafka Security Apache Kafka Security
Apache Kafka Security
DataWorks Summit/Hadoop Summit
 
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
StreamNative
 
Tomcat New Evolution
Tomcat New EvolutionTomcat New Evolution
Tomcat New Evolution
Allan Huang
 
Servletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,postServletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,post
vamsi krishna
 
Advanced WCF Workshop
Advanced WCF WorkshopAdvanced WCF Workshop
Advanced WCF Workshop
Ido Flatow
 
What's New in WildFly 9?
What's New in WildFly 9?What's New in WildFly 9?
What's New in WildFly 9?
Virtual JBoss User Group
 
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 Field
confluent
 
Apache Kafka Demo
Apache Kafka DemoApache Kafka Demo
Apache Kafka Demo
Edward Capriolo
 
WebSocket MicroService vs. REST Microservice
WebSocket MicroService vs. REST MicroserviceWebSocket MicroService vs. REST Microservice
WebSocket MicroService vs. REST Microservice
Rick Hightower
 
Connecting Applications Everywhere with ActiveMQ
Connecting Applications Everywhere with ActiveMQConnecting Applications Everywhere with ActiveMQ
Connecting Applications Everywhere with ActiveMQ
Rob Davies
 
Building a FaaS with pulsar
Building a FaaS with pulsarBuilding a FaaS with pulsar
Building a FaaS with pulsar
StreamNative
 
HTML5, HTTP2, and You 1.1
HTML5, HTTP2, and You 1.1HTML5, HTTP2, and You 1.1
HTML5, HTTP2, and You 1.1
Daniel 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 cloud
John 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 Paris
Quentin Adam
 
Introduction to HTTP/2
Introduction to HTTP/2Introduction to HTTP/2
Introduction to HTTP/2
Ido 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 stream
Enno Runne
 
An Introduction to Apache Kafka
An Introduction to Apache KafkaAn Introduction to Apache Kafka
An Introduction to Apache Kafka
Amir 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 2021
StreamNative
 
Tomcat New Evolution
Tomcat New EvolutionTomcat New Evolution
Tomcat New Evolution
Allan Huang
 
Servletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,postServletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,post
vamsi krishna
 
Advanced WCF Workshop
Advanced WCF WorkshopAdvanced WCF Workshop
Advanced WCF Workshop
Ido 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 Field
confluent
 
WebSocket MicroService vs. REST Microservice
WebSocket MicroService vs. REST MicroserviceWebSocket MicroService vs. REST Microservice
WebSocket MicroService vs. REST Microservice
Rick Hightower
 
Connecting Applications Everywhere with ActiveMQ
Connecting Applications Everywhere with ActiveMQConnecting Applications Everywhere with ActiveMQ
Connecting Applications Everywhere with ActiveMQ
Rob Davies
 
Building a FaaS with pulsar
Building a FaaS with pulsarBuilding a FaaS with pulsar
Building a FaaS with pulsar
StreamNative
 

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

[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
Andrew Wang
 
Web-Socket
Web-SocketWeb-Socket
Web-Socket
Pankaj Kumar Sharma
 
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
Edward Burns
 
WebSockets wiith Scala and Play! Framework
WebSockets wiith Scala and Play! FrameworkWebSockets wiith Scala and Play! Framework
WebSockets wiith Scala and Play! Framework
Fabio Tiriticco
 
Servlet programming
Servlet programmingServlet programming
Servlet programming
Mallikarjuna G D
 
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
 
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
 
Servlet 4.0 at GeekOut 2015
Servlet 4.0 at GeekOut 2015Servlet 4.0 at GeekOut 2015
Servlet 4.0 at GeekOut 2015
Edward 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 2015
Edward Burns
 
2015 UJUG, Servlet 4.0 portion
2015 UJUG, Servlet 4.0 portion2015 UJUG, Servlet 4.0 portion
2015 UJUG, Servlet 4.0 portion
mnriem
 
OpenStack Networking and Automation
OpenStack Networking and AutomationOpenStack Networking and Automation
OpenStack Networking and Automation
Adam Johnson
 
Servlet programming
Servlet programmingServlet programming
Servlet programming
Mallikarjuna G D
 
Real time web apps
Real time web appsReal time web apps
Real time web apps
Sepehr Rasouli
 
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 technology
Minal 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.3
Bruno Borges
 
Better performances with HTTP/2
Better performances with HTTP/2Better performances with HTTP/2
Better performances with HTTP/2
Thomas Segismont
 
Open stackaustinmeetupsept21
Open stackaustinmeetupsept21Open stackaustinmeetupsept21
Open stackaustinmeetupsept21
Brent Doncaster
 
Data power v7 update - Ravi Katikala
Data power v7 update - Ravi KatikalaData power v7 update - Ravi Katikala
Data power v7 update - Ravi Katikala
floridawusergroup
 
[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
Andrew 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 You
Edward Burns
 
WebSockets wiith Scala and Play! Framework
WebSockets wiith Scala and Play! FrameworkWebSockets wiith Scala and Play! Framework
WebSockets wiith Scala and Play! Framework
Fabio Tiriticco
 
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
 
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
 
Servlet 4.0 at GeekOut 2015
Servlet 4.0 at GeekOut 2015Servlet 4.0 at GeekOut 2015
Servlet 4.0 at GeekOut 2015
Edward 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 2015
Edward Burns
 
2015 UJUG, Servlet 4.0 portion
2015 UJUG, Servlet 4.0 portion2015 UJUG, Servlet 4.0 portion
2015 UJUG, Servlet 4.0 portion
mnriem
 
OpenStack Networking and Automation
OpenStack Networking and AutomationOpenStack Networking and Automation
OpenStack Networking and Automation
Adam 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 technology
Minal 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.3
Bruno Borges
 
Better performances with HTTP/2
Better performances with HTTP/2Better performances with HTTP/2
Better performances with HTTP/2
Thomas Segismont
 
Open stackaustinmeetupsept21
Open stackaustinmeetupsept21Open stackaustinmeetupsept21
Open stackaustinmeetupsept21
Brent Doncaster
 
Data power v7 update - Ravi Katikala
Data power v7 update - Ravi KatikalaData power v7 update - Ravi Katikala
Data power v7 update - Ravi Katikala
floridawusergroup
 
Ad

More from Edward Burns (20)

Java and AI with LangChain4j: Jakarta EE gets AI
Java and AI with LangChain4j: Jakarta EE gets AIJava and AI with LangChain4j: Jakarta EE gets AI
Java and AI with LangChain4j: Jakarta EE gets AI
Edward Burns
 
Java and AI with LangChain4j: Jakarta EE and AI
Java and AI with LangChain4j: Jakarta EE and AIJava and AI with LangChain4j: Jakarta EE and AI
Java and AI with LangChain4j: Jakarta EE and AI
Edward Burns
 
20250403-trusted-ai-favorite-ide-javaland.pdf
20250403-trusted-ai-favorite-ide-javaland.pdf20250403-trusted-ai-favorite-ide-javaland.pdf
20250403-trusted-ai-favorite-ide-javaland.pdf
Edward Burns
 
A survey of cloud readiness for Jakarta EE 11
A survey of cloud readiness for Jakarta EE 11A survey of cloud readiness for Jakarta EE 11
A survey of cloud readiness for Jakarta EE 11
Edward Burns
 
Java and AI with LangChain4j: Jakarta EE and SmallRye LLM
Java and AI with LangChain4j: Jakarta EE and SmallRye LLMJava and AI with LangChain4j: Jakarta EE and SmallRye LLM
Java and AI with LangChain4j: Jakarta EE and SmallRye LLM
Edward Burns
 
Java and AI with LangChain4j: Integrating Jakarta EE and LLMs
Java and AI with LangChain4j: Integrating Jakarta EE and LLMsJava and AI with LangChain4j: Integrating Jakarta EE and LLMs
Java and AI with LangChain4j: Integrating Jakarta EE and LLMs
Edward Burns
 
How to get trusted AI in your favorite IDE
How to get trusted AI in your favorite IDEHow to get trusted AI in your favorite IDE
How to get trusted AI in your favorite IDE
Edward Burns
 
How to get trusted AI in your favorite IDE
How to get trusted AI in your favorite IDEHow to get trusted AI in your favorite IDE
How to get trusted AI in your favorite IDE
Edward Burns
 
How to get trusted AI in your favorite IDE
How to get trusted AI in your favorite IDEHow to get trusted AI in your favorite IDE
How to get trusted AI in your favorite IDE
Edward Burns
 
How to get trusted AI in your favorite IDE
How to get trusted AI in your favorite IDEHow to get trusted AI in your favorite IDE
How to get trusted AI in your favorite IDE
Edward Burns
 
2024-09-10 Jacksonville JUG Java on Azure with AI
2024-09-10 Jacksonville JUG Java on Azure with AI2024-09-10 Jacksonville JUG Java on Azure with AI
2024-09-10 Jacksonville JUG Java on Azure with AI
Edward Burns
 
Deliver AI infused app innovation with Open Liberty on AKS
Deliver AI infused app innovation with Open Liberty on AKSDeliver AI infused app innovation with Open Liberty on AKS
Deliver AI infused app innovation with Open Liberty on AKS
Edward Burns
 
DevTalks Romania: Prepare for Jakarta EE 11
DevTalks Romania: Prepare for Jakarta EE 11DevTalks Romania: Prepare for Jakarta EE 11
DevTalks Romania: Prepare for Jakarta EE 11
Edward Burns
 
Developer Career Masterplan
Developer Career MasterplanDeveloper Career Masterplan
Developer Career Masterplan
Edward 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 advantage
Edward Burns
 
Wie Azure Jakarta EE Nutzt
Wie Azure Jakarta EE NutztWie Azure Jakarta EE Nutzt
Wie Azure Jakarta EE Nutzt
Edward 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 Azure
Edward Burns
 
wls-azure-devnexus-2022.pdf
wls-azure-devnexus-2022.pdfwls-azure-devnexus-2022.pdf
wls-azure-devnexus-2022.pdf
Edward Burns
 
Java and AI with LangChain4j: Jakarta EE gets AI
Java and AI with LangChain4j: Jakarta EE gets AIJava and AI with LangChain4j: Jakarta EE gets AI
Java and AI with LangChain4j: Jakarta EE gets AI
Edward Burns
 
Java and AI with LangChain4j: Jakarta EE and AI
Java and AI with LangChain4j: Jakarta EE and AIJava and AI with LangChain4j: Jakarta EE and AI
Java and AI with LangChain4j: Jakarta EE and AI
Edward Burns
 
20250403-trusted-ai-favorite-ide-javaland.pdf
20250403-trusted-ai-favorite-ide-javaland.pdf20250403-trusted-ai-favorite-ide-javaland.pdf
20250403-trusted-ai-favorite-ide-javaland.pdf
Edward Burns
 
A survey of cloud readiness for Jakarta EE 11
A survey of cloud readiness for Jakarta EE 11A survey of cloud readiness for Jakarta EE 11
A survey of cloud readiness for Jakarta EE 11
Edward Burns
 
Java and AI with LangChain4j: Jakarta EE and SmallRye LLM
Java and AI with LangChain4j: Jakarta EE and SmallRye LLMJava and AI with LangChain4j: Jakarta EE and SmallRye LLM
Java and AI with LangChain4j: Jakarta EE and SmallRye LLM
Edward Burns
 
Java and AI with LangChain4j: Integrating Jakarta EE and LLMs
Java and AI with LangChain4j: Integrating Jakarta EE and LLMsJava and AI with LangChain4j: Integrating Jakarta EE and LLMs
Java and AI with LangChain4j: Integrating Jakarta EE and LLMs
Edward Burns
 
How to get trusted AI in your favorite IDE
How to get trusted AI in your favorite IDEHow to get trusted AI in your favorite IDE
How to get trusted AI in your favorite IDE
Edward Burns
 
How to get trusted AI in your favorite IDE
How to get trusted AI in your favorite IDEHow to get trusted AI in your favorite IDE
How to get trusted AI in your favorite IDE
Edward Burns
 
How to get trusted AI in your favorite IDE
How to get trusted AI in your favorite IDEHow to get trusted AI in your favorite IDE
How to get trusted AI in your favorite IDE
Edward Burns
 
How to get trusted AI in your favorite IDE
How to get trusted AI in your favorite IDEHow to get trusted AI in your favorite IDE
How to get trusted AI in your favorite IDE
Edward Burns
 
2024-09-10 Jacksonville JUG Java on Azure with AI
2024-09-10 Jacksonville JUG Java on Azure with AI2024-09-10 Jacksonville JUG Java on Azure with AI
2024-09-10 Jacksonville JUG Java on Azure with AI
Edward Burns
 
Deliver AI infused app innovation with Open Liberty on AKS
Deliver AI infused app innovation with Open Liberty on AKSDeliver AI infused app innovation with Open Liberty on AKS
Deliver AI infused app innovation with Open Liberty on AKS
Edward Burns
 
DevTalks Romania: Prepare for Jakarta EE 11
DevTalks Romania: Prepare for Jakarta EE 11DevTalks Romania: Prepare for Jakarta EE 11
DevTalks Romania: Prepare for Jakarta EE 11
Edward Burns
 
Developer Career Masterplan
Developer Career MasterplanDeveloper Career Masterplan
Developer Career Masterplan
Edward 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 advantage
Edward Burns
 
Wie Azure Jakarta EE Nutzt
Wie Azure Jakarta EE NutztWie Azure Jakarta EE Nutzt
Wie Azure Jakarta EE Nutzt
Edward 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 Azure
Edward Burns
 
wls-azure-devnexus-2022.pdf
wls-azure-devnexus-2022.pdfwls-azure-devnexus-2022.pdf
wls-azure-devnexus-2022.pdf
Edward Burns
 
Ad

Recently uploaded (20)

AI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global TrendsAI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global Trends
InData Labs
 
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
BookNet Canada
 
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded DevelopersLinux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Toradex
 
Electronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploitElectronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploit
niftliyevhuseyn
 
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Aqusag Technologies
 
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In FranceManifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
chb3
 
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Impelsys Inc.
 
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdfThe Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
Abi john
 
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
SOFTTECHHUB
 
Cyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of securityCyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of security
riccardosl1
 
Big Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur MorganBig Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur Morgan
Arthur Morgan
 
How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?
Daniel Lehner
 
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul
 
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptxDevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
Justin Reock
 
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
organizerofv
 
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdfSAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
Precisely
 
How analogue intelligence complements AI
How analogue intelligence complements AIHow analogue intelligence complements AI
How analogue intelligence complements AI
Paul Rowe
 
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdfComplete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Software Company
 
tecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdftecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdf
fjgm517
 
TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
 
AI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global TrendsAI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global Trends
InData Labs
 
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
BookNet Canada
 
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded DevelopersLinux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Toradex
 
Electronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploitElectronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploit
niftliyevhuseyn
 
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Aqusag Technologies
 
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In FranceManifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
chb3
 
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Impelsys Inc.
 
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdfThe Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
Abi john
 
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
SOFTTECHHUB
 
Cyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of securityCyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of security
riccardosl1
 
Big Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur MorganBig Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur Morgan
Arthur Morgan
 
How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?
Daniel Lehner
 
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul
 
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptxDevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
Justin Reock
 
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
organizerofv
 
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdfSAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
Precisely
 
How analogue intelligence complements AI
How analogue intelligence complements AIHow analogue intelligence complements AI
How analogue intelligence complements AI
Paul Rowe
 
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdfComplete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Software Company
 
tecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdftecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdf
fjgm517
 
TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
 

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
  • 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