Given the IT industry’s present love affair with the open source development paradigm, it seems only fitting that Valentine’s day was chosen as the date for announcing the 2005 Developer.com open source product of the year. This year’s field of five candidates, submitted by Developer.com readers, is comprised of a pool of cinches and surprises alike. In this article, each runner-up is introduced, accompanied by discussion of other 2004 developments in the relevant sector, and forecast 2005 trends and occurrences. Keeping you in white-knuckled suspense until the very end, the article closes with an introduction to the category winner and some thoughts regarding why it won out over an otherwise very respectable field of entries.
The Concurrent Versions System (CVS)
Managing a project’s code base with a version control system is as fundamental to the success of a project as choosing the ideal technology solution and following standard development principles. Given today’s often large and geographically distributed development teams, following this practice is more important than ever, although even solo developers are strongly encouraged to take advantage of version control in order to greatly reduce the possibility of development mishaps and to streamline development.
The Concurrent Versions System (CVS) offers development teams a network-enabled means for managing large and small projects alike. It records the revision history of every file in the project, enabling developers to not only easily determine who and when a change was made, but also examine exactly what changed. Furthermore, developers can return to (rollback) any previously recorded project state, allowing for painless recovery of otherwise potentially catastrophic programming errors. Team members are also prevented from negating the work of others due to simultaneous writes to the same file, although CVS is intelligent enough to allow developers to simultaneously work on said file, managing the changes should they write to two different areas, or prompting developers to resolve changes on the chance that the same lines are modified.
Given such abilities, although CVS has a history dating back more than 20 years, and accordingly isn’t mentioned in media circles to the same degree of frequency as some of the perhaps sexier technologies such as Firefox and Eclipse, it’s practically ubiquitous use in software development doesn’t leave much to the imagination regarding why its on this list.
Other Sector Developments and Trends
Although nobody can deny the enormous impact CVS has had on application development over the years, it did come as a surprise that Subversion, the self-proclaimed “compelling replacement for CVS”, didn’t make the list. Written with the intention of improving upon CVS, the long-awaited 1.0 release came in February, 2004, and was followed by a slew of high-profile projects migrating to the software. The Apache Software Foundation, Samba, Mono and Plone are just a few initiatives presently using Subversion for their version control needs.
Ask any developer to name one of the most annoying and time-consuming aspects of application development, and a fair share are sure to talk about integrating application and data logic. For instance, many novice developers tend to choose the strategy of embedding SQL queries directly into the application code. While this practice does indeed involve a minimum of forethought, serious maintenance issues will surely arise should the underlying database schema change, or worse, the database server itself require replacement with another solution. Having traipsed down this highly inefficient path a few times, developers often look to standard database APIs such as Perl’s DBI or PHP’s PEAR DB. However, while this practice can lessen the inconvenience should the database server change, developers are still faced with unwieldy code and the need to constantly update code as the schema evolves. To combat such issues, the notion of an object-relational persistence layer came about.
A persistence layer involves using a class to hide the gory details of interacting with a database, leaving the act of interacting with the database to the class. While persistence layers effectively separate the application and data logic, developers are still faced with managing that class to conform with an evolving database schema. To resolve this nuisance, developers began creating utilities for facilitating persistence layer generation and management. Among the many implementations that have come about, one of the most successful is Hibernate, an open source object-relational query framework for Java. Released under the LGPL, and supporting a number of databases, include popular products such as DB2, MySQL, Oracle and PostgreSQL, Hibernate can greatly decrease the time required to develop database-driven applications, not to mention afford developers the opportunity to focus on other key features rather than application plumbing.
If you’re interested in learning more about Hibernate, Muqdha Chauhan contributed a useful Hibernate primer to Developer.com which highlights its key features, and demonstrating its schema generation capabilities.
Other Sector Developments and Trends
Given the mission-critical dependence upon building data-driven applications, coupled with the enormous development and maintenance costs involved with managing such projects, it shouldn’t come as a surprise that there’s quite a bit of work going on in this area. Consider taking a look at these alternative persistence frameworks:
- JDO: http://jcp.org/en/jsr/detail?id=012
- OJB: http://db.apache.org/ojb/
- Torque: http://db.apache.org/torque/
IBM’s Cloudscape / Derby
At the 2004 Linux World San Francisco show IBM added to their already enormous list of contributions to the open source community with the announcement that they were donating a copy of the Cloudscape database product to the Apache Software Foundation. Redubbed Derby, the database is now in incubation at the foundation, meaning its development and maintenance logistics are currently undergoing some transformation to conform with the guidelines required of all official ASF projects.
Derby is a Java-based relational database management system written in the form of a Java class library, meaning it can be easily embedded into other Java applications with a minimum of effort. In development since 1996, Derby entered the IBM family of products by way of the . Despite a very small memory footprint, Derby is surprisingly packed with features, offering a native JDBC interface, support for key RDBMS features such as transactions and stored procedures, and implements the SQL92E standard enhanced with additional support for numerous SQL99 features.
While you won’t see Derby powering any global e-commerce website, it’s an ideal solution for running small websites, POS (point-of-sale) registers, and desktop applications. In fact, compelling Derby-based applications are already well under way, as was demonstrated by the Derby coding contest held at the recent ApacheCon. Check out the Derby website to learn more about the winners.
Other Sector Developments and Trends
Interestingly, IBM wasn’t the only major IT player making moves in the open source database arena. Also at the Linux World SF show, Computer Associates announced the release of the Ingres database under the OSI-compliant Computer Associates Trusted Open Source License (CATOSL).
Another open source database project making waves in 2004 was SQLite. Reminiscent of Derby, SQLite is an extremely lightweight database offering an impressive array of features. It rocketed in status with the offering of an SQLite extension in the PHP 5.0 release, and offers a very compelling alternative to databases such as MySQL and PostgreSQL for small websites.
2005 is already signalling a continuing frenzied pace in the open source database arena, with PostgreSQL 8.0 announced just a few weeks ago on January 19.
Additionally, it’s likely the open source database product MySQL will continue to take market share from proprietary competitors in the corporate, educational and government markets, the result of an intense development cycle and superb organizational execution of MySQL AB, the namesake company behind the database darling. Perhaps with the pending release of MySQL 5.0 later this year we’ll see both of these popular databases on next year’s list of finalists.
Frustrated with existing sound solutions for facilitating the development of J2EE applications, New York-based Java consulting firm Salmon LLC decided to take matters into their own hands. The result of their efforts was a J2EE-based class and tag library dubbed the Salmon Open Framework for Internet Applications (SOFIA). Standards-based, and fully integrated with mainstream development environments such as Dreamweaver, IntelliJ, and Eclipse, and J2EE servers such as Apache Tomcat and IBM’s Websphere, SOFIA offers Java developers more than 40 GUI-based visual components and 20 other components aimed at speeding Web application development while encouraging sound development principles through the separation of presentation and logic.
In addition to basic presentational elements such as buttons and list boxes, SOFIA greatly streamlines the development of commonplace tasks, offering default support for calendars, data grids, trees, and tabs. Furthermore, SOFIA is very adept at code generation for many database integration tasks, and incorporates a persistence layer support. If you’re regularly involved with the development of database-driven J2EE Web applications, taking the time to experiment with SOFIA could be well worth your time.
And the Winner is… the NetBeans IDE!
The Java community has benefitted tremendously from a wide array of community-driven projects that affect nearly every developmental aspect of the popular language. There’s perhaps no area where the spoils of these efforts are more pronounced than IDE availability, as Java developers are faced with the difficult choice of choosing between two fantastic Integrated Development Environments (IDE), namely Eclipse and NetBeans. In fact, Eclipse walked away with top honors in the Development Tool category this year, and NetBeans garnered an even more pronounced win in this category with just over 60% of the votes. Given the wide array of capabilities offered by this community-driven IDE, it isn’t a surprise to see why developers are swooning over this project. In this section I’ll highlight just a few of this compelling IDE’s key features:
- Cross-platform support: The NetBeans IDE is supported on all mainstream platforms, including Linux, Macintosh, Solaris, and Windows.
- Updated: The NetBeans IDE 4.0 is the first IDE to support J2SE 5.0, and is the only IDE to base its project-build system on the popular Apache Ant.
- Database Support: The NetBeans IDE supports a browser capable of viewing and editing schemas stored within a variety of mainstream database servers, including DB2, Derby, Interbase, Microsoft SQL Server, MySQL, Oracle and more.
- Extensible: At press time, the NetBeans site hosted over 100 contributed modules which can be used to both modify and enhance IDE capabilities. You can view a list of contributed modules here.
- Flexible: In addition to facilitating development of traditional GUI-based Java applications via a WYSIWYG designer, the NetBeans IDE supports development of J2ME wireless applications, Web applications, and Web Services.
Although not a Java developer, as a programmer I am admittedly blown away by the vast array of features offered by this fine IDE. I highly recommend that all developers take some time to download and experiment with the NetBeans IDE, as it’s exemplary of the quality of work that can result from an open source project.
Other Sector Developments and Trends
There’s quite a bit of ongoing exciting work in this area. A few of the particularly compelling projects are listed here should you wish to investigate further:
- Eclipse: http://www.eclipse.org/
- KDevelop: http://www.kdevelop.org/
- MonoDevelop: http://www.monodevelop.com/
In addition to several projects already mentioned in this article, it came as quite a surprise that the eagerly awaited mid-summer release of PHP 5.0 failed to make the list given the tremendous amount of press and discussion generated from the announcement. And who could deny the tremendous impact made by the Firefox 1.0 release in both the corporate and consumer environments throughout 2004? (Note: Firefox did make (and win) Development Utility of the Year). Other key 2004 developments include the release of Thunderbird 1.0, and Eclipse 3.0. (Note: Eclipse was a finalist for Technology of the Year). Of course, if anything my wonderment is indicative of the tremendous inroads open source software is making on so many levels. Perhaps we’ll see an expanded list of candidates for the 2006 contest to account for an industry that’s obviously in hyperdrive.
About the Author
W. Jason Gilmore (http://www.wjgilmore.com/) is the Open Source Editor for Apress (http://www.apress.com/). He’s the author of Beginning PHP 5 and MySQL: Novice to Professional (Apress, 2004. 748pp.). His work has been featured within many of the computing industry’s leading publications, including Linux Magazine, O’Reillynet, Devshed, Zend.com, and Webreview.