A couple of weeks ago, I wrote about my rather mixed initial experience of the SavaJe Jasper S20. I’m making progress, and I’m going to invest a bit more work in this device, because I think it’s important. In this fragment I explain why I think so, with a bit more hands-on narrative.
Narrative · My flame back in early June caused a bit of a stir; it turns out that SavaJe is one of our partners, and certain Sun execs got heated input from certain SavaJe execs along the lines of “Who is Bray and why does he hate us?”
I would have been unimpressed, except for as I’d already reported, they’d already become very responsive on the developer forums. We’ve been working together to get this thing on my funky Canadian GPRS network and deal with my other issues. The ball’s in my court, and I’ve been held up because I need a Windows box to program the little goober and I’ve been bringing Lauren’s last-but-one Thinkpad back up to date, and there’ve been interruptions. It turns out that the Windows-only limitation isn’t a SavaJe thing, it’s buried somewhere in the whole mobile-technology stack; I don’t understand it yet, but I’ll figure it out.
In the interim, I’ve got the Bluetooth working great with my Mac, and I can move pictures and movies back and forth. And I’ve got the USB connection from the Thinkpad working, and NetBeans all ready to go; so we’re really close.
Why? · The idea of a “Java phone” is not exactly new, the world has millions of ’em today, and I’m told that teenagers waste huge amounts of time playing games. But they’ve got two big problems. First, the Java in question is an fairly-small subset, so that ordinary non-specialist Java developers find it irritating to work with. Also, there are compatibility problems to a greater degree than we’re used to with Java. All these things are irritating, but bearable.
Here’s what’s really broken: what makes a phone interesting is that it’s, you know, a phone, and by and large, the phone part isn’t accessible to the Java running on the phone. Typically, these things have a runtime engine written in C (if you’re lucky) that takes care of telephony and audio and the low-level stuff, and there’s little compatibility from handset maker to handset maker, or even from one model to the next from the same maker.
SavaJe is about fixing that. The idea is that more or less everything the phone can do is Java-programmable, and furthermore, it’s (almost) a full Java SE (JSR209 to be precise).
This tickles my fancy. Off the top of my head, here are the things I can imagine building:
Regularly fetch an Atom feed of a stock price, and when it sees an entry that matches some particular pattern, telephone me and play a sound file.
Push the missed-calls list to the Web as a feed.
I notice that there doesn’t seem to be a pre-cooked sync between the phone and OS X. Who cares? I can get my Mac to export vCard, and Google suggests there’s lots of vCard parsing software in Java, and I should be able to pull the data from either the Mac with Bluetooth or from the web if necessary, and look up phone numbers, and maybe even make calls.
Same thing with iCal data... I’m already publishing an
.ics
file, why can’t my phone tell me what I’m doing
today? Or talk to the phone’s built-in alarm program to ring a bell when I’m
supposed to make a call?
Jython. JRuby. [cackles demonically...]
Probably some of those won’t work, for reasons I’ll discover once I dive in. But the notion of having a phone that any Java geek can program to do whatever—if it actually happens—isn’t just a game-changer, it’s a world-changer. So I’m gonna nominate myself as a typical non-mobile-specialist Java geek and see what I can make this puppy do.
The Competition · The vibe I get from my mobile-savvy friends is that a lot of people think Linux+Java is the mobile platform of the future. For example, check the noise that Motorola’s making over at MOTODEV. (Is the the successor to what used to be called JUIX?) Sounds plausible, but not as developer-friendly as what SavaJe is trying to do, if they can make it work.
Stay tuned.