<pre>Author/s : Will Iverson Publisher : O'Reilly Category :Other Review by : Simon Brown Rating : 9 horseshoes</pre> I've had a PowerBook for about three months now and I thought that I had Java on Mac OS X figured out. How wrong could I be! First of all, it's worth pointing out that Mac OS X for Java Geeks by Will Iverson is not your normal Java book. It doesn't teach you how to use Java, and it doesn't teach you how to use Mac OS X either. Instead, it takes you on a tour of what's available for us Java developers on the Mac OS X platform, looking at topics that pull together to make Java development an easier and richer experience. First up is a look at Apple's implementation of J2SE and how configuration of the Java environment differs slightly from other platforms. This is certainly something that does confuse most Java on Mac newbies (myself included) and it's great to see an explanation of how this all works. Next is a discussion of a selection of tools that are useful to Java developers, including all the usual text editors, IDEs, open source projects and even some tools that are bundled with OSX that you might not have found. Again, all very useful stuff, particularly with Mac OS X specific tips thrown in here and there. Now we get to the interesting stuff by stepping up a gear and looking at the development of desktop applications for Mac. Apple's JVM includes an implementation of the native Aqua look and feel for Swing, meaning that you can write applications in Java that look native. Here, we re treated to a fascinating discussion on some of the usability issues and gotchas associated with cross-platform GUI development. With this in mind, the book then goes on to look at some of the Apple specific features and extensions that we can take advantage of in our applications, along with some strategies to help ensure that our Java applications are still cross-platform compatible. This includes integration with things like the Finder and Dock, and we also find out that it is possible to package up Java applications in the same way as native applications, rather than delivering an executable JAR file. After all, one of the key mantras behind Mac OS X is the richness of the user experience! Moving on, and if that's not enough, the book delves into some of the Java APIs that Apple provides if you are targeting Mac as your deployment platform, including a look at the Speech, Spelling and QuickTime APIs. The functionality provided by these APIs is amazing, although the actual APIs themselves are incredibly simple. The coverage of the APIs is well balanced. There's just enough to whet your appetite while still providing a good overview of how to use them. Finally, the book moves on to look at how to use some of the more mainstream development tools such as MySQL, Tomcat, JBoss and web services. Again, there's a lot of useful information in here although it's not as Mac OS X focused as the rest of the book, instead providing a simple instructional approach to getting something simple coded and running. Sure, there are some Mac specific hints in here, but these sections seem to be aimed at developers who are new to these technologies. Overall this is a great book, and the use of a simple yet very complete example throughout the book makes it very easy to read and follow exactly what's going on. My only real criticisms would be that the last few chapters are focused more on using the technologies (e.g. building your first JSP-based web application) and it might have been good to see a section that talked about J2ME development on OSX, just for completeness. In summary, if you're an existing Java developer and have recently moved over to the Mac, I strongly recommend this book. I only wish I had found it sooner!