The current plan put forth by Apple is to turn the Macintosh into the hub of our digital lifestyle. To that end they currently lead in quality if not sales. It's hard to find software that is more intuitive or feature laden than iPhoto, iTunes, iMovie, GarageBand, and iDVD in their respective domains. Certainly you can manipulate photos, listen to music, and make movies and music with Windows or Linux, but you won't find the experience nearly as rewarding.
Has this plan worked for Apple? Is iLife the new killer application? It's hard to tell. Certainly Apple continues to show a profit, but the company's user base is not increasing. Maybe this is because iLife isn't a large enough pull to the platform. It could also be the cost. While an Apple made computer is not wildly more expensive than a comparable PC (especially when you factor in the iLife products are bundled with the mac), in hard economic times many consumer PC users may not be able to afford the digital cameras, iPods, and musical keyboards required to get the most out of your iLife.
Still Apple is holding its footholds in the consumer, educational, and professional markets. The question is how will Apple go forward? It's been suggested that Apple transition into a digital electronics company, focusing on gadgets like the iPod. There's also the long standing suggestion that Apple give up on hardware and become a software-only company. Certainly they've shown that they can produce some of the highest quality software in the industry, but where does that leave Apple's also impressive hardware business? Certainly Apple has its hardcore Mac-loving audience, but what would the hardware industry been like without those fruity iMacs and sleek powerbooks?
Apple also lacks a coherent enterprise strategy. How many Macs do you see in the office? Not many. Certainly there are the Macs in the art department or on the desks of a few executives, but how many macs do you see in the cubicles? Macs are arguably easier to maintain, use, and network, but how does Apple get a foothold in business? A Mac can play well in a Windows network, but it's not going to run the multitude of Visual Basic and Access applications that infest every office. Even though the cost of the Mac is not significantly larger than a Windows box (and could be even less given total cost of ownership), but there is a real problem with Macs when it comes to all the software you might need to use in business.
I have a suggestion for Apple that I think could improve their standing while also helping the developer community at large. I propose that Apple port its Cocoa application framework to Java. To some extent Apple has already moved in this direction. They have already ported their WebObjects platform entirely to Java. They also have a Java to Objective-C bridge that allows the creation of hybrid Cocoa-Java applications on Mac OS X. I propose a port that will allow rich clients made with Cocoa and Project Builder that would run entirely on the Java virtual machine
Porting Cocoa to Java is an Extension of Apple's OSS Philosophy
Moving Apple's APIs and development tool strategy would be an extension of Apple's open source philosophy. The underpinnings of Mac OS X is a BSD derived operating system. OS X is a hybrid system that allows Apple to leverage the work of the open source community while still providing a slick, value added upper tier that makes the Mac a polished, commercial product. This works in Apple's favor. They don't have the monetary resources that Microsoft is pouring into the next generation of Windows, but they can alleviate some of their development cost by building off an already stable platform.
Apple can gain the same edge by leveraging the open (though not open source) Java platform. Java has a rich collection of standard and open source libraries and APIs. Apple can take advantage of this by porting their Cocoa framework to Java. They can keep the basic Cocoa design and give OS X developers the strength of the ever growing and improving Java community.
Apple can also leverage a number of open source projects just as they did with BSD. They could look piggyback off Eclipse's SWT project for support in porting Cocoa GUI widgets to Java and other platforms. At one point OpenStep, the forerunner of Cocoa, worked on Windows as well as NeXTStep. When Apple acquired NeXT, they killed cross platform support. When you consider that Apple is a single company and it doesn't have the resources to develop an up to date, cross platform GUI API, this makes sense. Recognizing Apple's other projects, could we expect the company to devote resources to making its APIs current with the state of Windows, Gnome, or KDE in addition to Mac OS X? By moving the framework to Java, they could count on the community for a lot of this support.
Apple can also leverage open source projects in their development tools. Project Builder could adopt Ant for build management, XDoclet for code generation, AspectJ for aspect oriented programming, and various other projects. Apple's Project Builder IDE already supports Ant and XDoclet for J2EE development. Why not extend that to fat clients? Considering Apple's success in creating a slick front end over BSD and GNU development tools, imagine what they could do with open source Java tools.