Summary
iTunes is far more than a desktop music player and organizer: it is also a path through which over 300 million users have already installed Apple's open-source dynamic networking software, Bonjour. Has the time for spontaneous networking finally arrived?

Advertisement

When the Wall Street Journal's Walter Mossberg asked Steve Jobs at last week's D: All Things Digital Conference about iTunes, Apple's desktop music player software, Jobs noted that to date over 300 million people have downloaded iTunes. Mossberg subsequently penned a column in his popular personal technology series, You’re Using iTunes, But Are You Missing Some of the Fun?.

The key point of Mossberg's column was that iTunes may be a fine music player and music organizer, and an excellent vehicle to deliver users to Apple's online music store, but that there is a bigger point to consider, too: each installation of iTunes also installs Apple's Bonjour software, making the host machine an instant and potential participant on a Bonjour, or ZeroConf, dynamic network.

While many companies routinely install in-house technologies that support their product, Bonjour—or ZeroConf, or Multicast DNS, or DNS Service Discovery, as it is sometimes called—is now an Apple-supported IETF standard to extend the domain name system to allow the dynamic advertisement and discovery of network services over both local and wide-area networks.

Although many of Apple's products, such as iTunes, Safari, and OS X itself, directly support Bonjour networking, Mossberg noted the vast majority of the 300 million iTunes downloads were to Windows machines. Given that in all of 2007 global PC sales are estimated at just over 200 million units, and that there will be about 1.1 billion PCs in use by year's end, Bonjour's presence on desktops is very significant.

The notion of network services advertising and discovering each other, forming spontaneous, often impromptu, relationships, was at the heart of the Jini vision. While Jini may well experience a resurgence due to Sun recently donating the Jini codebase to the Apache Foundation, Jini itself never gained the wide distribution that Apple's similarly-purposed network technology already enjoys. The Jini community has debated for a long time Sun's role in Jini's general acceptance, or lack thereof. While licensing may have been an issue, in my opinion there have not been compelling enough Jini services to entice users to install and use Jini. By contrast, iTunes users who care only about being able to listen to or purchase music online, have downloaded and installed Bonjour to the tune of several hundred million hosts.

In addition to all those PCs, and every Mac, hundreds of different types of devices provide Bonjour-based networking capabilities, and new Bonjour devices come to the market all the time. Perhaps the most anticipated one will be Apple's own iPhone. Given all these devices, including a large number of PC desktops, it seems that a widely available spontaneous networking platform is now available. The question now is what developers will do with this new platform.

Mossberg in his Wall Street Journal article points to companies, such as ilike, last.FM, or MOG that rely on Bonjour to allow the discovery and advertisement of the kinds of music their users listen to, facilitating social discovery and networking. While these applications interact with iTunes music, all sorts of other types of data can be advertised, and discovered, through Bonjour as well. More recently, Adobe's Creative Suite 3 and Skype, to mention two examples, started to use Bonjour to facilitate local-area collaboration and discovery.

As Bonjour inventor Stuart Cheshire demonstrated in an hour-long Google TechTalk presentation (Flash video), Bonjour can be used to advertise and discover networked services over the WAN as well. This can be accomplished by adding extra bits of data to a host's DNS record. In this way, iTunes, Safari, or any other Bonjour-friendly program, can discover and use services that reside on other Internet hosts.

In contrast to Jini's reliance on Java and code mobility, Bonjour simply extends the existing DNS mechanisms, and uses a service's protocol type, defined as a string, in service discovery. There are now several hundred service types described this way, from HTTP and SSL to the MYOB accounting software and the Sybase database server. If a client can talk a certain protocol, it can use Bonjour to discover and invoke services capable of communicating over that same protocol.

The beauty of the Jini vision was all kinds of devices and software discovering and communicating with one another, making networked services seamlessly useable by anyone. Given its very wide market presence, do you think Bonjour can help us achieve that goal? Can it accomplish what Jini couldn't?

I think you already stated the problem with Jini: its reliance on Java. The fundamental mission of Jini was compromised to promote Java.

As far as iTunes is concerned, it's not clear to me that it has any fundamental advantage other than not being Jini. I'll leave that determination to those who understand the competing technologies better than I do.

Jini is no longer exclusively Java based, PsiNaptic have developed Jini for the .NET environment Code named PMatos.

PMatos is a full implimantation of the Jini Lookup Service in C#. Software developers can develop applications using code mobility for Microsoft’s .NET environments, in addition to the traditional solutions that use Web Services (WS) and Remote Procedure Call (RPC) methods.

What this means is that .NET applications can now register its services with the PMatos LUS. A client can search and retrieve the registered services when and as required, without the need to make RPC calls across the network overcoming one of the fundamental problems of networks, which is latency

The auto discovery is just a small part of Jini so it's not really all that valid to compare it to Bonjour, et al.

Bonjour is easy to understand... find a service (that we already understand how to use) with a particular identifier. Good, useful and simple. So it's great for all sorts of stuff built on top of existing applications.

This however is not the problem Jini is designed to address. Jini wants to allow processes that don't already know about each other in detail to cooperate. And to do it in a reliable way. Much bigger and harder problem.

So Jini's liability is that it's rather hard to understand (whereas Bonjour is easy) and it requires a whole new way of thinking about and solving your problems. If all you want to do is talk to a db and you just need a port and ip then there's little point to using jini. If you want to build a robust collection of services that can cooperate and evolve then jini provides a lot of infrastructure that you would have to build yourself if you used Bonjour.