I've been trying to say this in varying ways for a while now. I'm a Java programmer, but I'm not a Computer Scientist. What that means is that I usually use Java the same way someone else uses Perl or Python. I love discovering great libraries that save me time and let me just wire up a solution, rather than trying to do it all myself. But I love the fact that unlike the original VB which needed OCXes written in C, if I need to drop down to the lowest level possible in my Java app, I can do that as well. And the solution runs everywhere with minimal effort. That's what's so great about Java.
The problem is that much of the Java stuff out there is just written by really smart morons who seem to love complexity for complexity's sake. Even in the API itself! Ever used the Calendar API? It's written by a monkey. Ever check out the code under the JSTL? Those guys have to be on crack. It's not the language itself that causes these problems, it's the culture around the language. When programmers respect patterns more than solutions, you know something is broken.
LinuxWorld's James Turner feels the same exact way:
I moderated a panel at COMDEX last fall where Rasmus Lerdorf (Mr. PHP) and a Perl proponent ganged up on the person representing Java, complaining about how slow it was and hard to develop in. I tried my best to help defend Java, but it was hard. The trouble is, I see their point.
Java is a great language. But for some reason, the Java community has decided to take it and make all the ancillary packages as complex and difficult to use as possible. It's like a racehorse that's had a wet bar and a hot tub mounted on it. The Perl folks have the right idea. Make supporting technologies that are simple to use, rather than so elegant that they become incomprehensible.
He goes on to make the inevitable comparisions to Perl and PHP. I've been making the same comparisions lately. In fact, I loaded up my first PHP application the other day (dotProject) on a test server and dived into the code, you know what? There's no secret! The code was ugly and embedded and duplicated and horrible. But it was done, and being maintained and being documented and basic enough so that everyone could understand it. Functional code wins over "correct" code every day. Look at Bill Day - Sun's J2ME Evangelist, he just re-did his website into a weblog and which code is he using? WordPress, a PHP solution. Much of that probably had to do with his hosting server, but maybe if Java people made their tools as easy to integrate and use as PHP, more hosting services would support Java out of the box. (Is there a mod_java?)
Is there a name for this type of development? Solution-Oriented Programming? Functional Development? Useful Coding? I mean, just imagine how cool Java programming would become if this sort of thing got as popular as that Pattern fad that came through not too long ago? It'd be so fun!