Web Dominated by J2EE?
I have mixed feelings about this article from IBM developerworks. The author describes how to build a simple guest-book application in Ruby using the Cerise application server. I love seeing dynamic languages get exposure on the bigger developer sites but the article presents dynamic languages as both “useful and powerful” and at the same time “strange and unprofessional”. I see this kind of shit all the time and it drives me crazy:
With a World Wide Web dominated by Java 2 Platform, Enterprise Edition (J2EE) application servers, choosing another Web framework can seem strange or unprofessional.
Gah! What World Wide Web is the author referring to? If anything, the web is
dominated by simple CGI applications running atop Apache and is progressing
toward slightly more advanced (but still extremely “light”) frameworks based
on PHP and Perl. J2EE doesn’t even blip the radar! If you look at
any of the
really successful
tools on the web, you’ll find a great deal of
unprofessional
web frameworks.
J2EE may have a substantial hold on internal Enterprise
Applications
(where people with actual technical knowledge have
little decision making ability) but it’s been an utter failure on the larger
web. In fact, the only J2EE based app on the web that I can think of off the
top of my head is mail.com and it’s a steaming pile
of dog-shit that’s more of an ad. delivery agent than an email client. And,
like most, they probably use JSP/Servlets and leave EJB, JNDI, and the other
over-baked J2EE technologies alone.
I feel bad ragging on the article because it goes on to give a really outstanding overview of building applications in a dynamic language environment. It’s as if the editor inserted the first paragraph right before publishing to make sure that none of this was taken seriously. Or possibly so developerworks wouldn’t be ridiculed by the Gartner/J2EE crowd.
Here’s how I read it:
… Hey kids! There’s this new and useful, powerful, simple, easy-to-maintain system for building web applications! Of course, we don’t suggest you actually try to use it for anything real because it doesn’t have many of the traits we’ve come to expect from professional enterprise class seamlessly scalable flexible solution architectures. For instance, it is completely lacking in the following areas:
- Code complexity - this code looks way to simple for a professional. Professionals demand tedious programming languages because it’s a well known fact that combining tediousness with complexity yields power!
- Ten layers of framework. If I don’t need to map ten frameworks together using XML descriptors than it obviously isn’t anything powerful enough to bother with.
- There’s no curly braces! Braces are the key to all that is holy in language design.
But if you just want to, you know, write something useful and be able to maintain it than this Ruby thing might be for you! Of course, this is rarely a requirement of the true professional.
This mind-set of simple != professional
is actively harmful to our
craft. A real professional will seek out ways to simplify and
reduce her current toolset and she won’t apologize when a new set of
technologies promise to help her deliver value quicker, easier, and with a
higher level of quality. Part of being “professional” is being responsible
and choosing the best solution for a technical problem.
Dynamic languages like Ruby and Python greatly reduce the amount of complexity associated with building real systems that do real shit without sacrificing maintainability and potential for scale. Developerworks and publications like it that keep their readers scared, uncertain, and doubtful of these technologies are doing the developer community, their clients, and employers a great disservice by slowing the acceptance of such cost-reducing, time-saving technologies.
Disclaimer
That was a pretty nasty and maybe not completely fair rant filled with opportunity for misinterpretation so let me preempt a few emails before I go:
-
I don’t hate Java. I work in Java for at least 40 hours a week and generally enjoy it. I dislike the growing trend in the Java community to make systems overly complex. In most cases (let’s say 70%), I fall in with Hani.
-
The developerworks article has good intentions and was well written. But please stop apologizing for making sound technical decisions! Your readers will appreciate honest technical commentary. Gartner doesn’t read developerworks so the grandstanding in the first paragraph gets you nowhere.
-
I’m sure there’s plenty of J2EE sites on the public web but they aren’t
dominating
in any sense of the word. -
I really do think 90% of J2EE is complete shit so please flame away on that one.