In The Wake Of Open-Source Java, What Dies?
I mentioned that I was chatting to a reporter after the Java Libre panel yesterday. The article she wrote is now online and it’s a pretty good summary of the key points of interest in the discussion (it skips all the bits where everyone agreed in true reporter style though). I think she did a pretty good job of understanding what I was attempting to say (I elaborated more on that yesterday). We even got an actual link to ephox.com which is unusual.
The Benefits Of Open Sourcing Java For Developers
There was an interesting panel discussion at JavaOne today about the open sourcing of Java. The panel was made up of folks developing open source JVMs and a representative from Sun. Compatibility is obviously a common theme to these discussions and there were a number of mentions to just how bug for bug compatible the alternative JVMs are trying to be. It occurs to me though that if all the implementations wind up behaving in precisely the same way, there’s not really any point to having multiple implementations. Yes multiple licenses are nice for particular niches but for the average Java developer, what’s the benefit?
Extreme GUI Makeover
The session was a lot more fluff than useful stuff and often went for showy graphics instead of actual usability which is a shame. There were some good ideas though.
- Use a modern L&F – they suggested Nimbus. Gosh it’s ugly and gray. I suggest using the system native L&F (except on Linux and Solaris then anything is an improvement)
- Add a splash screen, can do this with the -splash argument in Java 6.
- Supports alpha transparency so can be non-rectangular
- Should provide a progress bar.
- They used a sepia image fading into color to show progress which looked cool but didn’t really show progress at all effectively.
- Validating Data
- Give feedback immediately.
- JGoodies can provide a small icon in the corner of the component. You can do this yourself by painting the icon in the layered pane’s popup layer.
- Custom Components
- You can improve GUIs by creating custom components.
- This is where they messed up usability in some places. Make sure your custom components are significantly easier to use than the standard components otherwise it’s better to go with what the user is used to. Also need to consider accessibility which they didn’t mention at all.
- Improve interactivity by updating search results immediately as the user changes values.
- Use cyclic gradients for improved performance, even if you don’t need the cyclic property (just paint one iteration).
- Measure text with:
- g2.getFotnMetrics() then stringWidth and getAscent
- JList has a setLayoutOrientation method which lets you use it as a multicolumn list.
- You can span text across all the cells in a row by clipping the text with a JViewPort to show just the section inside the cell currently being painted.
- You can animate the changes made when sorting by painting the animation in the glass pane over where the table is.
Being Productive With Swing
These are my notes from the technical session, “Being Productive With Swing” by Ben Galbraith. The session focussed a lot on Ben’s library that he’s creating which was a shame but there are some ideas that are worth taking away.
The techniques described below are very specific to business applications that center around forms. At the moment desktop applications are “stepping up the wow” to compete with AJAX and Swing traditionally hasn’t had this – JavaFX is likely to bring this to Swing. However, for most business applications “wow” isn’t a requirement, productivity is. In that area, no emerging platform provides material advantages over Swing with the exception of JFace and Cocoa.
JSR296 Swing Application Framework
These are my notes from the talk on the Swing Application Framework (JSR296). This is probably my favorite technology I’ve seen at JavaOne so far. It’s not trying to be overly fancy but it solves a clear need in a very simple way.
Malcolm Davis also commented on it but wasn’t impressed. Personally I think he missed the point. Firstly Malcolm, yes Eclipse and NetBeans platforms have had basically all these features and far, far more for a while and that’s the problem. Using Eclipse or NetBeans as a base for a small or medium sized swing app is total overkill and the frameworks are huge and take ages to learn and configure for your needs. JSR296 is all about defining a really simple framework that gives you just the basics. If you need more you can either add on to it or go the whole hog with Eclipse or NetBeans. Malcolm suggested a few areas he thought it should also cover:
Desktop Java
Just finished up in the Desktop Java overview session. Good information in there. The summary glosses over some stuff but I think it covers all the important information. The entire session is an overview so it’s really just identifying things that you should look to learn about elsewhere. It looks like some good stuff for Ephox and our user is coming down the pipeline.
Main points:
- Java on the desktop used to be focussed at the enterprise desktop, now it will focus on becoming far more consumer oriented.
- JavaFX is cool.
- Java 6 Update in 1st half of 2008 to include:
- JRE Detection improvements (funky scripts to get the right JRE installed, seems to bounce off sun.com)
- Install process improvements (Kernel)
- Installs just the absolute minimum components of the JRE and then downloads most common components in the background. Installs less used components on demand. Could be great, but could also cause interruptions to users as they work when new components are needed.
- Quick Starter. Loads Java files into the disk cache at startup or browser startup and tries to keep them there. Not a full JRE running but will probably be as annoying as all those other task bar icons that are wasting resources trying to do the same thing. No wonder computers take so long to load these days.
- Windows Graphics Acceleration
- DirectX 9 based pipeline.
- On by default so actually useful unlike the OpenGL pipeline which is off because of some driver incompatibilities.
- High performance for all of Swing and Graphics2D.
- Nimbus. New cross platform look and feel that’s meant to actually look good. Screen shots look pretty awful (gray is not a good choice of color scheme people!)
- Looking at media improvements in the future.
- Looks like they want to use native libraries (QuickTime, Windows Media etc) instead of a Java based solution. Seems to be a common trend so hopefully they’ll get it working seamlessly.
- Animation improvements
- Easy to apply animations and effects.
- Better timing facilities
- More components
- Date picker.
- Native file chooser
- Ability to mix heavyweight and lightweight components.
- Non-rectangular top level components
- Translucent windows
- Applications framework
- JSR 296
- Makes it easier to get standalone Swing apps started.
- Basically just removing boiler plate code, but I suspect it includes more than was shown in the talk.
- Much, much simpler than something like the NetBeans or Eclipse platforms.
- Intended to be useful for small to medium size apps instead of the huge apps that NetBeans/Eclipse platforms are good for.
- Beans Binding (JSR 295)
- new way to bind GUI components to data.
- Should remove need to know everything about Swing models.
- http://beansbinding.dev.java.net
Tip for JavaOne Alumni
Wake up earlier tomorrow. When I got here (about 7:30am) they actively grabbed me to give me the “special present” (4 port USB hub), I couldn’t have avoided it if I’d tried. Now however there are constantly long lines of people lining up to get their present and every so often they’re turned away because they’re “temporarily out of stock, but don’t worry you’ll all get one”.
You don’t have to wake up very early to beat the geek rush, and it does pay off really well.
My New Favorite Comment
One of our board members left a comment on Brett’s blog this morning and I love the way it meshes with my thinking that employee blogs is a crucial tool for senior management to keep up with the directions, understanding and thoughts of the rank and file:
Well, my friend I gotta say that whilst reading board papers a link to a blog is a welcome relief. I get the feedback I crave and welcome and also get a general sense of what is on the minds of your team.
RedMonk Sucks
Just for the record, RedMonk sucks because they didn’t bring shirts to hand out at their unconference….
They told me to blog it…
The Last Click Is The Easy Bit
I’m sitting here in Auckland airport transitioning through to San Francisco and there’s an interesting synergy to the stuff that’s coming through. First of all, I see that my rash of Twitter subscriptions (my twitter page) and my mentioning twitter in my last post has caused a few people to add me to Twitter and check out my blog.
In turn, at least one of them read a post mentioning Planet Ephox and posted it to their delicious account. That in turn prompted someone else to invite me to CommunityOne (a lead-up event to JavaOne which I’ll try to get to if I can – my flight arrives about 1pm so I’ll miss half of it). What’s most interesting there is that these extra contacts, invites and awareness of Ephox are completely impossible to track. Even if you had a sophisticated cookie system across all the sites involved, you really need to know what the people are thinking to see if you’re having any effect or whether they see good things or bad things etc. If and when you get to the point that someone makes a purchase, there is likely to be a huge range of influencing factors that caused them to get there.
Off To JavaOne
I fly out tomorrow to the US for JavaOne and after that a week working with the team in our US office. I’ll be arriving Monday afternoon US time and fly out Friday the 18th. Being based in Australia (and worse, Brisbane) I don’t get a lot of opportunities to meet tech people so I’m pretty keen to take the opportunity to talk with as many people as I can. So if you’ll be around San Francisco in the next couple of weeks give me a yell. You can email or phone on +1 (650) 292 9659 x717.
Server Problems Here And With Some Ephox Sites
In case people are wondering, there was a major failure at our hosting provider which is causing down time. Both this server and the server that hosts the Ephox release blog, LiveWorks!, people.ephox.com and the internal Ephox wiki and JIRA installations have been affected. While (obviously) this site is back up, the Ephox sites didn’t fair so well and are still down.
We’ll get them back up and running as soon as possible. In the mean time, if you see any problems here please let me know. For a short while after the system came back WordPress switched to the default theme (but with all other settings in tact) so I really don’t know what else might have been damaged.