I am a long-time Java and C++ developer on the Mac, and have been developing Swing desktop applications for quite a while.
Most of the applications I have worked on have coincided with my academic interests. The Systemic Console has been one such projects: it started out as a small Java 1.4 applet more than six years ago, and evolved through several iterations of the Apple JVM. On the way, it picked up on some of the extensions the Apple JVM team added to improve integration with the native L&F of the OS X platform.
Time went on, and as the JVM and Swing lagged behind and more and more attractive and functional applications arrived for the Mac, it seemed like an uphill battle to keep up. My eternally beta application, Solution, suffered greatly for it: it is probably one of the most faithful and integrated complex Swing applications on OS X…
However, despite the hard work of the JVM engineers, some controls were never implemented, others were buggy, and much functionality was just impossible or awkward to emulate. Windows would flicker, resize handles would disappear, and from time to time, large Exception stack traces would appear in the console. Swing itself was as creaky and cumbersome as ever. And writing in Java cut me off from the iOS platforms for good.
The last straw was the announcement deprecation of the Apple JVM. I felt like I was hanging on to Java, and being a trooper just to avoid learning an alien language, environment and, yes, paradigm (even though MVC is followed in Swing, bad practices abound — this deserves a future blog post). This post all but convinced me it was time to move on to a platform that was constantly and lovingly updated: Cocoa.
After powering through James Buckaneck’s excellent Learn Objective-C for Java Developers, I am now sinking my teeth on the well-respected (but personally sometimes frustrating — more on that later) Hillegass’ Cocoa Programming.
The amazing Xcode 4 is easing the transition from NetBeans. Interface Builder is a dream to work with. As for Objective-C, the more I read about it, write small test applications and start writing my own small programs, the more I’m falling in love with the red-headed child of C and Smalltalk.
I will (try to) blog everyday a small snippet, a good article find or a milestone that I reached in my quest for becoming a good (great?) Cocoa developer. The arching story will be the porting of the Systemic Console from a Java application to a C framework + native Cocoa UI.
Wish me luck!