Husted Tops Thirty

While in Salt Lake City last week, I dropped by the Utah Java Users Group meeting and gave my 33rd public presentation, my fourth appearance this year. I usually run about six presentations or courses a year. I’m already on the hook for The Ajax Experience (Boston) in October, and ApacheCon (Atlanta) in November, so it’s shaping up to be a busy year.

The UJUG gig was a last-minute thing. I was already in town to present a three day training course, so we dropped by, and the organizer, Chris Maki, setup up a special event for me during the “Break Out” session at the end. It had already been a busy night covering both SunSPOT robots, Java FX, and Java Scripting, but, even so, several stalwart Strutites hung around for the “special guest appearance”. I ran through the better part of my Building Struts 2 Applications session, and answered a number of excellent questions.

I’ve been doing Struts presentations for six years now. The first, in June 2001, was a one-day “train the trainers” gig for an agency in Atlanta. Struts 1.0 was barely out the door, and before they asked, I had never thought of doing onsite Struts consulting. So, I had no slides, and no projector. We just met in a room with a flipchart, and hovered around my laptop for code demonstration, but at the end of the day, everyone there knew a lot more about Struts (including me!).

That sort of thing went on for several years. People would call and ask me to come out and work with their development team. We’d whip up an agenda, and, along the way, I started to build a library of slides, based on the what each team wanted to cover. Many times, we’d refine the agenda as we went, and I’d be creating or refining sessions in my hotel room the night before.

Eventually, I got tired of doing everything on the fly, and developed an actual training course. Being bloody-minded, my Struts University courseware is open source, just like Struts itsef. Right now, there are two tracts for the MailReader Training Course, one for teams new to Struts 2 and another for teams that are migrating from Struts 1. The base course is the same, but I change the initial presentation, as well as how the material is presented.

I’ve given the course several times now, and it seems to be working well. It’s a 50/50 mix of lecture and labs. The labs are designed to build the MailReader example application, use case by use case. We follow Agile principles, so each lab is an iteration that leaves us with a functioning application at the end.

I enjoy holding the courses, but I don’t actually enjoy traveling. I do it, but I don’t like it. Of course, it would be much more convenient if people would come here to Rochester NY. I did do a class here last summer, but it’s hard to know when to set a date. If anyone might be interested in coming to Rochester in December or May, or somewhere in between, let me know. At The Ajax Experience and ApacheCon, I’ll be speaking on Migrating to Ajax, so if that might be of interest as a full course, either here or there, let me know that too.

The ASF Turns Fifty

Between July 2006 and June 2007, the Apache Software Foundation (ASF) created thirteen new projects, bringing the total number of ASF software projects to just over fifty.

In June, the ASF Board of DiThe rectors promoted Jakarta Commons subproject to a top-level Apache Project. Over the past year, three other Jakarta subprojects – Velocity, Turbine, and POI – were promoted to top-level projects in 2006/2007. Other newly created projects include Apache Shale, Apache Tiles, Apache Santuario, Apache MINA, Apache Cayenne, Apache Felix, Apache OpenEJB, Apache OpenJPA, Apache Open for Business, and Apache Labs. Seven of the new projects were developed as part of other ASF projects, and then promoted to top-level projects, five projects are new to the foundation, and one was developed internally as a new top-level project.

Apache Velocity (velocity.apache.org) is a Java-based template engine. The Velocity Engine is a mature product, in distribution since 2001. In addition to the core Velocity Engine, the new Apache Velocity project offers five other related products. The latest addition is Velocity DocBook Framework (DBF), a framework for creating high-quality online or print documentation. DBF (velocity.apache.org/docbook) simplifies rendering DocBook files by combining Apache Ant, Java, and the Velocity Engine into a unified toolset.

Apache Turbine (turbine.apache.org) is a servlet-based web application framework. Turbine and Velocity share common roots, and like Apache Velocity, Apache Turbine is a mature product dating back to 2001. Turbine works well with both Velocity templates and JavaServer Pages, and supports a services-oriented architecture.

Apache POI (poi.apache.org) provides a set of pure Java APIs for working with Microsoft OLE 2 documents, which includes Microsoft Word and Microsoft Excel. POI is in its third major release series. In addition to Java support, POI also provides bindings for the popular Ruby language. Like Velocity and Turbine, Apache POI is another mature codebase in development since 2001.

Apache Shale and Apache Tiles are spin-offs from the Apache Struts project. Apache Shale (shale.apache.org) is a modern web application framework, fundamentally based on JavaServer Faces. The Shale codebase was originally created in 2004 by Craig McClanahan, who also founded Apache Struts.

Apache Tiles (tiles.apache.org) is a templating framework for use with web applications. Originally an Apache Struts feature, Tiles has been broadened into a standalone framework. Both Apache Struts and Apache Shale provide Tiles support as a standard option.

Formerly known as XML Security, Apache Santuario (santuario.apache.org) provides implementations of the W3C standard XML-Signature Syntax and XML Encription Syntax. Libraries are now available for use with Java or C++ applications. Before being promoted to a top-level project, Santuario was part of the Apache XML project. The original Java codebase was a commercial product, donated to the foundation in 2001.

Apache MINA (mina.apache.org) provides a unified API for transport types, byte buffers, message objects, and codecs, along with stream-based IO support and a Java Filter interface. The MINA codebase (Multipurpose Infrastructure for Network Applications) began as a merger of the Netty network application framework with a Staged Event Driven Architecture (SEDA). Today, it is a core dependency of the Apache Directory project. Apache MINA also powers point of sale terminals, multiplayer games, and other network systems.

