The Webtide Jetty development team is pleased to announce that we have released Jetty 9.2.0, which is available for download from eclipse or maven central.
Along with numerous fixes and improvements, this release has some exciting new features.
Java 8 Support
Jetty
9.2.0 has been updated to run well with Java 8, including updating
dependencies such as ASM. While Jetty does not yet take advantage of
any Java 8 language features, the server does run on the JVM 8, so that
improvements in the JIT and garbage collector are available to Jetty
users.
Quick Start
We have already announced the quickstart mechanism
that resulted from our collaboration with Google AppEngine. The quick
start mechanism allows the start up time of web applications to be
reduced to a few hundred milliseconds. For cloud system like AppEngine,
this reduced start time can save vital resources as it allows web
applications to be started on demand within the acceptable response time
of a single request.
Apache JSP/JSTL
The 9.2 release has
switched to using the Apache version of Jasper for JSP and JSTL. Early
releases of Jetty used these implementations, but switched to Glassfish
when it became the reference implementation. However the Apache
version is now more rigorously maintained and hence we have switched
back. Currently we are using a slightly modified version of 8.0.3,
however our modifications have been contributed back to apache and have
been accepted for their 8.0.9 release, so we will soon switch to using a
standard jar from Apache.
Async I/O Proxying
The
ProxyServlet class implements a flexible reverse proxy by leveraging
Jetty 9's asynchronous HttpClient. Before Jetty 9.2.0 the ProxyServlet
implementation was reading data from the downstream client and writing
data to the downstream client using the blocking APIs of, respectively,
the request ServletInputStream and the response ServletOutputStream.
From
Jetty 9.2.0 a new implementation has been introduced,
AsyncProxyServlet, that leverages the asynchronous I/O features of
Servlet 3.1 to read from and write to the downstream client, therefore
making possible to be 100% fully asynchronous. This means better
scalability and less resources used by the server to proxy the
requests/responses.
Users that are bound to use Servlet 3.0 can
continue to use ProxyServlet; you can leverage AsyncProxyServlet's
scalability by updating your web application to use Servlet 3.1, and by
deploying it in Jetty 9.2.0 or greater.
Async FastCGI
The
primary beneficiary of AsyncProyServlet is Jetty's FastCGI support,
which we are using in this same web site and that we have discussed here and here.
By
using AsyncProyServlet, the FastCGI proxying has become even more
efficient and allows Jetty to run with a minimum of memory (just 20 MiB
of occupied heap) and minimum of threads.
With Jetty 9.2.0 you can deploy your PHP applications leveraging Jetty's scalability and SPDY support (along with Jetty's SPDY Push) to make your web sites quick and responsive.
ALPN Support
Jetty 9.2.0 provides an implementation of ALPN, the Application Layer Protocol Negotiation specification.
ALPN
is the successor to NPN (the Next Protocol Negotiation) and is
implemented for both JDK 7 and JDK 8. ALPN will be used by SPDY and HTTP
2.0 to negotiate the application protocol of a TLS connection.
Users using NPN and JDK 7 may continue to do so, or update to ALPN. Users of JDK 8 will only be able to use ALPN.
Multiple Jetty base directories
The Jetty 9.0 series introduced the $jetty.base and $jetty.home
mechanism, which allows local configuration modifications to all be put
into a base directory which is kept separate from the home directory,
which can be kept as an unmodified jetty distribution. This allows
simple upgrades between jetty versions without the need to refactor your
configuration. Jetty 9.2 has now extended this mechanism to allow
multiple directories. You can now have layers of configuration, your
your enterprise, your cluster, your node and your webapp, or however you
wish to layer your configuration.
--