NetBeans wins in the Open Source Category!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/