A Story of Switching from Java to Developing for Mac OS X
A couple of months ago I’ve switched from Java development to developing for Mac OS X. Let me tell you, it’s a completely different world, but that was to be expected. The first thing is to get acquainted with the OS and it’s features. That actually didn’t take too long. I’m really pleased with the availability of a full-fledged UNIX console in the OS, so I’m able to leverage all of my linux knowledge. The eye candy and the elegant design of most of the applications really give you quite a difference experience of using the computer than it would be on another OS. And at the end of the day, I guess, that is the most important factor for most users. Feature-wise Mac OS X has all the benefits of *BSD systems, being a derivative of FreeBSD and all. Over the years I’ve been using different OSes and for a long time now, I’ve not seen many major issues in any of them. I would suggest that such things like stability are not really a factor for choosing an OS nowadays. All of the OSes struggle to be as stable as they can be and the result is reasonable. I’d say that neither Mac OS X nor linux nor any other OS is the silver bullet, but some are better than others. I had experienced a application crashes in every OS I worked with. No matter how good the OS is you still need your day-to-day software to be well written and stable. Sometimes it’s a matter of configuration and sometimes you’re just at the mercy of the application you’re using. When switching to a Mac you cannot overlook the sleek design of Mac OS X which I believe does lure a lot of users. I guess, I would agree, that this sort of design looks more profesional and makes a different impression on someone if say, you would be presenting something to your client vs. showing them something on Windows Vista.
Let’s talk about the development for Mac OS X. First of all you get familiar with the de facto IDE to be used – Xcode and the Objective C language. Not so long ago Apple released Xcode version 4 and it’s a complete redesign of the previous version. The new version is not exactly loved by all of the developers who got used to the previous version. Being new to this, I didn’t take up getting to know version 3 of Xcode, since everyone will have to switch to the newer version anyway. The development experience is quite different from that which I’m used to when I was developing using Java. And it’s not just the language itself. I kind of got used to all the features and the little things of the IntelliJ IDEA which I used before. Even in the Java world it’s an IDE that’s tough (if possible) to beat. I’m not affiliated with JetBrains in any way, but I feel really strongly about this and I recommend with complete confidence this IDE to anyone doing Java development. On the Xcode side of things you get an uncluttered window for writing code and a couple of side panes if you choose to show them. Nothing more, nothing less. The good thing is that this lets you concentrate more on the code at hand without any distractions. The not so good things are the refactoring options of which there are few and some of them like renaming the variables has bugs. Also I don’t particularly like the debugger which is of little help when you’re trying to inspect some of the variables and expression evaluation isn’t so great. It’s when you switch from one language to another and especially when switching environments, you begin to see how the things that you’re used to can be implemented completely differently. It’s always good to learn something new, but there are times, when you’re longing to have the features that you’re used to. And JetBrains come to the rescue once again with their new product – AppCode. It’s still in a pre-release stage, but I’m hoping it will evolve into a great product. I have faith in it because I’ve seen what they can do for Java development with IntelliJ IDEA. You can also take a look at this post about AppCode which also supports the idea that Xcode shouldn’t be the only choice for developing for Mac OS X and highlights the features of AppCode. These are my sentiments so far regarding the Mac OS X IDEs, I encourage you to try out AppCode and report any bugs to JetBrains to help them improve their product.