JavaOne was useful, as usual. Here’s the list of things I found interesting or need to look into further:

The mobility general session was packed full of information. The main news was progress on MSA (Mobile Service Architecture, JSR-248 and JSR-249) initiative. This strand of work irons out some of the weirdness between consumer and enterprise Java ME stacks, will support more capable handsets and will reduce variability. For example, the MSA group will tighten up some of the specifications and will reduce the number of options handsets manufacturers can leave out.

It’s encouraging that MSA is being driven by Nokia and Vodafone – it’s not just Sun alone pushing this along. The detailed MSA technical session was given by Mark Duesener of Vodafone and Asko Komsi of Nokia. They stated that the four steps of the initiative are to: select JSRs; clarify (reduce specification ambiguity); add requirements, such as hardware requirements or codecs; and add guidance. They also explained that the MSA initiative is a continuous process and that the licensing for handset manufacturers was being simplified. If you’ve spotted some similarity between JTWI and MDA, you’d be right, and MSA is backward compatible with JTWI. Oh, there was a throw away line telling us that three quarters of all handsets are Java enabled.

Back at the mobility general session, it was great to see SavaJe running some demos and starting their developer program. We saw a CDC prototype handset (single VM, multitasking) running a MIDLet and streaming some video.

MIDP 3.0 is in the early JSR stages. Expect richer graphics, shared libraries, inter-MIDLet communication, concurrent MIDLets, device capabilities support and secure RMS.

Still with the mobility general session, there was talk of “service players”, i.e., scriptable players for the Java ME platform. The interesting part of this is that the players, being ME based, could be relatively transparently updated on the handset, which is a nice trick and combined with JSR-226 (SVG) and the rich graphics JSRs could make for some interesting players.

The Blue-ray announcement (BD-J) is all over the news, so I won’t detail that. In the mobility general session the presenter predicted “faster growth than mobile”.

I knew there were a lot of Java Cards out there (1bn), but I didn’t know that 50% of SIMs are Java Cards. The next generation adds biometric and other forms of authentication and goes contactless. We saw a NTT DoCoMo on stage demoing i-Mode FeliCA, which is both an API and a chip on mobile phones. It supports “contactless” non-cash payments. The demo showed a mobile being charged up from a credit card, and then used to make a ticket purchase by making a selection on the phone and then touching the phone against a reader – no central server was involved to approve the purchase. Staying with NTT DoCoMo, they attribute US$6bn of revenue directly to Java, and have been working for a year on the next generation of DoJa.

Another demo was from RIM, talking about mobile enterprise. He had a nice line, something like: “It may seem obvious, but a good wireless enterprise application has to be both a good wireless application and a good enterprise application”. Which was a nice cue to list all the issues of wireless development and then all the issue of enterprise development. It was good to see Blackberry’s MDS Studio and MDS engine running. The demo we saw was a restaurant finder which was XML+Java Script run in a player, plus a good old stock quote application where the stock information was pushed to the device.

The last demo was from Sprint. I was pretty much hosed with information at this point, but from what I can tell they have a nice way to deploy a web service to a mobile device by generating MIDP 1.0-compatible stub code, à la RMI. They’re doing R&D with NetBeans looking at ways to make application development faster, and the demo they showed was driving instructions using Mappoint.

I think that’s about all from the mobility general session. Elsewhere…

I finally got to learn more about SyncML thanks to the Sync4J guys squeezing in a technical presentation (given by Stefano Fornari, Funambol). If the licensing is reasonable, it could be a good general synchronization tool. I must read the booklet they gave me and go download a copy of their code.

A related session was on mobile device management (Andre Kruetzfeldt and Christopher David of Sun, John Rizzo of Aplix and Jens Paetzold, Siemens AG). They figure that it costs operators US$50 per support call, which is why this client, server and protocol specification is being worked on (JSR-246, JSR-233). The SyncML-based protocol is defined by the OMA, I believe. The Java ME bindings are in early access at the end of this month, and the draft of the server-side bindings will follow.

