Java Again

After a decade, I’m coding for the VM again

In 2001—after working for years on the Java server platform—I left Sun to explore the world outside the virtual machine. I dabbled with Python, trudged through some C, and even played with such odd things as XML Query. Then, building native applications on Mac OS X captured my imagination. That lead me into an exploration of Cocoa, first with Java and then with Objective-C, the language which powered it.

With its pointers, header files, and a syntax that reflects its heritage of being first implemented as pre-processor to the C compiler, using ObjC was like rolling back the clock to a prehistoric age. On the other hand, its object-orientation was much closer to Smalltalk than anything else I’d worked with before and—ironically given both the age of ObjC and Smalltalk—it felt like something from the future. Despite its warts, I found myself enjoying it. I often described it as having all the brute force of a chain saw with the finesse of a scalpel. A lovely mix.

After a few more years, I started working on server applications again using another dynamically typed language: Ruby. Despite its frustrating support for Unicode which has only recently been sorted out, it’s rather tepid concurrency abilities, and the rather middling performance of its default runtime, the leverage Ruby gives a programmer to quickly explore a problem and define a solution is amazing. It quickly became the default tool in my programming bag.

From then on, I was sold. In fact, I didn’t expect that I’d ever work in a statically typed language again—and certainly not Java which felt like it was firmly behind me.