Java News from Monday, May 7, 2007

I have arrived at JavaOne and will be reporting from here through this week. The press lounge isn't open yet, but wireless in the general areas seems fast and free. Alumni tell me the wireless is much better this year than previous years. I left my camera and card reader in my hotel room this morning though, so it will be all text today, no pictures.

Today is NetBeans Day, though there are several other interesting things going on as well. In preparation for this I am downloading NetBeans 6.0 milestone 9 before the conference gets going and the wireless network clogs up.

Milestone 9 is the 1st milestone where all NetBeans 6.0 components are available in one installer. Installer called formerly NBI becomes now the default one. You can choose on download page what support you want and then download the closest superset of these represented by Basic, Standard and Full installers. You can select what to install at installation time.

Other M9 noteworthy features to mention here are:

The license agreement is still not open source:

Software may contain Java technology. You may not create additional classes to, or modifications of, the Java technology, except under compatibility requirements available under a separate agreement available at www.java.net.

Possibly this only applies to some bundled components. I've complained about this before. When is Sun going to get it through its collective head that if you open source something you cannot impose compatibility requirements? Forking is one of the fundamental rights protected by open source.

Here's another open source incompatible clause, this one from the Ruby license:

Either you or Sun may terminate this Agreement upon ten (10) days written notice to the other party. However, Sun may terminate this Agreement immediately should any Licensed Software or Related Materials become, or in Sun's opinion be likely to become, the subject of a claim of infringement of a patent, trade secret or copyright.

The next milestone drop is scheduled for June 16. Maybe they'll get this right then.


The first event I saw on the schedule isn't till 10:00 A.M. I'm still on East coast time, and I got here before 7:00 A.M. I may have been the first person to register this morning, and I was definitely the first press registration. The registration staff couldn't figure out what to do with me. However, there seems to be an 8:00 A.M. general session with James Gosling for Java University. I'm not sure if I'm supposed to be here or not since I didn't register for it, but a couple of people looked at my badge--I'm registered as press--and no one stopped me. Act like you belong and you can get into most places.

I'm sitting in the front row (more legroom) and some woman just handed me a Java tattoo. OK, it's temporary but that's really going a little far. It's just a computer language, not a way of life. Wireless in this room is decidedly inferior to the wireless out in the hallway. Less than half, maybe less than a quarter of the audience has any Java certification by a show of hands. Rich Green promises an exciting announcement about the open sourcing of Java tomorrow.

James Gosling takes the stage. He recognizes the concern about the growing complexity of Java compared to its early simplicity. He thinks the growing complexity of Java is a result of building more complex things. There's some truth to that, but not enough. The language and libraries may need to be more complex than Java 1.0 was, but it doesn't need to be as complex as it is. It is not the simplest thing that could possibly work. Gosling also blames this on using Java for everything from real time to the cellphone to the desktop to the server. He's right about that too. "Learn once. Work anywhere." He thinks that's a good thing, but I'd rather have smaller more focused languages. We don't all need to speak the same language.

There's now a quick Dojo demo. Like a lot of AJAX frameworks, and Flash, and Java applets, they're missing the point of the Web. There are no URLs, and nothing can be linkd to or bookmarked. Maybe you can design your Dojo apps so they can be linked to and bookmarked, but I get worried when it doesn't even occur to the framework designers that this is something worth considering. The Web is not just a delivery mechanism for thick client client-server applications. It has an architecture and user interface metaphor of its own that you ignore only to your own peril. GWT at least realizes there's an issue here, and is working on fixing it.

Gosling: "I never like to run FCS software"

Greenfoot comes out of the BlueJ Project. It motivates beginning student programmers by letting them write video games. mygame.java.sun.com has a programing contest this week. Robo Sapiens high end models include a sealed Java VM.

Gosling says Java is now much faster than C and C++ for numerics and heavy data structures code with lots of memory access. Ruby is 2-3 orders of magnitude slower. JRuby runs about 2-3 times faster than Ruby, for the parts that are finished. The Java Real Time VM 2.0 will be free "real soon now."


I found the press room and I'm recharging now before the 10:00 A.M. keynote. Oh damn. My laptop is making some whining noises. I planned to replace this thing in a few months, but I'd rather not have to do it right now. At least the Apple Store is close.


The Community One Keynote is a bit of a mess. Seems the registrars forgot to put some necessary stickers on many peoples' badges so they're getting turned away at the door and sent back across the street. First session and we're already late. There's no wireless in here, and I can't say much for the conference's taste in elevator music either.

Exec VP for Software Rich Green kicks off. Sun is the number one contributor to open source worldwide, three times more than IBM. Simplicity and access trumps technological perfection. That's why the Web works despite broken inks and lack of referential integrity. See Green's blog tomorrow for more.

