In my day job I work with a lot of very smart developers who graduated from top university CS programs such as MIT, CMU, and Chicago. They cut their teeth on languages like Haskell, Scheme, and Lisp. They find functional programming to be a natural, intuitive, beautiful, and efficient style of programming. They’re only wrong about one of those.
(more…)
Posted in Java | 57 Comments »
I hate 1% problems. No this isn’t an OWS slogan. I’m thinking of those code issues that really aren’t a problem 99% of the time, but when they bite, they’re really hard to debug and they cause real pain. Several common cases in Java:
java.util.Date
or java.util.Calendar
instead of JodaTime.Locale
when doing language sensitive operations such as toLowerCase()
and toUpperCase()
.What I hate most is that it’s really, really hard to convince other developers that these are problems they should take seriously. (more…)
Posted in Java, Programming | 6 Comments »
Have you ever seen an Ant error message like this?
BUILD FAILED /Users/elharo/Projects/XOM/build.xml:545: Problem: failed to create task or type scp Cause: Could not load a dependent class com/jcraft/jsch/Logger It is not enough to have Ant's optional JARs you need the JAR files that the optional tasks depend upon. Ant's optional task dependencies are listed in the manual. Action: Determine what extra JAR files are needed, and place them in one of: -/opt/ant/lib -/Users/elharo/.ant/lib -a directory added on the command line with the -lib argument Do not panic, this is a common problem. The commonest cause is a missing JAR. This is not a bug; it is a configuration problem
As usual, the ant error message is completely unhelpful, though for once it’s at least technically correct. (Most of the time when ant says, “This is not a bug; it is a configuration problem”, it is in fact a bug and not a configuration problem.) Here’s what’s really happening.
(more…)
Posted in Java | 2 Comments »
Perhaps the continuing confusion over the difference between checked and runtime exceptions in Java is because we haven’t named them properly. Mosts texts and teachers, including myself, have traditionally focused on how and when you handle the exceptions (compile time or runtime) rather than on what causes each. I propose a modification, not in code, but in terminology and teaching. Specifically I think we should should start calling checked exceptions “external exceptions” and runtime exceptions “internal exceptions”.
(more…)
Posted in Java | 35 Comments »