Way back in the 1990s, the only way to write a program for the Macintosh was to use Metrowerks’ CodeWarrior, a third-party IDE designed to make software development graphically appealing. Now, 16 years after the release of CodeWarrior, there is a new bumper crop of IDEs that can build applications for the Mac OS, and they’re not all made by Apple.
Of course, Apple’s Xcode is the default Mac OS X development environment. Apple’s flagship IDE dominates the development of iPhone, iPad and desktop applications for the Macintosh. But it’s not the only option out there. JetBrains recently introduced AppCode, a new IDE for developing Mac applications, and Embarcadero Technologies recently added Mac OS X as a target deployment platform for C++ and Delphi in its eponymous flagship IDE.
JetBrains’ take on Macintosh development starts out with the company’s famous Java IDE as an influence. Max Shafirov, AppCode project lead at JetBrains, said that AppCode offers a number of features that are not found in Xcode.
“The main idea behind AppCode is to offer developers a chance to produce better code and increase their productivity while coding. AppCode achieves these goals in a number of ways,” he said.
“Automatic code analysis is one. You don’t need to run code inspections on demand; the complete project codebase is verified instantly, as you type. The number of code verifications is impressive and varies from simple ones like ‘unreachable code’ or ‘unused code’ to much more important memory management warnings. For many of these code warnings, AppCode offers quick-fix options (similar to Xcode’s ‘fix-it’ actions).
“A solid set of powerful code refactorings is another big advantage of AppCode. There’s also a huge number of smaller productivity features, such as more convenient code navigation, better debugger, imports optimization, code formatting options, etc.”
JetBrains’ IntelliJ IDEA Java IDE is well-known for its refactorings, and AppCode is no different. Said Shafirov, “Reliable refactorings allow for a very different coding flow, which is equally applicable to both small and large projects. Actually, you don’t refactor just the existing codebase to enhance its readability or maintainability, but you also use higher-level techniques to author new code. Already in v1.0, AppCode offers a set of refactorings and ‘create from usage’ actions to make development processes much more efficient.”
Embarcadero sees the Mac OS as a growing target for enterprises, said John Thomas, the company’s director of product management for developer tools. “Basically, today if you’re an enterprise, you recognize you need to target Mac OS. It’s becoming more and more important to developers. It’s an imperative: Mac OS is really growing. You can’t ignore it anymore.”
To that end, the most recent version of Delphi, dubbed Delphi XE2, allows developers to deploy to Mac OS X for the first time. With the help of a new application framework created by Embarcadero, called FireMonkey, Delphi can now be used to build rich native applications for Mac OS, and use the included GPU for rendering parts of those applications.
“XE2 was the first version to support Mac OS,” said Thomas. “That’s a big feature for us. Really, our users were telling us we need to get onto Mac, to start supporting these devices coming in, like iPhones. We created this multi-platform framework [FireMonkey] and put effort into shielding the developer from the framework code. You can access a service directly, but you don’t have to.
Our framework is a full application stack: It has a full database layer, access to cloud services; it’s a full-fledged framework for today’s types of application needs. It also supports iOS in this revision. In the future, we hope to be expanding that support onto Android devices and onto other platforms, like Windows 8.”
Thomas said that the main advantage of using Delphi instead of Xcode is that it allows developers to use C++ while still targeting Mac OS X, and never having to learn the various Mac-specific development tools.
“In order to get Mac OS support, they have to spend time and effort getting familiar with Objective C and the Cocoa libraries. It becomes a lot of effort,” said Thomas. “You’re seeing a lot of frameworks trying to solve this problem across runtimes, but they have their own challenges in terms of access to services. We’ve given you the best of both worlds: You target one framework, use one IDE, and because it’s a native language, you don’t suffer from the deficiencies, and you can use the GPU to do the rendering.”