http://www.slideshare.net/ewolff/java-application-servers-are-dead
http://blog.paralleluniverse.co/2014/05/08/modern-java-pt2/

I like to get on Hacker News and read what what's new. Java is usually
flogged by the dynamic language mob, so I was surprised to see some
positive articles about Java.

I don't mean to start friendly fire, I love reading about all sorts of Java
development. But after reading the two articles, the piece that stuck with
me the most is "Java Application servers are Dead." Being a TomEE addict, I
couldn't disagree any more :) I got the feeling the first link probably
hasn't heard of or used TomEE.

Anyway, it got me thinking though, why *do* I use TomEE instead of
something like Jetty? Here's my justifications. I'd be interested to see
why others use TomEE as well!

* XA Transactions: Yes, they're important. Specifically, JMS/JPA
interactions.  If I want to want to send a message only if rows are
successfully committed to the database, automagic XA transactions in JEE
are a godsend.
* Packaging: Spend any time configuring a complex Pip or Gemfile and you'll
appreciate how awesome WAR packaging really is.
* CDI: Do people really not use dependency injection complex applications
and expect them to maintainable?
* SOA is dead: No, you should not use REST services internally _for
everything_ unless determined you need to implement the
http://martinfowler.com/bliki/CircuitBreaker.html pattern to allow for
failover reliability. Always use modules and DI first, then SOA.
"Everything is a service" is a terrible way to build software systems.
Having DI supported right in the Runtime via CDI/EJB3 is an awesome
strength.


I think the following are valid points:
* I do end up running once instance of TomEE per application. This isn't
always a bad thing, having one JVM per app allows better tuning.
Fortunately, TomEE has very little ram overhead (maybe 24MB on a bad day),
so this isn't a big issue. Combine this with LXC containers and you have
great isolation.
* Cruft. Java EE and the SDK need a cleanout to get rid of CORBA, EJB v1-2,
old JSF crap, old JMS apis, etc. Yes it breaks your applications built in
2005. Sorry about it. Oracle will take your money if you want to run old
software.
* Over-engineered APIs: I had a beer with David Blevins a year or two back,
and we joked how the Resource Adapter API was probably the most important
API in JEE, yet it is the most confusing. Brings a tear to my eye.

Anyway, love to hear everyone else's thoughts

Cheers

*Jonathan Fisher*
*VP - Information Technology*
*Spring Venture Group*

Reply via email to