So I want to rant a bit about J2EE and discuss how J2EE is similar to VisualBasic. J2EE is a framework while VisualBasic is a programming language. However, J2EE affords the Java developer an environment which allows him or her to not think about things like threading, database access, etc. and focus on the application development task at hand. This on the surface may seem like a good thing. It allows those developers who are less skilled or educated to build enterprise and/or business applications quite quickly, or at least that’s the promise. VisualBasic promised a similar thing. You could take people with little or no programming experience and let them point-and-click their way to application-development bliss. Of course you still need to know the syntax of the language, how to debug it, how to think logically, etc., but the learning curve of Visual Basic is a bit easier than that of say C or C++.
I work with an individual who recently made the statement that “everything in Swing is thread safe.” This is not correct. This individual, who has supposedly been working the software field for 10+ years, apparently doesn’t know the first thing about threading in Java, even though he claims to be a Java and J2EE guru.
This disturbed me to say the least. It is apparent that the proliferation of easy-to-use languages and check-your-brain-at-the-door frameworks are doing a disservice not only to individuals who use them, but the companies who employ these ignorant people. Of course, there are many people out there who are clueful and make use of J2EE and such, and these people probably end up learning how poorly suited J2EE is for doing any sort of high performace application and ditch it altogether. See Better, Faster, Lighter Java for a discussion on this. I can count at least three real-world, i.e. commercially driven, software projects I know of which started out as J2EE projects and eventually were killed due to performace issues, or switched gears and became either J2SE projects or had to be implemented in another language.
But I often wonder how many people who claim to be J2EE experts would know the difference between a nibble and a byte? Or how threading impacts performance on boxes with multiple CPUs. Does this mean that only computer science graduates should write software? No. But I think the cursory introduction that many non-CS types get to programming, software engineering, operating system design, hardware design, and algorithm analysis can make for poor practitioners. It is entirely possible to get this educational background without having a computer science degree. There are many well-written books on these topics. In fact I work with individuals who have non-CS degrees and have mastered most, if not all of these skills.
So, I am going to coin the following phrase, quip or whatever:
“J2EE: the VisualBasic of the Java world”