Today (Thursday, 23 October 2008) was the fourth day of presentations at Colorado Software Summit 2008. As usual, I find myself feeling like there is very little room left to cram any more information into my brain and process it coherently. As with all my summaries of Colorado Software Summit presentations, it is important to note that any errors are probably a result of my misunderstanding or misinterpretation of what was stated.
Simon Phipps - The Adoption-Led Market: The Third Wave of Open Source
Thursday mornings at Colorado Software Summit traditionally begin with a keynote presentation from Simon Phipps and this year was no different. It is no surprise that, as Chief Open Source Officer at Sun Microsystems, Simon's annual keynote addresses emphasize open source. The title of this year's keynote address was The Adoption-Led Market: The Third Wave of Open Source.
In his address, Simon used Third Wave of Open Source to describe commercial and government embrace of open source. Simon referred to the first wave of open source as the wave when "fanatics" or "specialists" (depending on your perspective) were the only ones involved. The second wave of open source occurred when forward-thinking software developers started understanding the advantages of open source and now the third wave involves commercial and governmental organizations embracing open source.
Simon described the current procurement methods used by many organizations and stated that he believes that within ten years the majority of organizations will be using adoption rather than procurement to try out products and then adopt the product once it has been proven. Standards and open source together make this possible because an organization can try out the standard-based open source product with the freedom to switch to an alternate implementation of the same standard. Organizations also have the freedom to choose whether to purchase subscriptions for support and other benefits Simon outlined that often go with subscriptions. I have noticed that we already seeing this model with open source products from SpringSource (Spring Framework), Adobe (Flex), Laszlo Systems (OpenLaszlo), Sun (NetBeans and GlassFish), etc.
Simon made many more good points and outlined five lessons of 2008 related to open source freedom. He also referenced Alvin Toffler (The Third Wave) and pointed out the usefulness of ScribeFire 3.1.3. Among many other things Simon covered, he discussed freedom through substitutability rather than interoperability, the standardization processes, cloud computing, and much more. There were a lot of questions and comments, which usually reflects a lot of interest in the topic.
My Last Presentation of "Applying Flash to Java: Flex and OpenLaszlo"
In my third and final time presenting Applying Flash to Java: Flex and OpenLaszlo, I was happy to be able to make a segue from Simon Phipps' keynote about the evolution to an adoption-led market fueled by the compelling combination of open source and standards to Flex and Open Laszlo. These fine RIA frameworks are available for no charge and are open source, but support and other features can be purchased for organizations that desire that support. In other words, organizations have the freedom to use Flex or OpenLaszlo either on their own or by paying for levels of support.
Eric Schreiner - Real World Groovy: How to Add Scripting Functionality to Your (Existing) Application
After another excellent lunch and a brief walk around the Keystone Resort Lake, I attended Eric Schreiner's Real World Groovy - How to Add Scripting Functionality to Your (Existing) Application. While I have had a cursory awareness of Groovy and what it is, the presentation gave me a clearer perspective on Groovy. Eric pointed out that a differentiating aspect of Groovy is that Groovy compiles to Java .class files.
I also thought it was interesting that Groovy will autogenerate get/set methods for data members if they are not provided. Groovy's API is documented at http://groovy.codehaus.org/api/index.html, but what may be even more interesting is that Groovy extends the Java SDK and these extensions are documented at http://groovy.codehaus.org/groovy-jdk/. An example that Eric showed is the File.getText() method. Eric pointed out that Java SE's File class does not have a getText() method but Groovy adds one to it.
Matthew Wakeling - Performance Engineering from Scratch
Matthew Wakeling's excellent presentation Performance Engineering from Scratch was next on my schedule. I had changed my mind from going to another session to go to this one instead after a colleague told me how good it was. This is another advantage of the conference offering three presentations of each topic -- it allows word of mouth to help guide decisions about which presentations to attend.
Matthew's presentation had high ambitions of covering performance theory (including Big O notation), sorting algorithms, lookup algorithms, concurrency issues, database performance issues, and "funky stuff." It was useful to be reminded of some of the Computer Science 101 principles I have not thought about for a while and to learn some new things as well. I especially liked Matthew's coverage of the algorithm implementations used with various Java Collections and the strength of each.
Matthew's presentation included a reference to Tim Bray's On the Goodness of Binary Search and to the Java implementation java.util.Arrays.binarySearch(...). He also talked about the usefulness of TreeMap, TreeSet, HashMap, HashSet, LinkedHashMap, LinkedHashSet, java.util.BitSet, and several useful Java concurrent collections.
Matthew discussed behavior of String.equals and Object.hashCode versus String.compareTo and observed that String.compareTo terminates its checking of equality in characters as soon as it sees a mismatch. Using StringBuffer (or StringBuilder) instead of String for concatenation came up as an "obvious" performance issue. There was also some discussion of the potential performance advantages of moving significant functionality into the database versus the potential lower cost of scaling hardware running Java middleware and allowing that middleware to do more processing.
Matthew discussed the performance implications of reflection and emphasized the cost of catching exceptions related to reflection. Matthew showed several diagrams comparing performance of different collections and algorithms on those collections. He said he will be putting these tests on the conference CD and I am looking forward to trying them out when the CD arrives. The animations on these slides that showed the algorithm sorts and binary searches. These animations likely cost Matthew significant effort, but they were really good at helping me to see very clearly and easily how the various algorithms work. It was clearest presentation of search and sort algorithms that I have ever seen.
Matt Raible - What's Coming in Spring 3.0
As Matt Raible explained in his blog entry The Colorado Software Summit and Spring 3.0's SVN, Spring source code is contained in two repositories. There is also an explanation of what is delaying the release of Spring 3's early release versions. Matt covered the basics of the Spring Framework, the history of the Spring Framework, and outlined the anticipated improvements coming in Spring 3.0 in his What's Coming in Spring 3.0 presentation.
Matt mentioned several useful software development resources in his presentation including the Spring Kick-Start project he and Thomas Risberg host on Google Code for helping learn to use Spring quickly, JavaRebel for reloading class files dynamically, the DZone reference card on Spring Framework Annotations, and a reference explaining the Unified Expression Language (unifies JSP and JSF expression languages).
Matt has summarized this presentation on his blog and that summary includes a copy of the actual presentation.
Overall Comments for the Day
Thursday at the Colorado Software Summit is always the day I really start to feel myself being saturated with new knowledge. I have many things on my to-do list now to look into further or try out and am looking forward to it. I still have one presentation to give. I will be presenting JMX Circa 2008 for the third and final time at this conference first thing tomorrow morning. It will be interesting to see how many people attend, especially considering that it is being held in one of the very long conference rooms (Red Cloud Peak).
With only two sessions left in this year's conference, I have noticed that many of the conference attendees seem to be using Flex, Google Web Toolkit, or one of the Ajax/DHTML frameworks for their RIAs. I only heard one person state that she was using JavaFX. It has been very rewarding to talk to other people who are using Flex, OpenLaszlo, and JMX (my topics at the conference) and to hear some of the creative things they are doing with these technologies.
I did not win the iPod or any of the other items in the Thursday larger-than-other-days daily raffle, but it was still a great day to be at the Colorado Software Summit, to be in beautiful Keystone, Colorado, and to be learning new things.