JavaOne 2011 Day 2
Here I am, on my second day of Java One. I live in the residential part of San Francisco and get to the conference on a battered “express” bus that stops at every block, starting from the ocean until it reaches mine. Then it goes straight downtown, but by the time that I get on, it is standing-room only. I make it to the keynote frazzled but just in time. Today, I realize that the empty chairs labeled “Oracle Press” are not for the publishing division of the Oracle corporation but for scribblers like me.
The conference organizers are on a roll with the “baffle the audience with a pointless intro” meme. This time, it was a fellow from Juniper Networks who admonished us earnestly that our apps need to talk to the Network, tell it what our needs and aspirations are, and reap untold benefits in return. I got his point, and would have gotten it in five minutes instead of thirty, and I'd be glad to translate it into action if he had given us the tools to do so, like (hint, hint) a Java API, the kind of stuff one might expect at a (cough, cough) Java conference. Next time, I'll just skip the first half hour. I can learn.
Afterwards, it was fine. Adam Messinger introduced the preview of JDK 7 for the Mac (applause) and lauded the fact that the JCP was back on track. He said that over a million people use NetBeans actively, and that Oracle loved it. I really think they do.
JDK 8 is projected for a 2013 release, 2 years after JDK 7. After that, they envision a 2 year cycle for JDK releases, just like it was in the olden days. That makes sense.
We now have a good idea what is going to be in JDK 8: closures (AKA lambda), modules, date/time, Coin 2, and the usual miscellaneous library changes. It's ambitious but doable.
And then there is Java FX. Numerous people told me (despite being told not to say anything to anyone with a press/blogger badge) that Swing is being put out to pasture, that nothing will happen to it except critical bug fixes, and that any client-side Java development should transition over to Java FX.
Oracle wants to open-source JavaFX, and they want to standardize it through the JCP. I think that is excellent. It is to their credit to have stuck with the good parts of JavaFX throughout a rather rocky history.
What is not so excellent is that they want to do the standardization after they ship it, “co-bundled with JDK 8”. It would be very difficult to change a product after it has been shipped to millions.
We have learned a great deal in recent years about standards, and how they function. Rubberstamping doesn't work too well (OOXML). Standardizing in a vacuum doesn't work too well (JSF 1). It's much better to take an existing product and extract the best parts (Hibernate -> JPA). JavaFX is at the part where it is ripe for being harvested for the best ideas, by a group consisting of the stakeholders who need to live with it for the next 20 years or so. The enterprise users who want to deploy it on something else than consumer laptops. The folks who want to use it on embedded devices. The ScalaFX and GroovyFX library providers. The time to start the JSR is now, not in 2013.
Maybe I am barking up the wrong tree? Maybe desktop applications are going the way of the dodo bird? With Windows 8 and Metro, Microsoft seems to say that the traditional desktop is dead, and we need a skinnable, lightweight, touch-oriented UI instead of WIMP (windows, icons, menus, and a pointing device). Like iOS and Android on cell phones and tablets. Or maybe it's all going to be in the browser, with HTML5? That's the idea behind the ChromeBook which gives us just enough OS to launch Chrome. In all those scenarios, client-side Java as we know it doesn't have a chance (except perhaps in vertical markets), and it doesn't much matter what happens with JavaFX. At least with the module system, it will be easy enough to suppress.
But my feeling is that there is a continued need for the desktop. Information consumers won't care, but information producers do. Someone needs to write code, write books, do art layout, run complex calculations. The desktop has been pretty well optimized for that. Java and JavaFX have the chance to dominate that market while everyone else chases consumer tablets. So, I hope that Oracle builds a community that shapes the design of JavaFX. Letting go and opening up is tough at first, but as the EE space has shown, the rewards are great for those who remain patient.
That's been a long article. The big news is that Java SE is back on track with a good plan behind it. I have more tidbits in my notes, but they are fairly minor in comparison.
At the JCP party, a bunch of us talked about the good old days of 2000 page reference books like Core Java or Graphic Java. Those days seem to be gone for good. Everyone said that nowadays one looks differently for information. Solve a problem and move on. Google. Safari. Blogs. E-books. Last year I was on sabbatical in Vietnam, and I didn't bring any paper books. I thought I'd miss them, and I did at first, but now, I'll take a PDF any time. It's easier to search.
That's why I am writing “Scala for the Impatient” differently. No long-running examples. Each page needs to stand on its own. Is that good or bad? It's certainly different. What do you think? Do you long for a complete reference on Scala, HTML5, JavaFX, whatever? Or do you want recipes and tips?
On a final note, when we returned from Vietnam a couple of months ago, we brought with us the three young cats that lived on the roof adjoining our house. We had been feeding them and brought them here since it didn't look like they'd be making it on their own. Well, actually, make that seven cats. One of them was pregnant and gave birth to four adorable kittens. Lots of pix here. Oriental shorthair. Charming and low maintenance. If you live in the Bay Area and are interested in one, please contact me or Wonder Cat Rescue.