Non Java Programmers, are often the best Java EE developers (Sad But True) :-)

It's classic: after introducing the concepts of transactions, isolation levels, XA-protocols, pessimistic/optimistic locking, eager/lazy loading and messaging, I hear often the following comment from Java / OO-programmers: Java EE is too complex, why not RoR or Servlet-Only?
The funny story here: transactions, XA (1980-90), messaging (started before RPC) etc. have nothing to do with Java EE, are even older than Java SE and come from the "big iron" legacy world. Once I had a non-Java-programmer (CICS/IMS developer) from a bank who was rather bored by my explanation. His comment was: "What you are explaining here is really nothing new. We used exaclty the same concepts in the 70's". Java developers were totally amazed by his comment (every single topic was new for them). After explanation of EJBs and connectors he said: o.k. I have to learn the syntax and the strange interfaces (it was the J2EE 1.3 time),  but it seems to be easy comparing it to CORBA or other communication protocols and distributed components.

It is also my opinion: we have the same constraints for all distributed technologies. So you have to learn the complex (which are complex) principles. After learning it, you have to learn the syntax and philosophy of .NET, Java EE or CORBA. But comparing it to the principles, the technologies are relatively simple to learn. New hypes cause constant movement to new technologies. But: it is not possible to solve the "old days problems" without understanding the principles.
Conclusion (sad but true):

  1. New technologies cannot be really simple, or solve the problem. You have still to decide about your concurrency (or isolation of transactions), locking, caching etc. Ignoring the problem only works in really simple applications, which are irrelevant.
  2. Old school programmers (often non Java-programmers), have a significant advantage over "AJAX" programmers....


Sheesh, what a gross over-simplification. Just as the tip of the iceberg, consider the radical difference between the assumptions regarding the role of the network in Corba, vs., say, RMI.

The concepts were NOT the same in the 70s.

Posted by John on October 19, 2006 at 04:49 AM CEST #

why is this surprise, Java's nothing new except old ideas rehashed into the 90s' computing landscape.

Google might have put AJAX on the map but today's AJAX programmers are no better than VB programmers of the 90s.

Posted by on October 19, 2006 at 12:50 PM CEST #

Surely any Java programmer with a Computer Science degree should be very familiar with all of the wider concepts mentioned here? If you get programmers with history degrees who learnt Java in a 2 week course because they joined a big consultancy that demanded they did some technical work, then sure, you'll get clueless people. Equally some of your computer science graduates will be heavy on the theory compared to someone who has been programming distributed systems since the 70s, but it seems unfair to assume they'll all be clueless.

Posted by Raddedas on October 19, 2006 at 01:17 PM CEST #


yes there are differences between CORBA and RMI. But from the technical point of view, RMI is a simple Java counterpart. Both technologies are built with stubs and skeletons and are a Remote Procedure Call fashion of remote communication.
From my point of view RPC (the old Sun technology), DCOM, CORBA, RMI and JAX-RPC are very similar. If you know the concepts, you will also know the limitations. And the knowledge about limitations is more important in real world, than the knowledge of the Java Syntax.

Posted by Adam Bien on October 20, 2006 at 10:33 AM CEST # :-),

exactly. But: AJAX and VB are both o.k for certain use cases. In my opinion it is harder for an AJAX developer to understand EJB 2/3, Connectors, JMS, XA, JTA, than for an old school RPG, PL/1, CICS developers. The experience matters....

Btw. I'm not a host developer, only a Java/EE developer/architect :-)

Posted by Adam Bien on October 20, 2006 at 10:36 AM CEST #


sorry. In my opinion Computer Science degree really does not matter. Only motivation and interests are important in practice. At least in germany, they are students (often university) out there without any knowledge of isolation levels etc.
It is only my observation. I'm also only a Java developer, without "legacy" background (only little C++/C), so I cannot be unfair :-)

I reviewed some "strategic" systems in production, without any proper settings or configuration of Isolation Level, sometimes even transactions. And the (Java) developers simple didn't care. Reason: J2EE was too complex :-)

Posted by Adam Bien on October 20, 2006 at 10:40 AM CEST #

Hmmm, to me there is a case of both fundamentals not being taught/emphasized enough and the issue that EJB3 adds more complexity than it needs to.

I have written a piece on the EJB3 Architecture which I my mind complicates ORM more than is required.

In addition I think there needs to generally better documentation to introduce and discuss the issues of Transaction Isolation, Lazy loading and Optimistic Concurrency Checking.

Actually I have written some of that documentation and if you want to give some feedback I'd be grateful. You can find them at...

Cheers, Rob.

Posted by Robin Bygrave on November 13, 2006 at 10:51 AM CET #

I linked my blog with this post.. it says "You Must Read this"

i tottaly agree with you..

Posted by felipe on November 29, 2006 at 02:25 AM CET #

Post a Comment:
  • HTML Syntax: NOT allowed
...the last 150 posts
...the last 10 comments