Tomcat + Java EE = TomEE
TomEE: Be small, be certified, be Tomcat!
Initially making its debut at our JAX London event, TomEE has now officially passed the java EE 6 Web Profile TCK, with the certification being announced at JavaOne. We caught up with project lead David Blevins who talks about the status quo and the future challenges of TomEE.
JAXenter: Hi David, you are the project lead of the new Apache Server Project TomEE. What is TomEE?
David Blevins: In short, TomEE is the Java EE 6 Web Profile certified version of Tomcat. TomEE is what you get if you take a plain Tomcat zip file, add missing jars such as OpenWebBeans, OpenEJB, OpenJPA and MyFaces and integrate them all together in a way that doesn't strip Tomcat of its identity or functionality. We have three focuses with TomEE; be small, be certified, be Tomcat.
JAXenter: TomEE has been officially certified for the Java EE 6 Web Profile. What does this exactly mean?
David Blevins: Obtaining certification is very much an act of passing an incredibly large compliance test suite that challenges every single API and integration point between APIs in all of the Java EE Web Profile. It's no small task to be sure and is a major reason why it takes so long for vendors to be certified. The Java EE 6 specification closed in 2009 and many vendors only reached certification this year. The fact that such a small open source project was able to do this at all is quite impressive and the fact that we've done it in such a light fashion is really unique. Our download is only 24MB and we can pass the entire TCK without increasing the memory on the JVM. I don't think that has ever been done.
The secret to our success is an incredibly passionate community and a setup in Amazon EC2 that allows us to run the tests in a cloud. We can turn days into hours and reduce the problem into something our small group of volunteers can handle. TomEE's small and agile profile is very much indicative of the community who built it.
JAXenter: TomEE is said to be an alternative to other Java Application Servers such as GlassFish, JBoss AS or Apache Geronimo. What is the difference between TomEE and these other server systems?
David Blevins: Each of those servers are of course very different from each other. TomEE is born out of OpenEJB where the core values are getting out of people's way, letting them do what they need to do, and being fast, small, embeddable and testable. JBoss AS7 is probably the closest to TomEE and the two will likely remain very close as we push the boundaries of testing.
In terms of download size and memory footprint, TomEE seems to be one of the lightest options out there. Some of the app servers take hundreds of MBs of memory just to boot. I'm very much looking forward to some impartial comparisons from the Java EE community at large. I think the numbers could be quite surprising.
Already TomEE looks like a very strong runner for cloud usage. We run TomEE in the cloud every day on hundreds of EC2 ti.micro instances, I don't see why anyone else couldn't do the same. We've very intentionally kept the memory usage of TomEE small as we consider the rest of the memory beyond the default to be the "user's property". What good does it do to boot an app server on a t1.mirco instance with only 613MB of memory if the server itself takes 512MB of that memory. There's not much left over for an application at that point.
JAXenter: Can you tell us a bit about the project history?
David Blevins: As mentioned, TomEE is born from the OpenEJB project. For years there's been an "OpenEJB/Tomcat integration" as we've called it. When the Java EE 6 Web Profile came about, it seemed like it had our names all over it. It was a definite call to action.
The interesting thing is that if you had asked me a year ago how close we were to the Web Profile I would have said "quite close, we pretty much have it." In this gruelling process of certification it's become clear how truly far from complete we were. It has been humbling and rather enlightening how important working with a certified product really is. You're never as close as you think you are. It's a risky proposition to be playing with a home grown stack when there are good certified alternatives.
JAXenter: Who initiated the project, who is developing it today?
David Blevins: The "who" is one of the most interesting parts of TomEE. I've personally been working on the parent project, OpenEJB, for over ten years. That's not at all the interesting part. If I had what it takes to build something like this alone, it would have been done ten years ago. The real stars of TomEE are the people who work on it. TomEE is filled with individuals who clock out of work at 5pm then come home and hack on TomEE till 12am. As much as they might look to me for inspiration it's quite the opposite, they inspire me. How do you give up with a community like that? You can't. None of us has a full time job working on TomEE, but we aren't letting that stop us.
There's an open door policy on TomEE as well. We welcome anyone to come help out. Throw the resume in the trash and just bring your editor. Trust me, we'll find something for you to do. Be warned, though, not all work on an open source project is glamorous.
JAXenter: Is there commercial support for TomEE?
David Blevins: TomEE has taken everyone by surprise and, currently, there is no one prepared to offer commercial support for it. The project itself has been so incredibly focused on pushing this huge rock over the hill that none of us have had much time to think about other things. Sometimes you just need to go for it and worry about the rest later. I do hope to see companies start offering support for TomEE and I hope to be a part of it when that happens. There are some great people on the project who really deserve to benefit from all this work.
JAXenter: What are the next steps for TomEE?
David Blevins: Several things. We're fully functional and compliant, but released as beta to give users their chance to have an impact before TomEE goes final. So right now it's all about users and what they want. Documentation is a big part of this. Once we get all that feedback incorporated and the polish applied and TomEE out the door as final, there's still quite a lot of work to be done on TomEE Plus.
We had several features in TomEE such as JAX-RS, JMS and JAX-WS which are beyond the Web Profile and not yet fully compliant. For certification purposes, we needed to strip these out and put them in a different download. This became TomEE Plus, so there'll be plenty more certification work on TomEE Plus over the coming months. Anyone out there thinking they wish they would have been able to participate in certifying something like this, you still have a chance - there's still tons of work to do.
Aside from that, the embedded flavor of TomEE is already getting quite a lot of attention and improving rapidly. There are a lot of optimizations planned to take our 2-3 second start-deploy-test-undeploy-stop time down even further. Ideally, we'd get that down to 1 second flat which is where OpenEJB 4.0.0-beta-1 ended up. OpenEJB basically has everything TomEE has except Servlets, JSP and JSF. We're looking to tune TomEE's time down to the point where you never have to be tempted to "just" use OpenEJB and it becomes just as easy and light to use all of TomEE.
It's difficult to see out even further, but there are plenty of fun concepts we'd like to see in TomEE such as Meta-Annotations, further CDI and EJB alignment, "proxy" beans and whatever crazy idea we can come up with. Ideally TomEE could be used as a platform to drive change into Java EE 7 the way OpenEJB did in EJB 3.1.
And of course, grow. The project could easily double in size over the next year. That will really be fun to watch.
JAXenter: Thank you very much!