Apple's latest efforts are the triumph of software over hardware.
Normally I don't comment on new products, especially hotly anticipated ones that a million others will pontificate endlessly. However, I'm breaking my rule because I'm quite amazed by the new iPod Shuffle and iMac Mini. Not because of the products themselves but because of what they represent. They are both the triumph of software over hardware.
the iPod Shuffle
If you take an iPod Shuffle and strip off the Apple logo, what do you have? It's just a flash drive in a pretty enclosure. It connects via USB and has a small CPU with a sound chip. Pretty simple and pretty commodity. There are tons of these out there made by a slew of no-name manufacturers, and yet Apple is going to sell oodles. Why?
The iPod Shuffle has two things to distinguish it (besides Apple's great marketing and industrial design). First, Shuffle can play MP4 files from the iTunes Music Store. Other players can't. Regardless of my personal feelings on the matter of Apple's proprietary music format, I must admit this is a feature implemented entirely in software that greatly enhances the actual usefulness of the hardware. I can buy (not rent) music online and play it with a single click. If you like music then that's a lot of power.
Shuffle's second feature is that it's controlled by iTunes on your desktop. Something attached to iTunes becomes a better product because of it. iTunes handles all of the heavy lifting and the larger UI considerations of managing a music library, leaving the hardware to do what it does best: play music. The software, even on a different machine altogether, greatly enhances the value of the hardware. Two points for Apple.
the iMac Mini
So what about Apple's other bombshell (unless you were among the 4.8 billion people who read about it a week early on Think Secret), the iMac Mini? Well, it's a bunch of cheap commodity parts (if slightly better quality than average) packed into a stylish enclosure. Dell and others have been doing this for years, so what's the big deal? The deal is you get a cheap box which runs OS X!
In Mac OS X Apple has created tremendous software-based value. Ignore the MSRP of OSX + iLife + iWork that you get for free. Those are just arbitrary numbers based on intense marketing research that shows what people will pay for software. Think of it as estimated value. (see this great article about pricing software from Joel On Software). What matters to the end user is the actual value, or at least perceived value: What will it do for me? Well, that mediocre hardware, combined with OSX and a bunch of built-in apps will let you surf the web virus free, easily read email, burn cds, manage contacts in a phone or pda, work with digital cameras, produce great documents, and a host of other really nifty things that Apple has been developing the last few years.
Now of course the iMac Mini lets you do all of this only if you already have a screen, keyboard, and mouse. What they are really saying is: For 500 bucks you can hook your old hardware up to OSX and do really nifty things. That you need a new (but small) piece of hardware to do this doesn't really matter. It's the software, the built in ability to do things for a good price, that makes it worth it. A 2 in high shiny brick just happens to be the best way of selling it to you.
Both of these products represent the triumph of Software over Hardware. Excellent software can raise both the apparent and actual value of commodity hardware over the competition. They also serve as another step in the long journey towards Apple's constant goal: making complex technology easy to use. I'd say "the integrated hardware and software solution for the rest of us", but perhaps Apple's slogan is better.
So what does any of this have to do with Java? Just this: if you can create a good experience and provide real value with your software, the fact that you are far removed from the hardware doesn't matter. Being programmers, this is pretty handy. It means that software is more important than hardware, if you build it right. I think it also means the that user experience, what the person using your product actually sees and feels, is the most important thing. The underlying algorthms, just like hardware, are commodities (just look at the many free libraries we have on java.net). What matters is how you put them together.