Java 5 Sucks according to Clinton Begin
I stumbled upon Clinton Begin's blog this evening and found his only post about how much he hates Java 5:
Anyone who knows me has already knows that I'm no fan of Java 5. Honestly, since Java 5 was released, Java has dropped from 1st to 4th on my list of languages that I consider when starting a new application. It was such a disappointment to me, both because of the poor implementation of the new features, as well as the omission of some fairly basic features.
...
I'm looking to Ruby, Groovy and C# 3.0 before I look to Java. Not so much because those languages are better than Java 5, but more because Java 1.4 was better than Java 5. Java is going downhill at the hands of Sun and the JCP. Sad, sad, sad...
Clinton has some very good points in his rant. Unfortunately, I don't think anything is being done to fix them.
For those that don't know, Clinton is the inventor of iBATIS and one of the heros of the Java Community that took on .NET when they said had a version of the J2EE Petstore that was one-third the lines of code (LOCs) and 28 times faster. Most of the JPetStore links don't work anymore, but you can read the announcement on TSS.
Clinton is also one of those no-bullshit type of people I really enjoy hanging out with. I've had several beers with him at many conferences and have always enjoyed his perspective. However, there's something that smells about this rant of his. If he hates Java 5 so much, and loves Java 1.4, why doesn't iBATIS implement a 1.4 feature? An enhancement request to support for JDBC 3 Generated Keys in iBATIS has been open for almost 3 years! C'mon Clinton - it would've taken you less time to implement this than to write your rant.
Posted by Kris on February 21, 2008 at 06:56 AM MST #
Frankly, as an application developer I don't care about new features. They just don't make me anymore productive, better generics, delegates, closures. They - just - don't. As a framework developer, I want more new features. Closures - or the spread of CICE as an idea to frameworks - would make most frameworks much nicer and the API much more powerful. I don't know about one thing in C# which would make me significantly more productive - say more than 5% of my development life cyle time. What did me make more producitve in Java (since mid 90s) compared to C are: Objects, GC and a consistent, big library. From 2000 on open source frameworks kicked in and made me >50% more productive (because I can assemble applications instead of building them). And I can't think of one feature in Java that would make me more productive (perhaps one, prevent NPEs like Nice does with optional types).
Peace
-stephan
--
http://stephan.reposita.org
Posted by Stephan Schmidt on February 21, 2008 at 10:31 AM MST #
Hi Matt, I follow your blog for quite some time and actually created my own blog inspired by some of your posts. You're easilly top 5 in my list of preferred blogs.
Usually I just read your posts, but this time I really wanted to know if you prefer Java 1.4 over Java 5. Although i think Java's Generics implementation is not as good and easy as it should, I do like this feature. Whenever I have to write Java 1.4 code I have the feeling that if I could have written Java 5 code for the same stuff, the code would be better, cleaner.
I also think that Annotations can be misused (the Jersey project overuses it, for example), but being used properly they help a lot. I understand this is a matter of personal choice, and there's a heated debate about it, but if someone prefers to use XMLs instead of Annotations, there's almost always this choice. So allowing the use of Annotations for the ones who like it is a very good thing.
I also like a lot Auto boxing/unboxing and the enhanced for. They're both simple features, but it's much better to have them than not.
In general Java 5 performance is also much better than Java 1.4, so I really can't immagine why someone can actually prefer Java 1.4 over Java 5 considering all these factors.
If you could just pick: "Give me Java 1.4" or "Give me Java 5", which one would you pick?
Posted by Bruno Pereira on February 21, 2008 at 10:37 AM MST #
@Bruno: About annotations: I have the feeling most people use Annotations 1.0, adding an annotation to a class. We will move beyond this stage fast, see the use of annotations in Guice and in WebBeans which I do consider Annotations 2.0.
Peace
-stephan
--
http://stephan.reposita.org
Posted by Stephan Schmidt on February 21, 2008 at 11:07 AM MST #
Posted by Bruno Pereira on February 21, 2008 at 01:05 PM MST #
Posted by Paulo Gaspar on February 21, 2008 at 01:55 PM MST #
that Guy's rant is pretty useless.. Generics are "very" easy on User's perspective and difference between C# and Java is subtle. Type erasure usually does not effect the API users. The hard part of the generics is on the API "designers" shoulder. I think it is fair because only advanced users should deal with it.
Annotations are just fine, sure some people abuses it.. He thinks Multi line strings are easy to implement,not really. And they are overrated.
At the end, Java 5 is a huge improvement over Java 1.4. I would never even consider going back to java 1.4.
Posted by afsina on February 21, 2008 at 03:26 PM MST #
>> Sun's view of adding complexity over backward compatibility.
Backward compatibility was by far the #1 rebuttal to my post, thus:
http://www.clintonbegin.com/2008/02/backward-compatibilitybe-damned.html
Clinton
Posted by Clinton Begin on February 22, 2008 at 06:04 AM MST #
Posted by eric on January 27, 2009 at 01:27 AM MST #