I’ve been listening to the Ruby on Rails Podcast over the last month or so, starting with the first episode from way back in July 2005 and now I’m up to the March 10, 2006 episode with Bruce Tate. There’s a great section in this podcast where Bruce describes the immense amount of information that programmers have to learn in order to approach J2EE.
This section is at 21:12 in the podcast:
There are a couple of other interesting markets that I found as I was interviewing people for the book. One of the models was that we found that if there’s an entrenched Java shop that has religion, you’re not going to sell them on Rails; don’t try.
But there was a surprising customer set, and that’s the set of customers that’s been very conservative, and they’re just now getting into Java, and to learn Java they find that they have to learn this set of specifications that’s about 2-3 feet high, right? This stack of binders, you know?
“Okay learn this Servlet thing, which means you’ve got to learn this XML thing to deploy it. Oh this XML thing has added this Namespace thing and this Schema thing, and oh you need some kind of middleware, and the middleware is maybe the Spring framework, or Enterprise JavaBeans, so you have to pick which one. And then once you have that picked, then you have to plug the persistence engine into that. And oh, by the way, after you’ve picked one, and hopefully picked right, you have to do the web UI and model view controller layer and then you’re talking about JSPs. And oh what tag library do you want to use with that?” and it is just absolutely overwhelming.
Definitely. I feel lucky that I got started with Java before J2EE, because I kind of understand where JSP and EJB and XML came in and how they grew, and yet there are so many APIs in J2EE that I haven’t ever used, and honestly I don’t think I’ve ever met anybody who used them. It’s a beast. There’s a reason why startups that don’t need asynchronous message queues and “Java Authorization Contract for Containers” and all that stuff are sticking with PHP or Ruby on Rails. There’s just less stuff to learn.