When I was a Sun employee, I always thought there was great disparity between the tough enforcement of the Java EE TCK for appservers and what I perceived to be turning a blind eye to conformance of Java ME implementations to specs. Here's my conspiracy theory: The appserver market has long been hotly contested, and the enterprise software market must not be fragmented unless we don't mind Redmond owning a much bigger chunk, therefore we got our act together long ago and Java EE portability is a reality (if one sticks to standard APIs). On the mobile front, many handset manufacturers were deploying VMs on their phones that were either homegrown or engineered from cores supplied by Sun, IBM or other platform software providers. Besides the greater diversity of processors, OSes and peripherals complicating the landscape, I believe Sun and all the other major industry players didn't want to stifle the market by being strict on standards conformance. OK guys, I think we are coupla years past the tipping point already. ISVs want to produce more consumer and enterprise apps, and others have killer service ideas ready to go. What we really need now is the same rigor applied to Java ME implementations so that people can only claim to support Java on their phones if they pass TCKs.
I don't want to sound all negative so, now that my primary message has been delivered, let me share what I think has been getting better year after year. Let me start with an observation: 5 to 7 years ago, mobile Java games had a different version for every different phone model but in the last few years, mobile Java games have versions with relatively long lists of phone models that are supported. With JTWI introduced 2 years ago, and similar standards clustering initiatives already underway, I think stricter standards enforcement will help the mobile Java ecosystem tremendously. NetBeans Mobility capability gets 2 thumbs up from me. IMHO, it is the best IDE for Java ME development out there by some distance. OOTB, it helps ISVs to manage platform diversity by organizing all different releases. But I sincerely hope they don't rest on their laurels. I believe it is possible for the NetBeans team to bring some of the smarts behind the Matisse GUI builder to Java ME. In particular, I would like to see SFF (small form factor) UI resizing with specified limits. For example, I would like to be able to configure the Java ME GUI builder to handle resolutions ranges (eg. from 176x208 to 352x416) after which it would warn me when I try to squeeze too many widgets into a screen. For everything in the specified range, it should dynamically work just right and look just right. The capability to manage multiple releases should only be applied to major device differences, eg. like whether there is a Bluetooth antenna or not.
Padmasree had a nice slide showing 4 people being born every second and 32 mobile phones being sold every second. Assuming her data is accurate, and half the phones sold are to folks upgrading their handsets, and ignoring how many people could be dying every second ;-), that's still about 12 people more joining the SFF (and thus truly mobile) Internet every second. Assuming half of those buying PCs (~250M per year) are also upgrading, that would mean about 4 people joining the Internet on laptop to desktop form factor devices. So the growth of SFF Internet devices is outpacing its larger brethren by 3X. Now that's motivation enough for me to keep investing time learning how to build better SFF apps.
I attended a session on being productive with Swing by Ben Galbraith and learnt a few new tricks (like using CSS for Swing!). After that, I sat in on a talk on "Who's doing What in JMX?" by Eamonn McManus, the technical lead of the JMX team at Sun, and his teammate, Jean-François Denise. On the subject of JMX, if you run any decent volume of transactions that is pushing the limits of your software and/or hardware and don't use JMX yet ... what the heck are you thinking?! I've used it in some experiments and one production system and it is truly one of the underutilized gems in Java. And now, there are some REALLY nice things coming for JMX 2.0 which will be bundled in Java SE 7. To name some goodies:
- Hierarchical namespaces
- Cascading
- Event services
- Support for locales
- Annontations to define MBeans
- Custom type mapping for MXBeans
- Web Service connectors for management
I spent the afternoon attending sessions on "JSR 248 Mobile Services Architecture", "Optimizing MIDlets" and "Blu-Ray for Hollywood" but I was a bit burnt out so when I bumped into my old friend Calvin Cheng (mates in Berkeley & Sun) of Yahoo with another Singaporean, Chien Yang of the Sun Java3D group, I skipped my "Developing reliable products" session and went for coffee instead. Good thing we can get all JavaOne presos and audio tracks on the web.
The "After Dark Party" this year was as good as any other in JavaOne history. That's saying a lot since attendees really got into the "Game Room" nights when we literally took over the hotel formerly known as Argent many years ago, and lapped up the ROTFLMAO performances by headliners such as Dennis Miller and Wayne Bailey in recent years. I was having too much fun to whip out my camera (especially tough with beer in one hand and finger food in the other). Friends who know how trigger-happy I am would be surprised I didn't snap any shots of the party. Truth be told, I was too lazy to bring my DSLR and giant flash this year and I didn't think our Canon IXUS 850IS (that's SD800 in the U.S.) would do the low-lighting conditions justice. There are pictures here and here if you really want to know how the party went.
Sneaking a beer into the very handy water bottle-sized side pocket of this year's excellent JavaOne backpack, I went to the DTrace hands-on-lab that I had signed up for. Yes, yes, I have used DTrace before so why the heck was I attending this lab (LAB-9520) during the After Dark Party? The session description mentioned Web 2.0 apps so I was genuinely curious to see how DTrace can help in tuning those sort of apps. Kudos to Angelo Rajadurai and Raghavan Srinivas authoring it in such a way that intermediate users of the D language can jump straight to more advanced exercises. After I got my fill of lab exercises (and ran out of beer), I vacated my seat for people who were still coming in after 9:30pm!
Again, those of you who missed the labs or didn't attend JavaOne need not fret, the labs are all available online!
Anyway, my night didn't end here. I caught the tail end of the party, saw that there were only short lines for the 3 jumbo soft toy crane machines, so I got in line ;-) and picked up a penguin for my toddler in lieu of paying for the Happy Feet DVD before the price drops. It's really quite a sight to behold ... software engineers lining up to operate a joystick-controlled crane to win soft toys. After that, I caught the 10:45pm showing of 300 at the Metreon theatre, simply awesome!