Development on Jetty-9 has been chugging along for quite some time now and it looks like we’ll start releasing milestones in around the end of September. This is exciting because we have a lot of cool improvements and features coming that I’ll leave to others to blog about in specific on over the next couple of months and things come closer to release.
What I wanted to highlight in this blog post are the plans moving forward for jetty version wise pinpointed with a bit of context where appropriate.
- Jetty-9 will require java 1.7
While Oracle has relented a couple of times now about when the EOL is of java 1.6, it looks like it will be over within the next few months and since native support for SPDY (more below) is one of the really big deals about jetty-9 and SPDY requires java 1.7 that is going to be the requirement.
- Jetty-9 will be servlet-api 3.0
We had planned on jetty-9 being servlet-api 3.1 but since that api release doesn’t appear to be coming anytime soon, the current plan is to just make jetty-9 support servlet 3.0 and once servlet-api 3.1 is released we’ll make a minor release update of jetty-9 to support it. Most of the work for supporting servlet-api 3.1 already exists in the current versions of jetty anyway so it shouldn’t be a huge deal.
- Jetty-7 and Jetty-8 will still be supported as ‘mature’ production releases
Jetty-9 has some extremely important changes in the IO layers that make supporting it moving forward far easier then jetty 7 and 8. For much of the life of Java 1.6 and Java 1.7 there have been annoying ‘issues’ in the jvm NIO implementation that we (well greg to be honest) have piled on work around after work around until some of the work arounds would start to act up once the underlying jvm issue were resolved. Most of this has been addressed in jetty-7.6.x and jetty-8.1.x releases assuming the latest jvm’s are being used (basically make sure you avoid anything in the 1.6u20-29 range). Anyway, jetty-9 contains a heavily refactored IO layer which should make it easier to respond to these situations in the future should they arise in a more…well…deterministic fashion.
- Jetty-9 IO is a major overhaul
This deserves it’s own blog entry which it will get eventually I am sure, however it can’t be overstated how much the inner workings of jetty have evolved with jetty-9. Since its inception jetty has always been a very modular or component oriented http server. The key being ‘http’ server, and with Jetty-9 that is changing. Jetty-9 has been rearchitected from the IO layer up to directly support the separation of wire protocol from semantic, so it is now possible to support HTTP over HTTP, HTTP over SPDY, Websocket over SPDY, multiplexing etc with all protocols being first class citizens and no need to mock out
inappropriate interfaces. While these are mostly internal changes, they ripple out to give many benefits to users in the form of better performance, smaller software and simpler and more appropriate configuration. For example instead of having multiples of differennt connector types, each with unique SSL and/or SPDY variants, there is now a single connector into which various connections factories are configured to support SSL, HTTP, SPDY, Websocket etc. This means moving forward jetty will be able to adapt easily and quickly to new protocols as they come onto the scene.
- Jetty-6…for the love of god, please update
Jetty-5 used to hold the title for ‘venerable’ but that title is really shifting to jetty-6 at this point. I am constantly amazed with folks on places like stack overflow starting a project using jetty-6. The linux distributions really need to update, so if you work on those and need help, please ping us. Many other projects that embed jetty really need to update as well, looking at you Google App Engine and GWT! If you are a company and would like help updating your jetty version or are interested in taking advantage of the newer protocols, feel free to contact webtide and we can help you make it easier. If you’re an open source project, reach out to us on the mailing lists and we can assist there as much as time allows. But please…add migrating to 7, 8 or 9 to your TODO list!
- No more split production versions
One of our more confusing situations has been releasing both jetty 7 and jetty 8 as stable production versions. The reasons for our doing this were many and varied but with servlet 3.0 being ‘live’ for a while now we are going to shift back to the singular supported production version moving forward. The Servlet API is backwards compatible anyway so we’ll be hopefully reducing some of the confusion on which version of jetty to use moving forward.
Finally, our goal starting with jetty-9 moving forward will be to release versioned documentation (generated with docbook) to a common url under the eclipse.org domain as well as bundling the html and pdf to fit in the new plugin architecture we are working with. So the days of floundering around for documentation on jetty should be coming to an end soon.
Lots of exciting things coming in Jetty-9 that you’ll hear about in the coming weeks! Feel free to follow @jmcconnell on twitter for release updates!