Tim O'Reilly is next. We all use open source and Linux because we all use Google. Most of the net's killer apps like Google and eBay are not open source, because they're data aggregators and services, not software. They still get network effects from user contributions as the key to their market dominance. The key issue is who owns the data. Can other users use Google or Amazon's user contributed data on an equal footing? He references Clayton Christensen's Law of Conservation of Attractive Profits. If software is no longer the proprietary piece, then the data aggregation is. A large, hard-to-recreate database like Navteq's offers a chance of Intel like single source lockin.

Perpetual beta, immediate web deployment, and two-pizza teams are important. Live software.

O'Reilly's asks three questions of Sun (represented by Green, Tim Bray, and Ian Murdock):

Bray hates the term "user-generated content". He's not a user and he doesn't generate. He's a person who writes. The term is an attitude problem. Bray doesn't go quite this far, but the problem is that entrepreneurs want to get content for free and not pay anybody for it. Green wants to know if a phone call is user generated content or communication. He thinks the lines are blurring.

Now come some user questions: Is there any limit to what Sun will open source? Green: only edge conditions. Pretty much everything should be open sourced.

What will Web 3.0 look like: Tim O'Reilly suggests no typing. Partially this means voice and gestures, but mostly it means collecting user behavior rather than explicitly supplied data. Most successful Web 2.0 sites (Wikipedia is a notable exception) analyze what users do for their own reasons and self-interest rather than asking users to explicitly submit to the site.

Will Sun embrace other languages than Java? Where does Java fit into the Eclipse ecosystem? Green: 100 languages run on the virtual machine. Ian Murdock: Why does the operating system still matter?

What's stopping user generated databases from competing with proprietary databases? O'Reilly thinks it can be done against old-style databases not user-created (e.g. Navteq), but critical mass will lockin people to EBay, etc. Bray: Wikipedia is cutting into Google. He goes to Wikipedia first for proper nouns.

Why do Flash and AJAX beat applets? Someone,--Green?--says "Wait 23 hours." That's suggestive. (I missed exactly who said that, but it is a quote.) Could this be Project Flare?

There's some concern about the monetization of open source without compensating developers. Sun is mostly monetizing code it itself developed (unlike a lot of Linux vendors) so they don't have as much of a problem here. However Green doesn't think the current model of monetizing others' code is sustainable in the long run.


Some brainiac got the bright idea that it made sense to scan every single person's badge before letting them into a session, even a keynote. And for the entire room they have two scanners. Predictably there's a huge bottleneck outside the door and the schedule is slipping more than a minute per minute. Fortunately some relatively sane person propped open some other doors so most of us can sneak in without going through the badge scanning line.


Jeet Kaul, Vice President, Developer Products and Programs, at Sun says there are 55,000 NetBeans mailing list subscribers. That's a little more serious than the number of downloads. I've probably downloaded NetBeans more than a dozen times (twice this morning) and never used it more than ten minutes at a shot.

Jonathan Schwartz is asking Rich Green some tough questions. What's wrong with Java on the Desktop? Green: Consumer desktop and enterprise desktop are not the same. We need to do a better job of Java for regular people, not coders and wall Street traders.

Schwartz: license proliferation is a problem. Java is GPL. NetBeans is CDDL 1.0. Solaris is CDDL also. Green misunderstands the GPL. He seems to think it forbids incompatible forks. He's wrong. It doesn't. It merely allows such forks to be merged back into the original tree.

Schwartz is echoing Green's earlier comment about how YouTube style efforts to monetize the long tail are unsustainable. This seems to be a high level theme at this conference. (Schwartz misunderstands how the New York Times works. He thinks they employ most of the people who write for them. In fact, they don't. Much, probably most, Times content is licensed from others: wire services, other newspapers, and freelance writers.)

Sprint demoes a custom version of the NetBeans 5.5 IDE. Then they demo their phone. Nothing exciting or interesting though. Phones won't be an interesting development platform until they get unlocked so users can install software without carriers' permission.


There's a box lunch. The Java Posse is going to talk live. The conference staff haven't learned their lesson from the last session. They're still trying to scan everyone's badges at the door. I snuck in another door again. Wireless keeps cutting in and out. I may have to hop over to the press lounge to upload all this.

Top 10 missing features from Java are pretty predictable.

They suggest nuking 10 APIs from Java. Most of these I've suggested myself, but interestingly they want to nuke java.beans and invent a new component model not based on naming conventions. They also want to redesign/replace the Swing Look & Feel API. They claim it makes Swing a closed API, though I'm not sure what they mean by that. These are interesting ideas I haven't heard before.

Top 10 software industry pet peeves


Next session is a demo of NetBeans 6.0. Interestingly, he's running it on Windows (which I've never seen before) and it looks almost exactly like Eclipse does on the Mac. The differences are a lot more apparent when you run NetBeans on a Mac. There are some minor nice features, but nothing that's worth switching IDEs for.

The next demo is Schliemann, the NetBeans support for non-Java languages such as Java.

Why does everyone insist on doing their demos in a 10 point font? In even the smallest room 18pt is an absolute minimum. 24 pt is more plausible, especially in a room this size. No one past the first three rows or over the age of 24 can read a word on the screen. The NetBeans default fonts may be good for a laptop screen, but they are ridiculously small for a presentation.

