Skip to main content

Agile Methods Applied in JSR Spec and Reference Implementation Development

Posted by editor on February 1, 2010 at 8:21 AM PST

The JCP site has published a new article, Agility: Definitions, Principles, and Practices for Today, written by Susan Mitchell. The article focuses on the agile methods that are being employeed by three JCP Spec Leads:

  • Ronald Toegl - JSR 321, Trusted Computing API for Java
  • Ed Burns - JSR 314, Java Server Faces 2.0
  • Emmanuel Bernard - JSR 303, Bean Validation

At first glance, it might seem strange to find agile software development methods applied within the context of a standards organization. Isn't it more natural, perhaps even more appropriate, for a standards organization to define a specification in detail prior to any implementation of the spec? On the other hand, it seems like simultanteous hands-on development could also be useful, since development complications that are not readily forseeable will show up earlier during the process of creating a reference implementation for the JSR.

Spec Lead Ronald Toegl believes the "implement first and specify later" apprach is the best for JSR 321:

To us, agility provides an efficient use of resources, short feedback cycles, and a chance to consider different approaches while still moving forward. It also allows us to take small, easy-to-reach steps.

The JSR 321 Expert Group started with a minimal prototype, from which Java interface definitions were extracted. After some discussion, these were released as an Early Draft. Currently, the team is implementing the interfaces and creating test cases. All of this is done in the open, with the code available in a public repository (see the JSR 321 project).

JSR 314 Spec Lead Ed Burns has led three successive versions of Java Server Faces. This extensive experience brought Ed to the conclusion that "you have to build prototypes as you go along to test out the concepts." He notes: "By having the prototypes grow up with the spec, we achieved an important level of agility." Ed encourages spec leads not to spend much time on up-front design, but rather to "get some code running as soon as possible."

Of course, agile methods cannot work unless the team has a reasonable and mostly agreed-upon perception of what the ultimate goal is, an approximate vision of what the end product will look like. Given that general awareness, it seems that agile methods can indeed be applied within the context of JSR development. But what happens in the case where work is initiated on a JSR, then the project stalls for a considerable period of time? Can a new Spec Lead just pick up the project and immediately apply agile methods? Not quite.

JSR 303 (Bean Validation) fits into this category. JSR 303 was started, then progress was paused for a while, as the first Spec Lead Jason Carreira was unable to continue. Current Spec Lead Emmanuel Bernard notes the importance of listening first, and ensuring openness throughout the JSR specification and implementation process. When he accepted ownership of the project, Emmanuel analyzed the feedback that had already come out of the Expert Group, then created a core specification. Emmanuel made the entire process of developing both the specification and the reference implementation open, using a mailing list, a forum, blog posts, and a public repository. This "keeps everyone in the know and allows for early problem detection and feedback." Emmanuel's JSR management philosophy is summed up in this statement:

Work in the open. Release early and often, outside of JCP boundaries if necessary.

The full article includes a lot more than what I've presented here. Thanks to the JCP for providing it!

In Java Today, Geertjan Wielenga discovers an interesting NetBeans 6.8 Release Notes paragraph, in Microchip on the NetBeans Platform:

"The NetBeans Platform, used by developers around the world to develop a wide variety of rich clients, continues to garner the attention of the developer community. Microchip is a leading provider of microcontrollers, analog semiconductors, and development tools for embedded designs. 'Microchip sees great potential for the embedded developer base in the new NetBeans IDE 6.8 release,' said Derek Carlson, vice president, Development Tools, Microchip Technology. 'While other open source IDE frameworks have grown cumbersome and required significant customization for the embedded market over the past 2+ decades, NetBeans 6.8 delivers a ..."

Adam Bien announces a Free Jug Session in Hamburg - Real World Java EE Patterns - Rethinking Best Practices:

At 02.01.2010, 8 P.M. I'm going to give a free JUG talk about Java EE 6 / 5 cool stuff and best practices in Hamburg. We will discuss the relation between Contexts and Dependency Injection (CDI / JSR-299), Dependency Injection for Java (JSR-330) and EJB 3.1 - the lightweight components :-) Also the new Java EE 6 stuff like: stereotypes, interceptors, decorators, validation, REST + EJB 3.1 are going to be covered. The Java EE 6 impact on architecture, build and test...

