The Network is the computer

Chris Adamson and I were IMing yesterday using Apple's iChat client. We had each installed Tiger (Mac OS X 10.4) as soon as it arrived and he had selected a status option that reported on what song he was listening to in iTunes at the time. Next to the song was a tiny little arrow. Having no more sense than Alice in Wonderland when confronted with things labeled eat or drink me, I double clicked on the arrow. Whoa - iTunes opened on my machine and took me to the page in the iTunes Music Store for the album he was listening to.

It's not exactly through the looking glass - but consider what happened. You can assume network connectivity because you can't be chatting without it. You can assume both people are running Tiger because the advertisement can't be made unless the person listening to music is running Tiger and the triangle doesn't even appear if the person viewing isn't. Therefore the person who sees the triangle must have both a network connection and a copy of iTunes installed. A click on the triangle allows them to preview music that can befound in the iTMS and, of course, purchase it. It's like the way in which many of us have used Amazon to look up details on books and then maybe bought from them or from somewhere else.

This makes me so angry.

Not at Apple - but at Java. I admire Apple and am committed to using their products. Look around the Apple Tiger release and you will see the network featured everywhere. Xgrid allows every Tiger machine to participate in grids working on parellelizable problems. The "i" in iChat, iTunes, iPhoto, etc stands for internet and each has embraced connectivity. Connecting to printers and other devices is trivial with Bonjour (previously Rendezvous) built in. The Xcode IDE supports distributed builds by taking advantage of cycles on nearby machines that are not being stressed. Dashboard widgets bring little bits of information to my computer in attractive and configurable ways. The weather for where I am and where I'm going next, a dictionary or thesaurus, a flight tracker, and even the wikipedia. You can do these in your browser and bookmark them - but what changes if you assume connectivity and that people want an attractive and focused UI.

Chris has often pointed out that Java on the desktop can not be considered successful as long as our success stories are IDEs and other developer-centric apps. Where are the cool things for the kids? Java is ten years old - the desktop should be rocking.

For me the issue is the network. Apple has assumed the network in ways that Java was set up to do. And just as Apple apps could check for and take advantage of Mac Tiger being on both sides of the wire, Java apps could do the same. Jini, JXTA, Java Spaces, the Java APIs for Rendezvous - the Java community could have owned the space of networked desktop applications. Instead of a "me too" with JSPs because there were ASPs and throwing resources at the WS-* stack, why not be a "me first".

Java was created with the network in mind and that shouldn't just mean "session beans". I've been to a ton of talks where Sun engineers explain why the Apple technologies aren't robust enough. Shipping is a great step on the path to good enough.

This is the first in a three part rant. On Wednesday I'll talk about client apps and on Friday about devices and the server side. I'd love to see people as excited when Mustang releases as they were when Apple released Tiger.

In Also in
Java Today , Jason R. Briggs is giving ornate web application frameworks a REST by adopting the "RESTafarian" principles typified by the Web itself: a stateless client/server protocol, a small set of well-defined operations, a universal syntax for resource identification, and a banishment of Remote Procedure Call-like concepts like SOAP and RMI. In The REST of the Web, he shows how to combine the REST concepts with Jython and Velocity to create lightweight and flexible web applications.

Kode Vicious answers a question about why it's not enough to encrypt connections between users and a web service in Sincere and Authentic . Vicious explains that in the case of a music web service, "The music does not need to be kept secret because it is unlikely that someone is going to steal it by sniffing it from the network. What is more likely is that someone will try to log into your users accounts to listen to their music. Users will prove who they are by authenticating themselves to your service, most likely via a username and password pair."

The
JavaPedia page on Mock Objects contains links to open source projects for mocks including jmock, mockrunner, mock creator, and easy mock. Add your links to articles about using mock objects and post your thoughts on using them.

So What future for Java on OSX ?
In today's Forumsbjb writes "I am realy worried about the future of Java on Mac platforms. As discussed in a previous post, ss there any plan to go and ask Apple if they would contribute their code to the Mustang developement tree ? [..] This is an really major point if we plan to revive the client side of Java with mustang. "

Furbotto asks why we can't making the system lnf the default ?. "Sun says that jdk 1.6 is focusing on "ease of use", so why not making the system look and feel the default ?[..] I'm sick of seeing swing applications running in windows using the metal or ocean look and feel! these apps don't fit in the windows desktop, they look "out of place"!

Registered users can submit news items for the
href="http://today.java.net/today/news/">java.net News Page using our news submission
form. All submissions go through an editorial review before being
posted to the site. You can also subscribe to the
href="http://today.java.net/pub/q/news_rss?x-ver=1.0">java.net News RSS
feed.

Registered users can submit event listings for the
href="http://www.java.net/events">java.net Events Page using our
href="http://today.java.net/cs/user/create/e"> events submission form.
All submissions go through an editorial review before being posted to the
site.

Archives and Subscriptions: This blog is delivered weekdays as
the Java
Today RSS feed. Also, once this page is no longer featured as the
front page of java.net it will be
archived along with other past issues in the
href="http://today.java.net/today/archive/">java.net Archive.