Saturday, October 03, 2009

JCP Death spiral or "Normal for a Maturing Language"

140 characters wasn't enough to write my thoughts down on Stephen Colebourne's blog post about the JCP I came across via @snoopdave. Since I live in Java land I've thought a lot about the JCP, Java, and how things will be once Oracle absorbs Sun. No one really knows what Oracle may, or may not do with Java and the JCP but one thing I'm certain of is that things are changing whether Oracle does anything about it or not.

I've been following the long saga between The Apache Software Foundation and the Sun over Apache Harmony for a while now and there are definitely problems with the JCP that need to be resolved. Colebourne's post shows the declining trend in numbers of JSRs submitted to the JCP and brings up the question as to whether this is a sign of the times for the JCP or something normal for a maturing language such as Java.

I think the answer is a bit of both. As Colebourne points out, his chart only includes new JSRs and not ones that are in maintenance mode or being updated, such as Java EE 6 for example (which connects about 30 other JSRs, most of which are not new). Since Java is a large platform that has been around for quite some time now that seems very normal to me from a mature language.

The other part I'm starting to see comes more from how other standards outside of Java come about. To me, the JCP often is done in a backwards sort of manner where the spec is defined before any real code has been written. EJB is a good example of a spec that was very complicated and had to go through several painful revisions (Ask Java devs about EJB 2), before we started to see a push to make the spec simpler (EJB3). This sort of spec first code later attitude seems to be challenged more and more by the rough code, general consensus crowd. A couple of good examples that come to mind are Spring and OSGi which both came about outside of the JCP and both now have JCP experience in different ways.

Rod Johnson of Spring also believes in rough code, general consensus when he wrote about his and Spring Source's approach to the JCP. This move towards proving technologies and techniques before submitting a JSR is something we will see happen more and more as Java progresses. JSR330 - Dependency Injection for Java, is a good example of this happening. JSR330 combines the knowledge learned from Spring and Guice to define some basic annotations for Dependency Injection in Java.

In the end, I'm glad to see fewer JSRs being submitted and giving more time for techniques and technologies to adapt and mature before working through the JCP to define a standard. Now all we need to do is get more people to experiment with closures and reified Generics...

Thursday, January 29, 2009

Impressive = KeyJnote

I'm glad to see that KeyJNote has returned as Impressive. A while ago it seemed like KeyJNote had fallen off the face of the earth, but now its back with a new name. I'll have to try it out some more now that I can find it again.

Monday, January 12, 2009

Ubuntu on a Stick

I got a Patriot Xporter 32Gb thumb drive for Christmas and I finally got around to installing Ubuntu 8.10 on it. This was my first experience with installing any Linux distro on a thumb drive and booting from USB so it has been an interesting experience, here is what I encountered when trying to get my thumb drive working.

8.10 USB Startup Disk Creator

Of course, the first place I started was the USB Startup Disk Creator, which has been available since Ubuntu 8.04. The process is simple:

  • Popped in my USB drive.
  • Went to System>Administration>Create a USB Startup Disk
  • Selected my USB drive and selected the option "Stored in reserved extra space"
  • Adjusted the extra space slider to the full 32 Gb
  • Clicked "Make startup disk"

Easy.... and slow. It took a pretty good amount of time for the drive to be completely setup. Nothing too bad, but enough to get up and find something else to do for a while. Unfortunately something went wrong in the process or my laptop is messed up (which it could possibly be). When I restarted my computer and selected the USB drive as the primary boot device, I would only get that the drive was corrupted. I tried to troubleshoot the problem and also tried to recreate the startup disk to no avail.

I'm not sure what happened, but I'm pretty sure its something on my end (perhaps the USB drive) and not that of the USB Startup Disk creator. Fortunately, I found an alternative method that I did get working for me.

UNetbootin to the rescue

While searching around for clues to my problems from the startup disk creator, I ran across UNetbootin so I decided I'd give it a try. Here are the steps I took with UNetbootin:

  • Downloaded and started UNetboontin on my XP laptop.
  • Downloaded the Ubuntu 8.10 iso - (I actually already had an iso on the laptop, doh)
  • Selected my Distro - Ubuntu 8.10
  • Checked Disk Image and pointed UNetboontin to the Intrepid iso
  • Selected my USB drive as the device to be installed to
  • Pressed ok and sat back

The UNetbootin process was extremely easy to follow and it seemed to me that it took less time to format the disk and get the USB drive set up. After I finished, I rebooted XP and switched the boot device to USB again. This time it dropped right into the Ubuntu live menu where I started Ubuntu right up. Success! Both methods were extremely easy to use and weren't very time consuming.

Ubuntu from a thumb drive

Ubuntu takes quite a while to boot up from my thumb drive, but once it does its very responsive and quite fun to work with. Unfortunately you don't want to do too much disk intensive work since it seems like the writes are a little on the slow side, but bearable. Its been really fun to set up my own portable Ubuntu install with a decent amount of storage. In the coming months I'll try running the portable install on several computers to get a feel for how actually portable it is. For now though, I've been very pleased with the results and I look forward to using this as my portable Linux haven from now on.

This also has prompted me to consider picking up a couple 4 Gb thumb drives so I won't have to burn another install disk. I hate having so many piles of CD-Rs with different distros on it when I could just slap it on a thumb drive and go. (unless I can't boot from USB, but thats besides the point) So congrats to the Ubuntu team on a lovely tool as well as the Fedora team who helped motivate the Ubuntu team to improve their USB install tools as well.