Apache Cayenne (cayenne.apache.org) is an object relational mapping (ORM) framework for Java that combines many of the best features of Apache iBATIS and Hibernate, and then adds a sophisticated GUI modeling tool. Cayenne was first developed by ObjectStyle, LLC., and donated to the ASF in 2006. The codebase has been actively developed since 2001, and Apache Cayenne is now in its second major release series, with version 3.0 in development. An exciting feature of Apache Cayenne 3.0 will be a Java Persistence API (JPA) provider.

Apache Felix (felix.apache.org) is a community effort to implement OSGi-related technologies. OSGi technology targets embedded devices and home services gateways, but it is ideally suited for any project that is interested in principles of modularity, component-oriented, and/or service-orientation. Among other things, OSGi technologies can be used as an alternative to Java Management Extension (JMX).

Apache OpenEJB (openejb.apache.org) is a modular, configurable, and extendable EJB Container System and EJB Server. Over the last seven years, the OpenEJB group worked with two other open source hosts, Exolab and CodeHaus, before coming to the ASF in 2006. The current release of Apache OpenEJB supports the Enterprise JavaBeans 3.0 specification. The product ships with both a EJB container system and its own lightweight EJB server. Apache OpenEJB can also be embedded into Apache Tomcat to create “a no holds-barred EJB server”.

Apache OpenJPA (openjpa.apache.org) is a feature-rich implementation of the persistence part of Enterprise Java Beans 3.0, also known as the Java Persistence API (JPA). OpenJPA can be used as a stand-alone POJO persistence layer, or it can be integrated into any EJB3.0 compliant container and many lightweight frameworks. The OpenJPA codebase was originally developed by BEA and later donated to the foundation in 2006. OpenJPA is already being used by ActiveMQ, BEA, Apache Camel, Apache Geronimo, Apache Ode, Apache OpenEJB, Spring, and IBM WebShere, among others.

Apache Open for Business (ofbiz.apache.org) is an enterprise automation package that includes tools for Enterprise Resource Planning (ERP), Customer Relationship Management (CRM), Software Configuration Management (SCM), Materials Resource Planning (MRP), and more. OFBiz was originally created in May 2001 and soon attracted an international base of developers, contributors, and users before joining the foundation in 2006. Today, OfBiz powers a wide variety of ecommerce sites, including 1-800-flowers.com and totes-isotoner.com.

While many ASF projects were created elsewhere, another new project, Apache Labs (labs.apache.org), is designed as a place where ASF committers can experiment with new ideas. In the Apache Labs, our committers can innovate and collaborate, without the worry of building a community first. Today’s labs – which may be tomorrow’s projects – range from new approaches to creating virtual communities to experiments in new web protocols.

The Apache Software Foundation (www.apache.org) is a not-for-profit corporation that supports the Apache community of open-source software projects. While the foundation’s infrastructure is funded through a combination of sponsorships and donations, the foundation itself is composed of individual, unpaid volunteers. ASF projects are characterized by a collaborative, consensus-based development process, an open and pragmatic software license, and a desire to create high quality software.

Struts Downloads Skyrocket in 2007

[Apache Struts Group] Since its release in June 2001, Apache Struts (struts.apache.org) has become the most popular web framework for Java. Six years later, by any objective measure, Struts is still Java’s most popular web framework.

In February and March 2007, the group released both Struts 1.3.8 and Struts 2.0.6 to the general public, and Struts downloads zoomed to over 340,000 a month from the Apache site alone [1]. And this is just the tip of the iceberg. Most copies of Struts are downloaded from an network of mirrors or obtained from Maven repositories. Meanwhile, monthly page Views for the Struts website soared to over 2.1 million, up from levels of about 1.3 million page views in June 2004. Subscriptions to the Struts mailing lists hold steady at about 3,000 accounts, not counting people who use services like Nabble and GMane.

Since the framework’s debut, well over twenty books about Apache Struts have been published [2], along with hundreds of online articles, and dozens of third-party extensions [3]. Books and articles devoted to Struts 2 are already appearing. InfoQ has released “Starting with Struts2” both as a free PDF and as a hardcopy book via LuLu.com [4]. Mark Menard has started a Struts 2 cookbook [5], and sites like Rose India and ArcTech are offering extensive Struts 2 tutorials [6]. Many teams are already moving Struts 1 applications to Struts 2, including the popular Apache Roller blogging application [7].

An exciting feature of Struts 2 is configuration-free plugins. Third-party components can be added to the framework just by putting a JAR on the Java classpath. In fact, many of the framework’s advanced features are provided by plugins that ship with Struts 2. A plugin repository site is open to the public [8], and several plugins are already available, including plugins for JSON, WebFlow, Google Web Toolkit, and Guice.

While there is no lack of choice in the Java framework space, the clear winner with grassroots developers is still Apache Struts. With first-class support for Ajax, JSF, unit testing, and dependency injection, Struts 2 is an excellent choice for teams that want to step forward, without stepping away.

Links:


Strecks 1.0.1 released

Phil Zoio has released Strecks 1.0.1 with some small updates to the 1.0 release.

“The main change in this release is it now much simpler to run the samples: simply download the source distrubution, then run “ant download run.samples”.

“Strecks contains a range of enhancements aimed to streamline the Struts 1.x programming model using Java 5 language features. These enhancements include annotations for validation, data binding, type conversion and dependency injection, as well as a range of other features including pure POJO actions, interceptors and Spring integration.”
For a more detailed feature list see http://strecks.sourceforge.net/features.php. Strecks can be downloaded from http://strecks.sourceforge.net/download.php.