IMS and SIP are going to become more important so I took the opportunity to attend the technical session from Siemens on this topic, which was given by Peter Gersing, and Dennis Luemkemann. They’ve found that operators triple their revenue by increasing interoperability, and that’s what IMP (IP Multimedia Subsystem) and SIP (Session Initiation Protocol) is all about. IMS and SIP aren’t limited to mobile networks, but that’s where the focus is right now, and in particular on 3G networks. IMS provides a bunch of services (so you don’t have to…) including charging, presence, QoS, single signon, location, group lists. So with SIP you lookup and initiate services. You go through the IMS layer to authenticate and lookup services, but then you’re handed off with a point-to-point connection for the rest of the conversation. The Java bindings are JSR-180 (client) and JSR-116 (server). Apparently there’s an MIDP 2.0 implementation, so we can get going today without having to wait for handsets with JSR-180 support. The interesting question is how many networks are running with IMS and SIP… and the answer is that some will roll out this year.

The Real-Life Use of Location APIs talk, by Sean Sheedy, Ryan Wick and Zane Lyon of Nextel was focused pretty much on GPS. It’s not clear that GPS in mobile phones is going to happen particularly soon outside of the USA, but it was good to learn some of the gotchas of that technology (smoothing readings, cold/hot/warm readings, etc). However, the Parlay presentation from Florin Van Slingerland of Ericsson did give a nice demonstration of location technology: using a Parlay “network resource gateway” (server) to initiate a call to “the person closest to me”. Ok, the demo didn’t actually work, but it was late in the talk and we’d seen a heck of a lot of API detail up to that point, which was enough to figure it all out. How many networks have Parlay infrastructure? About 27, but I need to track that number down.

A few mobile things came out of the general sessions. IBM tried to give a demo of a mobile application written in some variant of SWT, and then went on to show how it would run unmodified on the desktop. And the point of that would be… what? Nokia also gave an demo of an Eclipse-based tool for SOA, deploying web services and middleware access and “modules” from a mobile device. To be fair, it was probably a very early release of the tool, but it was wholly unconvincing. Good things will come of it, but maybe not the way I saw them demoed. It looked like going a long way round to do something, against the main flow of Java towards simplicity, but I’ll have to reserve final judgement until the tool and framework appears on Nokia forum.

That’s the bad stuff out of the way, and in contrast the Tue and Thu general sessions had some wonderful stuff. We saw the use of mobile and bluetooth in India for market traders, and a modification of the code (JUIC) for accessing the JavaOne schedule. On Thur we saw remote device debugging over bluetooth and the NetBeans mobile flow editor – probably a great way to pull together a prototype, but I’m guessing almost certainly violates some of the principles given by Allen Lau of Tira Wireless for high performance Java ME.

Also in the Gosling general session there was a nice demo of moving running applications between machines (a PC and a Mac) or “pouring” then between devices with tilt sensors. Cute. More impressive was the NetBeans Matisse demo – finally a GUI tool that looks usable. Overall, NetBeans is looking good these days, but I always end up running back to Eclipse because the CVS support in Eclipse overwhelms all other factors.

What else….

There was a lot of buzz around Spring. We hit Rod Johnson and Juergen Hoeller’s (packed) presentation and finally understood what it’s all about. The whole dependency injection side does look like it might well simplify some applications and it was great to get some examples of AOP that aren’t just logging or security. I have the Spring in Action book now, so it’s just a matter of actually reading it. In other news, BEA announced they were rolling Spring into their product line and would be offering support, which should be taken as a huge waving-of-the-victory flag for the Spring guys.

I could say the same for Hibernate and EJB 3.0. I didn’t learn a great deal about Hibernate, other than “it’s won” as a persistence mechanism more or less. Goul was probably the first to point out the risk of fragmentation of the language via vendor-created annotations, but, everyone stay calm, and work towards the JCP-blessed annotations and it’ll be fine.

Something to look forward to… There’s lots of web services updates in JAX-WS 2, but not until Java SE 6.

The McNealy open mic sessions was a good thing, and I hope it becomes a regular fixture. Top advice, such as have crazy ideas but make sure you’re right.

Finally, last time I was at JavaOne the logo changed. This year it’s a name change to drop the “2”, so we now have: Java ME, Java SE and Java EE. Existing products (e.g., J2SE 5.0) keep their existing names.

And that’s all I can remember for now. During the conference I did wonder if I was getting enough value this year. But looking back at how much of written today, I’m thinking it may have been the most valuable year yet.