Wednesday, February 27, 2013

May you live in interesting times!

Jetty 9 is around the corner. Well, that's not a news, but a well known fact. Another fact is that Fedora distribution has 'First' in its principles, so it is no wonder that Jetty is already packaged, although still not in a main branch.

As you probably know (maybe from reading this blog), Fedora allows for only one instance of library being installed in the system, and all consumers must use symlinks if they want to consume them. This is also the case of Eclipse. So, if you look at the eclipse installation in the /usr/lib64, you will find:

ls -l eclipse/plugins | grep jetty
-rw-r--r--. 1 root root   21518 Feb 22 16:33 org.eclipse.equinox.http.jetty_3.0.100.v20130222-1445.jar
lrwxrwxrwx. 1 root root      44 Feb 22 16:38 org.eclipse.jetty.continuation_8.1.0.v20120127.jar -> /usr/share/java/jetty/jetty-continuation.jar
lrwxrwxrwx. 1 root root      36 Feb 22 16:38 org.eclipse.jetty.http_8.1.0.v20120127.jar -> /usr/share/java/jetty/jetty-http.jar
lrwxrwxrwx. 1 root root      34 Feb 22 16:38 org.eclipse.jetty.io_8.1.0.v20120127.jar -> /usr/share/java/jetty/jetty-io.jar
lrwxrwxrwx. 1 root root      40 Feb 22 16:38 org.eclipse.jetty.security_8.1.0.v20120127.jar -> /usr/share/java/jetty/jetty-security.jar
lrwxrwxrwx. 1 root root      38 Feb 22 16:38 org.eclipse.jetty.server_8.1.0.v20120127.jar -> /usr/share/java/jetty/jetty-server.jar
lrwxrwxrwx. 1 root root      39 Feb 22 16:38 org.eclipse.jetty.servlet_8.1.0.v20120127.jar -> /usr/share/java/jetty/jetty-servlet.jar
lrwxrwxrwx. 1 root root      36 Feb 22 16:38 org.eclipse.jetty.util_8.1.0.v20120127.jar -> /usr/share/java/jetty/jetty-util.jar

This approach works rather well for many applications, but not necessarily for Eclipse. A simple replacement of Jetty bundles would break Help (I can live without it) and P2 (I can't live without it), so I had to do some little hacking to rebuild the Eclipse with Jetty 9. It works - and probably in Fedora 19 this will be the default setup.
Eclipse Help running in Eclipse with Jetty 9
In a normal situation I'd not even mention such a change - because it's kind of my role to prod everyone to migrate to latest software :-). But this case is very special:
Jetty 9 requires java 1.7.

Eclipse community (especially Platform/RT) is rather conservative in adopting new Java versions. Such an approach has a lot of sense, although... maybe some dates first:
  • 2001: Eclipse Founded by IBM
  • 2002: Java 1.4 released. According to my friend, up to this point it was a perfect language, then they broke it.
  • 2004:  Eclipse Foundation started
  • 2004: Java 1.5 released.
  • 2006: Java 6 released.
  • 2011: Java 7 released.
  • 2013: Java 8 to be released.
Have you noticed the gap between Java 6 and 7? I'd actually dare to say that java 6 was so similar to java 5 that you'd have to count the gap from 2004 to 2011, where Eclipse could just stay one java version behind the main stream.
But things has changed. Java is under heavy development again. Java is being open-sourced. This opens a lot of questions:
  • how long will we have to stay with Java 1.4?
  • is there any plan of migrations when Java will get frequent releases?
  • what to do with features that really require latest Java  (f.e. Jetty)?
It's the question that I have been asked during my interview at Red Hat: what do you prefer and why? Frequent adoptions or staying with "stable" versions and then migrating from one "stable" to the next "stable"?

Interesting times indeed.


  1. Isn't WTP stuck at 1.4 for life due to decisions by IBM?

    1. I've never heard of that (but that does not mean anything).

      While such a decision could happen in the past, Eclipse seems to be less and less dependent on IBM. This causes some disturbances, but on the other hand the Foundation was undergoing so many changes (CVS->GIT, Gerrit, lowering entry barries) never in the past, so I wait for new contributors to appear :-).

      No decision is made forever :-)

  2. love it :)

    really hoping that we can have jetty-9 as the default in fedora-19

    1. I'd not worry about fedora-19. Given the testing that is currently done it's more than likely it will be there :-).

      But I'm concerned about Eclipse. It would be a pity if it could not work with jetty 9.

    2. Actually it did not take much time:

      Jetty 9 is in Fedora.