Saturday, May 31, 2008

Identity Management Roadshow

Looks like Sun is promoting the Identity Management Roadshow on their identity buzz blog. I'm on the dance card and will be speaking about customer deployment experiences. Stop by if you are interested and say hello.

Labels: ,

Friday, May 09, 2008

JavaOne: Virus Alert!

Found this message from the JavaOne conference team in my Inbox this morning.

The JavaOne conference team has been notified by the San Francisco Department of Public Health about an identified outbreak of a virus in the San Francisco area. Testing is still underway to identify the specific virus in question, but they believe it to be the Norovirus, a common cause of the "stomach flu", which can cause temporary flu-like symptoms for up to 48 hours. Part of the San Francisco area impacted includes the Moscone Center, the site of the JavaOne conference which is being held this week. We are working with the appropriate San Francisco Department of Public Health and Moscone representatives to mitigate the impact this will have on the conference and steps are being taken overnight to disinfect the facility. We have not received any indication that the show should end early, so will have the full schedule of events on Friday as planned. We hope to see you then.

Please see the attached notification from the Department of Public Health.

For further information, as well as Frequently Asked Questions related to the Norovirus, please visit the San Francisco Department of Public Health website at

A conference like this is an epidemiologists worst nightmare. Nothing like having thousands of potentially infected patients all about to board planes in a few hours.


Thursday, May 08, 2008

JavaOne: The power of Groovy Builders

I attended two talks on Groovy Builders yesterday that clearly illustrated this power feature of the Groovy language.

The basics on builders was covered in a late night BOF "Cooking Your Own Groovy Builder: A Step Forward into Domain-Specific Languages" given by Andres Almiray and Ixchel Ruiz. They reviewed builders for Swing, Java2D and the generic ObjectGraphBuilder which help to take a significant amount of toil out of working with Swing, Java2D, or creating generic object graphs for testing. Builders are also used for creating HTML or XML documents using syntax like:

html { head { title "My HTML Document" } body { h1 "Hello World  p "Isn't this nice?"} }

That's a useful way to express structure using a syntax that is essentially added to the language by implementing a Builder. Builders are not limited to just generating code or data. In "Groovy on a Cloud: Testing Java™ Platform, Enterprise Edition (Java EE Platform) Applications on Amazon EC2", Chris Richardson showed how he created a domain specific language, using Builders, which can be used to provision Amazon EC2 instances by describing them in the DSL. The technique is described in a blog post. Really impressive stuff.

Labels: , ,

Wednesday, May 07, 2008

JavaOne: Great Turnout for Groovy/Grails Talks

I'm really happy to see a big interest in Groovy and Grails this year at JavaOne. Last night I attended Guillaume Laforge's "Grails in Depth" talk and today I sat in on Scott Davis', "Groovy, the Red Pill: Metaprogramming--How to Blow the Mind of Developers on the Java™ Platform" session. Each of these sessions were packed so hopefully that means the already large community around these technologies will continue to grow.

I've been using Groovy and Grails for a long time now and have developed several production programs as well as a reporting application linked to Basecamp. I love the language and this web development framework. It is an interesting contrast to JRuby and Jython in that there seems to be much less cognitive context switching when using Groovy. One can write Java (quite literally) in Groovy and slowly make the migration of programming style to a more Groovy sensibility when you are ready. Not the case if you are using JRuby or Jython. Not that there is anything wrong with these languages, I use Python almost daily, but shifting to a dynamic language from Java has to be easier if you decide to start with Groovy.

It's a great time to get involved in dynamic languages on the Java platform. There is so much choice and power available.

Labels: , ,

JavaOne: Wednesday Keynote

Thomas Kurian Oracle's SVP for Server Software, to talk about Oracle's efforts related to Java. In his intro he warmly welcomes the BEA team to the Oracle family.

Oracle sees developers wanting standards based toolset and single integrated design time tool. Their view obviously is that JDeveloper is the realization of these goals. The JDeveloper demo is mildly compelling. They take an existing web application that tracks sales and update a boring table display with a dynamic chart. It's all wsywig/drag and drop. They really have some nice tooling for JSF. The graph can be rendered using different technologies depending on the actual destination. The default is Flash but for a mobile device like the iPhone the graph would be delivered as PNG or JPEG which was demonstrated. The funny thing about the demo is you have to decide that this change actually makes the application better not just sexier. Oracle is giving away a plugin pack for Eclipse developers to give them a lot of the JDeveloper experience demonstrated in Eclipse. Not much detail about where to get it, nor how much functionality of JDeveloper is represented in the plugin set, but it is completely free.

Kurian also demonstrated integrating forums, discussion groups, and document repositories into their web portal application that pulls in other information regarding the orders processed in the app above. It then allows drilling down to forum posts about the order, to documents, and social network data to allow you to communicate with anyone related to the order. This communication can happen via IM or VOIP all integrated to the portal environment. Again kind of neat and it makes for a great demo. The technology to do this is pretty simple.

Some of the underlying technology is Oracles SCA SOA infrastructure. It is quite buzzword compliant and the demo shows how you can drill down from the running application, to an individual order being processed to see where in the workflow the order is stuck. The workfow is built using a graphical tool. However this is Oracle's tools not BEA Aqualogic. BEA's tools (formerly Fuego) are in my opinion simpler to use but at this point they are not integrated. No surprise since the merger is so new. It will mean an interesting state of flux for both BEA and Oracle customers in the mean time. Part of the demo integrated Aqualogic via a web services interface.

A surprise for me is Kurian's demo of Oracle's grid computing products. They are showing is BEA technology to run JRocket on a Hypervisor eliminating the OS altogether. This is certainly some of the more interesting WLS technology. They are showing some Oracle technologies, App Server and Coherence Data Grid, as well as WLS server running on top of a virtualized JRocket JVM grid. They also demoed the management console for the grid which was web based, allowed for dynamically starting/stopping nodes, and full monitoring of performance in the Grid. The console also plugs directly into the JRocket JVM which would allow you to tune garbage collection, etc. However they also have the ability to use a real-time version of JRocket to make GCs more deterministic. They demoed the ability to change GC on the fly in JRocket. Pretty sweet but I wonder what all of this would cost a customer? My guess is that it's not cheap. It's also difficult to see how most customers would have the technical wherewithal to actually perform this level of tuning. Still it is really cool technology.

Labels: ,

Tuesday, May 06, 2008

JavaOne: Glassfish V3

Now here is a project that has made some big strides. Glassfish V3 has come a long way.

Glassfish V3 is not your fathers application server. It's really more like an application server erector set. Its small, fast, and allows you to roll your own services into the application server you want to run, not the one provided for you by the software vendor. It consists of a small kernel that allows you to load modules which expose services to the kernel. These services include basic web serving, JRuby/Rails, Grails, Java EE, and a pure Web Services stack based on Metro. You can run one or more of these containers simultaneously.

It is interesting to note that last year V3 used its own module management system in the kernel called HK2. Today it still runs HK2 but a layer has been built to allow for loading OSGi modules. This is the second time today I'm hearing that OSGi is making its way into more Java projects. Spring 2.5 also uses OSGi for module management.

Embedding V3 was also demonstrated. V3 was used as a replacement for Jetty in both Grails and Maven to support development and testing. This stripped down version of V3 eliminates most of the module management (and OSGi) but it provides a fully functioning container that can be used right in the edit-compile-test development cycle. Here is the kicker. In most development environments you don't develop on the platform you are deploying on. Most people don't deploy their Grails app on the embeded Jetty for instance. However with V3 you have essentially the same container being used for development, testing, and production.

Kudos to the V3 team!

Labels: ,

JavaOne: More Effective Java

A lot of the value of Effective Java examples are to reduce the amount of thought when you have to go back and change the code you've just written. Sure code has to run, be efficient, and yes look elegant, etc. but in real world situations you really have to think about those that come along afterwards and work on your code. Its sort of moving from being a smart-ass when you code to being a mensch. This sort of selfless programming is hard but extremely worthwhile. Leaving tests behind is a good thing as well but leaving behind code which is easy to maintain is probably worth more than a whole suite of test cases. That means thinking about how a person would maintain or extend the code you just wrote. You have to put yourself in the shoes of the next guy. That's probably a very good coding habit to develop.

Second Edition of Effective Java is out. It's expanded to include more work on generics, concurrency, enums, etc. Buy it and learn how to be a Java mensch.


JavaOne: Java SE: A Youthful Maturity

A few interesting trends Java language usage is up as is scripting language usage. The largest increase in scripting language use seems to be Javascript. No surprise considering all the Ajax flying around these days.

SE 7 will include dynamic language support at the bytecode level as well as more modularity features. Modularity will be provided using the Java Module System which is supposed to be simpler and provide some way to integrate other module systems such as OSGI. It should also allow for breaking down the monolithic aspect of Java SE itself.

Breaking up SE will introduce formal subsets called profiles, e.g. Java SE "Headless" which would remove all of the GUI related code. That would slim things down a bit for app server installations.

Saw a demo of VisualVM. Nice tool. First time I've seen it but looks valuable for debugging issues in the JVM.

JRE penetration is very high, near 80% of desktops out there have the JRE. 100 Million downloads in March alone and the auto-update activity is up. Those are flash-like numbers. However the downside is the JRE is a huge download. Sun needs to get cracking on that module system.

Labels: ,

JavaOne: Tuesday Keynote

Gosling designed T-Shirts were flying early in the keynote. I guess liability insurance caught up with the T-Shirt Flinging machine contests of the past. Too bad. Still JavaOne is now officially in motion. 75 hours of sessions. This is always a technology marathon.

Gosling and Gage showed a neat demo of distributed sensor network installed by Sentilla Their motes are all over the place in moscone measuring heat and other biometrics showing where people are in the conference. Interesting web site actually shows each session number with larger session numbers indicating more people in the room. The device is a lot smaller than a Sunspot.

Lots of cool RFID gadgets that link directly to all attendee badges all wired to Nokia phones. These devices are used to scan people in link before you get into the session. They are also showing off devices that measure the CO2 and also measuring electrical usage of the rooms in the Moscone center. All of them Java powered or displaying data using Java and JavaFX.

Rich Green, joined by Ian Freed showed off the Kindle which runs Linux and Java. I just bought one, but it's back in my hotel room. Really cool device but too many buttons. They need to simplify the physical interface.

Rikko Sakaguchi from Sony Ericsson announced nothing and showed a lame video. They use Java in their phones but so does everyone, errr, except Apple.

There was a somewhat embarrassing demo of a Facebook application delivered as an applet. The applet was not working in the browser, then crashed when the application was dragged to the desktop, and did eventually show up on the phone. The demo gods were not smiling on JavaOne. This demo sort of showed why people are picking Flash/Ajax for this kind of stufff.

JavaFX demo seemed to run better. There was a cool demo of an app that will browse Flickr tags. Still not earth shattering except for an interesting demo using HD video. Not practical but interesting.

Rich Green showed a roadmap for JavaFX which includes shipping JavaFX Desktop SDK in July08 and JavaFX mobile available in Spring of 09. That's pretty far out for mobile developers. I'm shocked Sun hasn't made more progress with FX since the last JavaOne. Not that I'm betting JavaFX is the next breakthrough technology but still what have they been working on?

Rich Green also went over growth numbers for Glassfish, MySQL, and Netbeans. Good strong download numbers all around. OpenJDK is also now shipping on Ubuntu and Redhat distros as well as others. That's good news.

Project Hydrazine is a new project Sun is releasing *after* they deliver JavaFX. (Summer 09?) Not exactly sure what it is all about. Looks like something like Java Enterprise System. He also mentioned Project Insight that provides some way to monetize Hydrazine or JavaFX technology. No details on this at all.

Jonathan Schwartz is now up talking about expanding the Java platform a wide as possible. To all devices. Java will run everywhere. They want to make the developer a compelling experience. They want to give developers the ability to instrument what they develop and distribute (Project Insight). Sounds like an "open" DRM? (Is that an oxymoron?) This will also all be free.

Neil Young walked out on stage! He's releasing all of his life's work on a BlueRay disc set. He is finally happy with BlueRay sound quality all with BlueJ navigation. This stuff is really cool. It's like navigating through an old music archive. All the music is very high resolution. All of it remastered. It's going to be released on 10 discs! If anything gets missed they will update it on line. Of course he's still making music, and I'm a big fan, so let's hope there are lots more updates in the future.

Neil Young also is using Java technology in his Linc-Volt car project.

Nothing really major announced. Sort of the same saw we've heard in the past about expanding Java. I think Neil Young saved it for me.


Monday, May 05, 2008

CommunityOne: Amazon EC2 and OpenSolaris

Sun is apparently poised to support Open Solaris on Amazon EC2. More information is available at I've registered but haven't heard back. There are some limitations. The initial release only supports the 32-bit EC2 instances so that actually limits what you can do.

If I get a hold of the AMIs I'll try to post some notes on the experience.

Labels: , ,

CommunityOne: Ruby Panel and Python Panel

These two sessions were interesting in that the Ruby/JRuby project at Sun has made a ton of progress in the past few years. JRuby has expanded the Java platform by providing not only a first class Ruby implementation hosted on the JVM but also has helped to establish Netbeans as arguably the best development environment for Ruby and RoR projects. Not bad. Plenty of good work being done.

Python/Jython at Sun is just getting started. Jython will need to be advanced to match the latest Python language version and there will need to be performance improvements but the good news is there is a lot of work from the JRuby group that can be leveraged to accelerate the development of Jython. Frank Wiezbicki said it best, "...for every decision there are four dead-ends we won't have to go down, because they have been there..."

There was an initial demo of Django running on Jython. I didn't think that was even possible with the latest Jython. I should have asked if that was actually something someone could download.

Ted Leung gave a sketch of what they want to accomplish with the C implementation of Python. Making Solaris the best platform to run Python on is certainly in the works but also things like standardizing DTrace probes for the standard C implementation is a great idea.

It's going to be interesting to track what Ted Leung, Frank Wiezbicki and the Python community can accomplish.

Labels: , ,

CommunityONE: same app 3 ways

Just listening to a talk on building the same app using JPA, Spring, and then Seam. Not the most dynamic talk, no actual coding going on, just a basic slide walkthrough. Nice to see all of these frameworks supported on Glassfish.

They should have done a comparison between JPA/Spring/Seam and a dynamic language framework like RoR or Django. So much less code using Ruby or Python. Not that there isn't a place for some of the big Java EE frameworks but sometimes you just need to build the app fast, or you are prototyping, and you can get much more milage out of the dynamic frameworks.


CommunityOne: Where is the power?

Wow. The infrastructure at CommunityOne is pretty anemic. The Wifi has collapsed and there is no power in the session rooms! What are they thinking?

On a positive note, they provided lunch today. Thanks for the sandwich!