In my previous weblog, "Mixing Java and Titanium", I talked about how excited people were about the mixture of Titanium, Mac OS X, and Java. Now, it is time to dig and and see what is really going on here. What is it about Mac OS X that is so attractive? What is the substance underneath the sleek hardware and cool window effects?
First off, OS X is Unix underneath. It isn’t just a "Unix-like" OS, nor is it an OS that exposes only some POSIX-like functionality to C programmers. At any time, you can pop open a Terminal window to examine processes, grep through files, or execute a quick Perl script. Or, better yet, pipe the results of grepping through some files to a Perl script. Thankfully, Apple isn’t ashamed of the Unix foundation of OS X and hasn’t tried to hide it away from the power user. In many respects, I feel like I am running a FreeBSD operating system that lost X Windows along the way in favor of something much nicer. And that can run the latest versions of Office and Dreamweaver instead of requiring me to dual-boot.
Next, the latest and greatest Java Development Kit is already installed by default. For the first time, there is no need to surf over to java.sun.com to pick up the latest bits. As well, Apple exceeded expectations with their implementation of the JDK. Not only are Java threads mapped to Mach kernel threads (which was expected), but each virtual machine instance cooperates with other running VMs helping to increase performance. It does this by caching loaded class files as well as HotSpot compiled code in shared memory. If a class file has already been loaded and optimized by one VM, another VM can just use that code without having to perform the work again.
Finally, OS X ships with a strong suite of development tools. Apple is the first vendor to ship a consumer operating system with a fully functional set of development tools in the same box that is available at Fry’s. For no extra charge. And not only are Project Builder and Interface Builder (Apple’s excellent IDE tools) included, but so are Emacs, VI, and other Unix text editors. This is perfect for those who are comfortable using traditional tools, or who need to use something familiar when the pressure is on.
In essence, even though Mac OS X is strikingly new, it’s also surprisingly comfortable for any developer, Java or otherwise, that has any kind of a Unix background. No matter how pretty the interface is or how cool it is that movies still play as their windows are being minimized, you can get right down to work and get things accomplished. If this is what "Think Different" means, I’m all for it.