The next demo is the NetBeans debugger. He's got a different laptop and his fonts actually border on legible, but they don't quite get there. His package navigator is big enough but the code font isn't. Eclipse has a problem in that there are about 32 different font preferences and you have to change all of them when shifting to presentation mode. Does NetBeans have the same problem? I don't think so, but I don;t understand why so many presenters are having such trouble changing the font sizes.

The next demo is Jiri Sedlacek with the NetBeans profiler. This is now bundled with the IDE by default. This is one of the areas in whcih Eclipse has traditionally been weak. (I use the third party JProfiler.)


The next session covers the NetBeans Matisse GUI Builder. Sun's been hyping this pretty heavily for a while now, so I'm curious to see how well it works.


I'm not sure everyone is having the same trouble with the wireless network here that I am. I wonder if it's just the relatively old Mac card? Or the TiBook industrial design? I wonder if there's any antenna I could hook up to this that would improve matters. Some people have reported success with external PC cards. Any ideas?


The session's tentative topic is Matisse GUI Builder Chapter 2, First up this session is JSR 296, the Swing Application Framework. This proposes a basic application framework that can be learned in an hour. Swing works at the level of individual components. Swing Application Framework puts the existing components like JFrame and JMenu together into a complete (if minimal) application that can be extended with custom code. The Matisse GUI Builder can generate applications that use this framework. Swing actions tie into this in a way that isn't quite clear, but apparently simple ActionListeners aren't sufficient. Actions can easily be placed into background threads, outside the Event Dispatch thread.

Next, Shannon Hickey talks about JSR 296, Beans Binding. This is just about keeping the properties of two different beans in sync. This will require Observable variants of List and Map. This all replaces property change listeners; and this is not for JavaBeans. It works for other kinds of objects tooo.

Next up there's a discussion and demo of the Matisse GUI Builder. I didn't exactly follow along, but I did try try this out on my PowerBook by using NetBeans to generate a Swing Application Framework application. It's slow as spit, and the busy cursor is non-native. It does seem like it might save some work, but I find comments like this in the generated code:

     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.

If that's the case, this code should be kept in a separate file. Generated code should not be mixed with application code. Furthermore, I am concerned that this locks me into NetBeans as an IDE.

NetBeans does seem to keep me from actually editing the commented section. It's read-only. However, the refactoring is unreliable. A simple rename refactoring on a package broke a lot of code including some generated code which I know can't fix. That's probably a bug I should report.

There's not enough space on even my widescreen notebook to use this. Probably it would be more manageable on a large desktop monitor. However you really do want a widescreen display, not a mere 4 by 3.

Labels cannot be edited in place. That's annoying.

Overall Matisse looks like a good first effort with some promise, but it's not ready for prime time yet. The Swing Application Framework also looks promising, though I need to work with it some more first.


The final regular session is JRuby: What's the Fuss? There's a brief intro to Ruby. NetBeans has one neat feature I've never seen in an IDE before. With Ruby (though apparently not Java based on my quick tests) the parentheses, brackets, braces and such are auto-closed as soon as you open them. That's not the new new feature though. The problem with auto-closing is that I almost always type write through it without noticing the automatically inserted closing brace, and end up with a syntax error. In NetBeans, if you type the closing brace/bracket yourself Ruby throws away the one it inserted. Very smooth. The rest of the ICDE seems as expected. I'd say this is at least equal to TextMate (most people's preferred Ruby editor). That NetBeans is open source, and runs on multiple platforms makes it superior.


James Gosling gives the day's closing keynote. "I don't know what's happened to JavaOne this year; but it's kind of extra super crazy." The easy stuff is now easy as a result of tools. "I personally have been deeply in love with NetBeans. I gave up emacs a number of years ago." He's trying to get all his "old fart friends" off emacs and vi. The client is going to be a big focus this year. '

There's a NetBeans magazine and free CD.

Sun's Henry Story and Tim Boudreau do a bit about the Semantic Web. They try to pull in structured data from existing systems like blog engines without requiring more explicit work for the Semantic Web. Web 3.0 is the Semantic Web. This isn't as far off as I thought from Tim O'Reilly's prediction this morning.

Geertjen Wielienga shows the NetBeans Movie Player. It's based on JMF, which means it isn't cross-platform. :-( VLC does better. It is also built on the NetBeans platform.

Finally Bob Beasley demoes D.O.R.K: Dog Oral Reward Kit, a product that establishes a link between a dog and the Internet for training purposes. This one's a little tongue-in-cheek. He says, Sunspots are fun. (I don't think he's talking about literal sun spots.)


If I'm still awake, I'm going to head over to the W Hotel for the Groovy Meetup. I'm not a big fan of Groovy, but it's often worth checking out the things you don't like to see if you missed anything. However, unless they have wireless there, if anything interesting happens at the Meetup it will have to wait till tomorrow.