The JCP Program Office announces JCP Special Election Ballot Open-Vote Today!:

The Special Election ballot for the open Java Micro Edtion (ME) Executive Committee (EC) seat is now posted on the JCP Election site. There are four nominees for the 1 open seat, which has a 3-year term, ending in the Fall of 2012. We have some very qualified and well-known candidates...

In today's Weblogs, Ed Burns reports that Trustwave SpiderLabs sets sights on Mojarra, MyFaces:

I received an email from core Mojarra team member Jim Driscoll, who was inexplicably laid off from Sun after its recent acquisition by Oracle, about a talk at next week’s BlackHat Conference in Arlington, VA, U.S.A.. Jim pointed out that two security luminaries from the elite SpiderLabs team from Trustwave are giving a talk at BlackHat about view state security, specifically focusing on Mojarra and MyFaces...

Cay Horstmann demonstrates Composite Input Components in JSF:

When I first heard about composite components in JSF 2, I asked "How do I make a date picker that yields a java.util.Date?" I was told that can't be done without a custom component and lots of icky code. Not so--it is actually pretty easy. Here are the details...

Felipe Gaucho provides a Jfokus 2010 Wrap-Up:

Quickies: * Jfokus team: fantastic people! Mattias, Helena and all the conference team, thank you! * Jfokus conference: excellent! * Graph DB is buzz word, Emil Eifrem an unique character. * Ed Burns, Toni Epple and Laforge, we missed you guys. * Scrum loosing value due to the excessive number os Scrum masters out there...

In the Forums, grj99 has a GlassFishV2, PostgreSqlPool ping issue: Hi All, Learning GlassFishV2.1.1-b31g with postgresql 8.4-701. I'm trying to ping to a connection pool PostgreSqlPool with port 3306. Error message is: java.lang.RuntimeException: javax.resource.ResourceException: Connection...

In the GlassFish forum, markkr2 asks How do logon or set principle/roles/groups when using Embedded API: Hi, I want to unit test (actually more of an integration test) my EJB's (3.x). I'm trying to use the Embedded API with Java EE 6 and glassfish v3 to call my EJB. I think it's close to working, it seems to create the bean and such, but my EJB...

jackett_dad has questions about Metro 1.5 and WebLogic 10.0: Hello, I have been trying to create an EAR file that will deploy to WebLogic 10.0 that employs Metro 1.5 to deploy my set of Web Services. I've got this working for Tomcat 5.5.25 and Websphere 6.0.15. In the case of Tomcat, I had......

Our current Spotlight is the JCP article "Agility: Definitions, Principles, and Practices for Today", by Susan Mitchell: "Agility is a word we hear a lot these days, but there are a variety of methods to implement it within the Java Community Process (JCP) program. Most people grasp the basic idea of being quick, but there is much more involved than sheer speed of development or time to market. There are additional meanings, such as the quality of being mentally alert, skill at changing direction, and the ability to maintain control even during times of stress..."

This week's Poll asks In what ways do you participate in the community? Voting will be open through the end of next week.

We've just published a new Feature Article, Maven Repository Managers for the Enterprise, by John Smart. We're also featuring Jeff Friesen's Reading Newsfeeds in JavaFX with FeedRead, in which Jeff demonstrates how to apply JavaFX's RSS and Atom newsfeed capabilities to create a snazzy little JavaFX app that can run stand-alone or in a browser.

The latest Java Mobility Podcast is Java Mobile Podcast 92: MIDP 3.0 in Depth: Tutorials and Demonstrations: Excerpts from the JavaOne 2009 MIDP 3.0 In Depth: Tutorials and Demonstrations session with Roger Riggs, Lakshmi Dontamsetti and Stan Kao.

Current and upcoming Java Events:

Registered users can submit event listings for the Events Page using our events submission form. All submissions go through an editorial review before being posted to the site.

Archives and Subscriptions: This blog is delivered weekdays as the Java Today RSS feed. Also, once this page is no longer featured as the front page of it will be archived along with other past issues in the Archive.

-- Kevin Farnham

O'Reilly Media
Twitter: @kevin_farnham