Structure in place for Jetty 9
Jetty 9 is on the horizon
The open source web server Jetty has established itself as one of the best open source offerings for the enterprise over the last few years, mainly for its flexibility and depth. The sheer range of extensions and accessories on offer make Jetty a popular choice for some. Yahoo's Hadoop cluster, Eclipse's IDE and Google's AppEngine all take pride of place on Jetty's website for being 'Jetty Powered'.
Just last week, we saw the latest versions shore up, Jetty 7.6 and 8.1, each bringing something new to the table for the Eclipse-hosted server. But not one to rest upon their laurels, the discussions have already begun over the plans for Jetty 9.
Developer Greg Wilkins initiated the proceedings in a developer mailing list, bringing forth some of his ideas for Jetty 9, including some new features whilst eliminating others. These include:
Google's SPDY protocol is already deployed in Chrome and available on google servers with the intention of being a much more efficient carrier for HTTP server semantics. Wilkins argues that the inclusion of the protocol would provide significantly better scalability and latency for normal web traffic. Jetty already has a prototype SPDY connector which could become the primary connector for Jetty-9.
A shakeup is needed within Jetty.Currently it is distributed as core jetty and jetty-hightide with some additional modules but this duality has proved problematic as many are left confused plus there's limitations to the inclusion of new features to the jetty server. So Wilkins proposes the following:
We have developed a module plugin mechanism that allows jetty features to be added with a command like "java -jar plugin.jar install jetty-jta", which will fetch the module from a maven repository and install it in the current release.
Jetty 9 would therefore be available under a single jetty distro with module extensions coming from Eclipse, Codehaus and other third parties.
Java 7 Only
With Java6 will reach the end of its life in July 2012, Wilkins says it is a good time to start thinking about Jetty 9 milestones by that time, but also only support Java 7 in the interim.
Supporting a single JVM environment will greatly simplify development of the server. New features like SPDY and Servlet 3.1 are likely to require java 7.
Servlet 3.1 unlikely to make Jetty 9
It is unlikely that servlet 3.1 will be available within a time frame suitable for jetty-9. However, just like most servlet 3.0 features were tested within jetty-7 as extensions to servlet 2.5, it should be possible to try out any compelling servlet 3.1 features in jetty-9
Remove the Blocking Connectors
The removal of blocking connectors will get rid of the issues surrounding duplicated code.
Much of the difficulty with the recent refactoring of the IO layer was due to need to keep both blocking and nonblocking connectors working. While there are some traffic profiles that are faster with the blocking connectors, this is only a marginal improvement, which may well be recouped by the simplification of an async only IO layer. Features like continuations and websockets currently only work with the asynchronous connectors.
Remove the modjk/AJP connector
Apache's mod_proxy_http module has long been our preferred connection type due to its speed and reliability so AJP is on the chopping block.
Goodbye JBoss support
As only the ancient JBoss 4 is supported in Jetty, Wilkins says it isn't worthwhile keeping it around.
I would expect that once we started on jetty-9, it would become the git master, with jetty-7 and jetty-8 in their own branches. Servlet container changes would be merged back to 8 and suitable IO changes would be merged back to 7 and 8.
This is merely an opening gambit and further community discussion would be needed before any decision was cemented. Either way, it's an exciting prospect that we should all keep an eye on going into the next 12 months. In the meantime