Below you will find pages that utilize the taxonomy term “JavaOne”
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.
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.
When Marketing Goes Wrong
I’m currently wearing one of the shirts that James Gosling hurled into the crowd by various means which depicts Duke aiming a rocket launcher at a weird looking demon with four arms labeled complexity. Earlier today I was accosted by a very young man who asked what that was on my shirt. When I pointed to Duke and said “this guy’s called Duke” the response was: “he’s crap. I like this guy ‘cause he has four arms”. I’m not sure that’s the reaction the designer was after….
Wireless Blues
So I’m on my way home from JavaOne and thought I’d take the final opportunity to use my T-Mobile wifi account. The coverage in SF airport was great until the whole network suddenly disappeared. So much for that. Now I’m in LA airport and the coverage is awful. My flight leaves from one end of the terminal and the wireless access is at the other end. Oh well, I have another 45 mins to kill before boarding so I can sit here and rant a while longer yet….
JDNC
I’ve been looking into creating an editor for the JDNC XML descriptor file using EditLive! for XML partly as a test case for ELX using a big and complex schema, partly as a way to contribute to that community and partly as a marketing effort (it would make for a good example of what you can do with ELX). Sadly, the JDNC schema is completely invalid so it causes a whole heap of errors to be output by Xerces and finally causes Xerces to throw an ArrayOutOfBoundsException. Since we use the schema heavily and use Xerces to parse it, that makes the JDNC schema pretty much a no-go for ELX right now (not to mention making it completely useless for anything else). I’ll have to check a few things before I can be completely sure it’s the JDNC schema that’s causing the problems (obviously the exception from Xerces should never happen either) but I’m pretty sure it’s missing some imports for schemas it references. The schema also seems to override types in a way that isn’t supported (attempting to change mixed content types to element only).
Kiss And Ride?
What the hell is a kiss and ride? I’ve heard of park and rides where you can drive a short distance from home then park and catch a train the rest of the way but a kiss and ride? I guess it’s a drop off point where you get your husband/wife (or in San Francisco your boyfriend) to drive you a short distance from home and then you catch the train and they drive home again. Still wouldn’t it be easier to call it a drop off point? Is it really that inconceivable that someone might be dropped off by someone they don’t want to kiss? Anyway, I’ve got to go find a good looking girl to give me a lift to the train station tomorrow…..
Compatibility
Chris DeBona argues that the incompatibilities between Linux distributions don’t matter because the majority of people use RedHat or SUSE so that’s all people bother supporting. Of particular note is the quote:
In the windows world, people don’t feel the need to support every version of windows, either. In the Java world we do try to support everything. We want everything to be compatible, we raise the bar so that code should run everywhere. Sure it doesn’t always work out but that’s the aim and it’s simply not good enough to lower the standards for compatibility to what the linux distributions have – it’s not even good enough to lower standards for compatibility to what Windows offers. So Chris, you obviously need to spend a lot more time in the Java community rather than the Linux community to grasp this argument.
The Great Debate
This morning after James Gosling’s keynote, was a panel discussion on the future of Java centering around whether or not it should be opensourced. Mostly the discussion was just a whole bunch of useless hand-waving with IBM saying we want it opensourced, Sun saying we want it to be compatible, Laurance Lessig saying don’t stuff with the open source licenses there are other legal means to ensure compatibility (he never mentioned what any of them were) and the users saying “we don’t give a damn either way”. The one stand out in the argument would have to be our very own Brian Behlendorf who pointed out that the key thing is more about allowing open source implementations of the standards rather than whether Sun’s implementation is opensource itself. He stressed a few times that this did require being able to make available implementations that weren’t yet 100% compliant but *not* claim that they are compliant (essentially you don’t do a 1.0 release until it’s compatible but you can have nightly builds and/or CVS available). I may be slightly twisting what he was saying there but that’s what I took away from it and it’s got to be pretty close to what he meant. So good work Brian!
XML Security Using Apache
Very incomplete notes from the XML Security using Apache session. The slides cover things better than my notes do but I thought I should save what I wrote down anyway. I gave up taking notes half way through once I realized I wasn’t really adding anything to the slides that should be available online anyway.
How To Start A Riot
Ingredients A few thousand Java developers (at 8:30am no less) 1 Security Guard A selective entry policy to a keynote speech Steps 1. Gather the Java developers at the widest available entrance and pack them in nice and tight. 2. Using the security guard, try to stop them from going through the entrance. 3. Attempt to extract the conference alumni from the crowd and allow them to go through first. I have no idea whether or not the security guard eventually let us through – se disappeared from view and I haven’t seen her again. It’s quite possible she was trampled.
Notes from Swing & Threads Talk
Notes from the session on Swing and Threads. Unchecked etc.
Scott McNealy Keynote
Notes from the Scott McNealy Keynote. May have errors etc…
Using NetBeans for Rich Desktop Applications
Notes from the “Using NetBeans for Rich Desktop Clients” session. *Very* little content in this session, most disappointing.
What’s New In The Java Desktop
Notes on the java desktop track overview session. Warning: completely unchecked, full of typos and may not make sense. Will review eventually.
JavaOne Keynote
Had the keynote by Jonathan Swartz (spelling is wrong, deal with it :P) this morning. Very marketing oriented but interesting none-the-less. He predicts that the car industry will be the next place Java technology really takes off (mobile phones being the current boom) and he’s quite probably right but I think it will take a long time for those features to filter down into the general populace rather than just being in BMW’s. Some interesting stuff in the followups as well on Java 1.5 or as it’s now to be called Java 5.0. Firstly obviously the numbering change is interesting and long overdue. It’s good to have Java use a more standard numbering scheme. It has just occurred to me however that it will break a lot of code (including some of ours) which looks for Java 1.4 and above. Code that checks for it like: javaVersion.startsWith(“1.4”) is stuffed but so is code that parses each number and then only checks that the second digit is greater than 3 (which is the trap we fall into from time to time). Oh well, serves people right for writing sloppy code. I think I’m finally interested in using Java 5.0 now too. Not sure why exactly, but seeing some of the code examples using the new features just seems to clean up code a lot. There was other interesting stuff too but I need to head off to another session.
Sitting On The Dock Of The Bay
Got some first pictures of the San Francisco trip to show off. More images in the full version…
Oh Boy….
Well I’ve spent the past four hours sorting through the sessions for JavaOne and picking out the things I’d like to attend. I’m beginning to think I should have just stayed on the Australian timezone as I have BOF sessions until 11:30pm or midnight every night. That’s before I factor in trying to catch up with Apache people and other groups at informal events. There are a few events in my schedule that I’ll probably wind up missing depending on how interesting the discussions I happen to be in at the time are and how much time I want to spend just wandering around the various pods. I expect that I’ll wind up wanting to spend quite a lot of time out of sessions but at this stage I haven’t scheduled for that as I figure it’s easier to just do it on the fly depending on what’s happening. If you want to see what my current plan is, here’s the vcs file. Of course it’s almost a guarantee that at least something in there will change. It’s all very desktop, xml and performance related with just a dash of eclipse and netbeans stuff as we may be creating a new product based on one of those in the future.
Wireless is Cool
I’m currently sitting in the StarBucks just down the road from my hotel happily surfing the web with T-Mobile. Pretty cool. Shame my hotel didn’t wind up having internet but I think I prefer taking a walk down the road and sitting in starbucks that sitting in my little hotel room all the time anyway. Most of today was spent touring around San Francisco, I seem to have brought good weather over from Australia as it was a perfect day – clear blue skys, sunny and no fog. Got a good view of the Golden Gate bridge, the city and Alcatraz then spent some time down at Pier 93. Enjoyed clam chowder in sourdough bread bowl for dinner. That was quite nice though I don’t typically like seafood.
Catch The Bus
Seriously, catch the bus. Flying in or around America is no longer a feasible proposition. There are thousands of people milling around the front entrance trying to work out which queue to get in and where the hell the end of that queue is. Then there’s a few hundred police, customs officials and various other authority figures milling around looking for anyone who looks suspicious (which is everyone if you ask me). Then to try and sort out all the mess is one guy in a red coat with hundreds of confused potential passengers crowding around him asking where to go. It’s absolutely insane. Then when you finally get through to the security check, the metal detector is so sensitive it goes off when noone’s walking through it. So if you do have to catch a plane in America, here’s my survival guide: 1. Wear thongs. If you wear shoes you’ll just have to take them off anyway. 2. Follow the signs that say “first class” then get into whatever line is shortest. They’ll either check you in out of pity or tell you which is the right line to get into. 3. Arrive early. Really early. I’m also pretty unimpressed with the whole process. At 7am I got off a Qantas Boeing 747 400, went through customs, walked over to the next terminal, checked-in, came through security and at 9am finally reach my departure gate. I turn around to look out the window and see the exact same 747 400 no more than 100 yards away. Seriously weird. Other than that I’m having a ball wandering around the airport. There’s 2 starbucks within sight of each other (I always thought people were exaggerating when they told me that) and a Burger King which is kind of thrilling for an Australian because we have Hungry Jacks and everytime you mention it some smart alec always comments about how it’s really “Burger King” but they were paid by McDonalds to change the name overseas. I know that still won’t make much sense but I get a kick out of seeing a real Burger King anyway. Oh, and there’s an actual shoe shine guy too! I thought they were just in Law and Order…. This guys pretty upmarket though with comfy chairs and a shirt with “Marvin’s Shoe Shine” on the back. For now though I’ve got to run off and make sure I’m actually at the right gate.
Sun Thing
Sun Thing Looking out the window at the moment I can see a glimpse of orange light indicating the sun is somewhere low on the horizon. I just can’t decide if it’s sun rise or sun set. It’s 10:30PM in Los Angeles and 3:30PM in Brisbane, I’m somewhere in between so I guess it must be a sun set. The trouble is I’ll arrive in Los Angeles at 7am so there’d need to be a sun rise in there somewhere and I get the impression this might be it. I guess it’s both then. UPDATE: It turned out to be a sunset as it then became dark and later there was a sunrise and it became bright again.
Have to be Crazy
You have to be insane I’ve been happily sitting around on the only chair in this airport that’s anywhere near a powerpoint happily passing time, airport security has set up a barricade just next to me and are prechecking passports and boarding passes before people get to the boarding gate. I swear the entire plane is full of primary school children from the US who are here on some young ambassador program. There’s probably 20 kids for every adult with them and watching them frantically trying to hand out passports and boarding passes looks like utter chaos. It’s also amusing trying to watch the security guards sort out the mess caused by kids swapping boarding passes so that they can sit next to their friends. I guess this is the reason you have to turn up to the airport so early these days… As I type this another mob of children from what appears to be a different group is going through the same process. I’d really hate to be on that flight…
Inspiring Confidence
So I’m multiple thousand feet in the air relying on a hunk of metal to keep me up here – you’d really want to have some confidence in said hunk of metal. Sadly, this particular hunk of metal seems to be doing everything possible to instill fear, short of actually falling out of the sky. Since I’m sitting in the emergency exit isle, there’s two seats for the crew in front of me which have a phone between them so that the crew can communicate easily. As we’re beginning to acelerate down the runway, the crew tried to use it for the first time with no success. Apparently the crew’s communication system doesn’t work. Then as we cruise happily somewhere over the pacific ocean, we discover that the toilet door is about as well made as the comms system – it fell off. Fortunately the woman inside was fully dressed otherwise it would have been somewhat embaressing. On the plus side, watching the crew try to fix it was excellent in-flight entertainment.
Extra Leg Room
Sometimes it pays to be persistent. I’d called QANTAS earlier in the week to request a seat with extra leg room because I’m very tall and have problems with my knees that makes it difficult to sit cramped up for long periods. I was told the best they could do was a back seat and they weren’t even sure if that had extra leg room. I asked again at checkin if there was a seat with extra leg room available and gave my pitiful story – the girl at the checkin counter was very nice and called downstairs to see if they could free up an emergency isle seat for me and they managed to find one. Should make the 13 hour flight a lot easier. I think the seat was really empty and was just being kept free until absolutely required but if you were told at the last minute that your seat with extra leg room was no longer available – sorry….
Too Many Choices
I’ve been browsing through the list of sessions for JavaOne. There’s 411 events listed. How the heck am I going to find time to read the abstracts of each of those let alone actually make a decision as to which I want to go to… Once I’ve gotten that far the schedule conflicts will bite….