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*