Matt RaibleMatt Raible is a Web Developer and Java Champion. Connect with him on LinkedIn.

The Angular Mini-Book The Angular Mini-Book is a guide to getting started with Angular. You'll learn how to develop a bare-bones application, test it, and deploy it. Then you'll move on to adding Bootstrap, Angular Material, continuous integration, and authentication.

Spring Boot is a popular framework for building REST APIs. You'll learn how to integrate Angular with Spring Boot and use security best practices like HTTPS and a content security policy.

For book updates, follow @angular_book on Twitter.

The JHipster Mini-Book The JHipster Mini-Book is a guide to getting started with hip technologies today: Angular, Bootstrap, and Spring Boot. All of these frameworks are wrapped up in an easy-to-use project called JHipster.

This book shows you how to build an app with JHipster, and guides you through the plethora of tools, techniques and options you can use. Furthermore, it explains the UI and API building blocks so you understand the underpinnings of your great application.

For book updates, follow @jhipster-book on Twitter.


Over 10 years ago, I wrote my first blog post. Since then, I've authored books, had kids, traveled the world, found Trish and blogged about it all.

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 in Java at Feb 20 2008, 11:28:45 PM MST 9 Comments

I am one of those guys who also switched from Java to C#. My main reason was I could not appreciate Java's generics implementation. The advantage of Java upto that point in time was its elegance and simplicity over something like C++. I just could not comprehend Sun's view of adding complexity over backward compatibility. But the funny thing most of the Java programmers I have come across don't seem to understand the complexity of type erasure but blissfully program away by using them as just collection classes.

Posted by Kris on February 21, 2008 at 12: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).


Posted by Stephan Schmidt on February 21, 2008 at 04: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 04: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.


Posted by Stephan Schmidt on February 21, 2008 at 05:07 AM MST #

Hi Stephen, regarding annotations, i think some annotations placed on classes and methods are ok, they help a lot without much damage. However, placing annotations inside method arguments, such as in JSR-311 (first place where i saw it) starts to really mess things up. We can quickly get to a point where the amount of annotation code is comparable to the implementation code. This is what i consider overuse. I really don't think we should use annotations this much. I'll take a look at the projects you mentioned to see what you called Annotations 2.0 to have a better grasp of it, but it doesn't seem like something I'd like to see in Java

Posted by Bruno Pereira on February 21, 2008 at 07:05 AM MST #

However, annotations on arguments make a lot of sense in some contexts, as in JAX-WS. (Although one could argue its JAX-WS use could be - at least partially - avoided if introspection would provide argument names.)

Posted by Paulo Gaspar on February 21, 2008 at 07:55 AM 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 09:26 AM MST #

>> Sun's view of adding complexity over backward compatibility.

Backward compatibility was by far the #1 rebuttal to my post, thus:


Posted by Clinton Begin on February 22, 2008 at 12:04 AM MST #

You are shitting me, right. There are people who actually write paragraphs on the comparable merits of "c#" vs "java". By the way I believe annotations 1 is much more usable than annotations 3 or 4. Plus annotations are well overused in the methods of... I have no life

Posted by eric on January 26, 2009 at 07:27 PM MST #

Post a Comment:
  • HTML Syntax: Allowed