The Top 10 Ways to get screwed by the "Java" programming language

Last modifiedMarch 28, 1999.
To get on this list, a bug has to be able to cause at least half a day of futile head scratching, and has to be aggravated by design flaws in the Java programming language.  Java is a good language, but far from perfect.  Compare this list with the compantion Top Ten ways to be Screwed by "C" page. To revisit the horrors of the past.

Better languages allow fallible programmers to be more productive. Java is not cast in stone, so perhaps some of these complaints can be addressed, if not in Java then in Java2.  In any case, whether fixed or not, awareness is a big step toward avoidance; so read on!

  1. Know your classes.  The rules for locating the classes to use are complex, and not consistant from one environment to the next.  Consequently, it's easy to be confused about which classes are actually being used.  And if you don't knwo what classes are being used, you have no hope of understanding your program's behavior.  Here are some aggrevating factors:
  2. Thread with wild abandon, and without a safety net.  Java virtually requires you to use 3 or more threads for even a very simple program (threads for paint, event, run), but provides only the most basic synronization primitives.  I wrote about this problem at some length in my Javaworld review of Assure.

  4. Reserved for future expansion. Send email to with your suggestions.

Back to my home page