Tuesday, November 13, 2007

I want Java 6 on my Mac...

So, 13949712720901ForOSX

Fred describes what this is all about here Vote For Java 6.

Monday, November 12, 2007

No Fluff Just Stuff, Fall 2007

Jay and crew were back in town this weekend. My company, Avaya, sprung for the admission cost (props!) and I donated my weekend. My brains are leaking out of my ears a bit and I can’t wait to try out some of the new ideas I learned.

Before getting into the details, I need to brag about what I won! In Saturday’s lunchtime raffle, I won a license for the IntelliJ IDE ($500 retail). The vast majority of the NFJS speakers are hardcore advocates for IntelliJ and never pass up an opportunity to dis Eclipse. Now I will get to see what the hype is about. In particular, I have heard the support for Groovy is really good. It will be fun and who knows, maybe I will become an IntelliJ snob myself?

It seems like every time I attend NFJS, I end up spending most of my time focused on a specific theme. This time, it was web frameworks. I didn’t start out intending to do this. The first talk I attended was an intro to ReST. There is a lot of discussion and debate about SOAP versus ReST at Avaya (SOAP is currently winning) and I wanted to see what those wacky ReSTafarians were excited about.

Quick aside, quote from Brian Sam-Bodden at lunch, “Everytime I use SOAP, I feel dirty!".

Brian Sletten did a great job of describing why he thinks ReST is a better solution than SOAP for most web services. His argument really boils down to simplicity and flexibility. He dispels the myth that many folks (myself included) have that all ReST entails is exposing your web service via a URL. This is part of it, but he argues that a better way of thinking about it is as “Resource Oriented Computing" paradigm that easily enables separation of concerns in an application. Resources become the “nouns" in the system. They are operated on by the verbs, which in ReST are limited to GET, POST, PUT, and DELETE.. Operations on the nouns by the verbs result in unique views into the system.

As a defense about the simplicity of a ReST interface, Brian mentioned some anecdotal statistics that 85% of Amazon web services users use the ReST web service over the SOAP web service.

While ReST isn’t entirely about the URL, that is one of the most observable aspects of a ReST implementation. Brian spent some time discussing best practices for a ReSTful implementation of these URLs and also discussed the pros and cons of a non-opaque URL. Based both on what I heard and my use of ReSTful interfaces in the wild, I tend to agree with Brian that it is OK and even helpful to have non-opaque URLs for human use, but you should avoid exploiting this fact programmatically.

After hearing the ReST intro, I decided to sit in Brian’s next session, which covered a specific technology to implement ReST, called RESTlet. RESTlet is an open source API for developing a ReSTful system. I’m not going to go into a lot of detail here. Brian presented some great examples of how to use this and now I have yet another technology added to the “List of Things to Do"™.

Well, I had already attended two sessions on web technology, so why not keep it up.

The next three sessions I attended were all given by Scott Davis on Grails. Scott, who runs the Boulder JUG, has been pushing Groovy for quite a while. I am already a Groovy fan-boy and have been playing with it quite a bit. Scott and Venkat Subramaniam are working on a new book, Groovy Recipes, due out towards the end of the year. I have the honor of being a technical reviewer on the book. It is really looking good.

So Grails extends the use of Groovy to a web framework. Using Grails, typing four commands at the command line generates a completely functional web application including persistence! Seriously, this is a less than five minute exercise. So what took three sessions? Scott spent a lot of time showing how to customize the persistence and view behaviors within Grails. It is pretty easy to customize the environment in a global fashion such that after the customizations have been made, new projects can take advantage of these customizations quickly. Groovy rocks, and Grails is following in its footsteps.

Scott also presented the keynote, “No I Won’t Tell You What Web Framework to Use". Even if you don’t care about web frameworks, there were some great take always from this talk as well as some great humor. Scott’s main point is that since everyone has different needs and requirements, just asking someone what to use is not very helpful. He argues that you should really ask “What are you using?" and “Why?". And ask a lot of people. Then decide what the important decision points are for you (keep the number of criteria small). Use the feedback you have received to arrive at your decision. This summary doesn’t do justice to a talk that was well crafted and chock full of observations about how choice works in almost any aspect of life.

Well, that was it for the web frameworks. While this was my main focus, I did attend some other interesting sessions. I attended three sessions presented by Brian Goetz on concurrency and memory models in Java. In particular, he covered the changes in Java 5 surrounding concurrency, which are quite substantial. A key take away was that you almost never have to instantiate a thread directly in Java 5 and if you do, you better have a good reason. The concurrent library provides some great functionality for adding and controlling concurrency in a product. The timing of this information was helpful, as I am in the middle of a concurrent implementation and got some great ideas about how to approach it.

Attended two sessions by Ted Neward. Ted is the guy who has an opinion on everything, but also has the knowledge to back them up. His talks are some of the most information dense talks I have ever attended. The first was on debugging and monitoring in Java. It was interesting to see the tools he uses and the level of detail you can get to with them. Definitely good stuff. His second talk was on classloaders. I had seen this talk before, but needed to see it again to really absorb the info. It is starting to make sense and again, the information is timely, as I will be applying what I have learned immediately at work. According to Ted, now that we understand classloaders, we have a star on our shoulder that indicates we have attained Java Guru status. I wish!

The last session I attended, presented by Brian Sam-Bodden, was a basic overview of Eclipse Rich Client development. Not something I will be using immediately, but still was nice to see what is available. Eclipse 3.3 provides some nice wizards to bootstrap the process and Brian provided a nice overview on how to make use of them.

So I have tried to fit an entire weekend into a short blog. I barely scratched the surface. Didn’t really discuss the networking and technical discussion that occurs in between sessions. The great side discussions that occur with the speakers. The humor, the good food, … You really need to attend to get the whole picture!