TomEE: Be small, be certified, be Tomcat!

TomEE project lead David Blevins talks about the status quo and the future challenges of TomEE.

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.

Hartmut Schlosser is an editor for JAXenter and a specialist in Java Enterprise-Technologies, Eclipse & ALM, Android and Business Technology. Before working at S&S Media he studied Computer Science, Music, Anthropology and French Philology.

David Blevins is project lead for TomEE, co-founder of the Apache OpenEJB project, a founder of Apache Geronimo, and contributor to many other Open Source Java EE related projects for over 10 years. David was an active member of the EJB 3.0 (JSR 220), EJB 3.1 (JSR 318) and Java EE 6 (JSR 316) Expert Groups, and contributing author to Component-Based Software Engineering: Putting the Pieces Together from Addison Wesley. He can be found speaking on these topics at JavaOne, JAXconf ApacheCon, and O’Reilly Open Source Convention.