With the advent of modern computer programming, development tools, databases, and Web platforms, the complexity of any software product or project has greatly increased. From the very beginning of Object Oriented Programming (OOP), different concepts, such as object reuse, inheritance, and libraries served the purpose of simplifying software development and maintenance. In recent years, these concepts have become inadequate. However, they are still greatly used and serve as a backbone for all the modern frameworks.
The development costs and time, ROI, testing, and maintenance are inevitably tied with the quality and scale of any software project. To keep up with the scale and complexities of software development, various frameworks have emerged.
"A framework is a defined support structure in which another software project can be organized and developed. A framework may include support programs, code libraries, a scripting language, or other software to help develop the different components of a software project."
This year, in recognition of the importance of the modern software frameworks, Developer.com's product of the year 2006 contest included the framework category. Different nominees have been carefully selected from various sectors and types of the software frameworks in Web development, desktop development, and IDEs.
The readers of Developer.com then voted over a period of time and their opinions were aggregated to find the final winner.
The Finalist Frameworks
|Finalists||Web Development||Desktop Development||IDE Development|
|JavaServer Faces From Sun Microsystems Inc.||●|
|Eclipse platform from the Eclipse Foundation||●||●|
|Microsoft® .NET 2.0 Framework from Microsoft Corporation||●||●|
|Spring Framework from springframework.org||●|
|Ruby on Rails from rubyonrails.com||●|
From the Eclipse Foundation
If you are a hard-core Java developer, chances are that you have heard of the Eclipse SDK. The Eclipse platform is perhaps the best known and most widely adapted product. Eclipse has also been extended and integrated as an underlying platform for many of the current commercial IDEs, such as IBM's WebSphere Application Developer (WSAD) product line, Rational XDE, M7 NitroX (recently acquired by BEA and soon to become part of its flagship BEA Workshop family), and many others. Due to its flexibility, the Eclipse platform is not only suited for the development in the Java language, but also many other languages are supported by it.
Originally the brain-child of IBM, Eclipse emerged as a collaboration project by several major software development companies, including IBM, SAP, Hewlett-Packard, and Oracle. Over time, many other vendors have joined in, and now the Eclipse Foundation community consisted of over 30 companies. The foundation oversees Eclipse's "vendor-neutral open development platform and application frameworks for building software."
Even though Eclipse is a full-featured IDE, it is also a very extendable framework, and at its core is a powerful plug-in engine. As a framework/tools platform for software development, it is one of the best, with design GUI components and rules for building applications. Currently, Eclipse is gaining a lot of attention and is poised to become the de facto IDE and SDK for Java and other languages' development platform. All the major Java and C++ IDE vendors, such as BEA, IBM, and even Borland* are either actively developing for Eclipse or are considering adapting it in their products.
* Borland JBuilder 2007 will also be based on Eclipse SDK.
Microsoft® .NET 2.0 Framework
From Microsoft Corporation
In the MS Windows Desktop development world, the MS .NET initiative is well known and is considered to be the future of the Windows platform. The next version of MS Windows, codenamed "Vista," has the .NET framework tightly integrated with it. The SDK of the framework was released a few years ago and the current version, 2.0, was released in October 2005. The MS flagship IDE Visual Studio has been rewritten to support .NET framework development.
The framework supports writing applications in numerous different languages, such as C++, .NET, VB .NET, JScript .NET, and a new C# (C sharp) language developed specifically for the framework and bearing similarities with both Java and C++. MS .NET allows coding, compilation, and, most importantly, execution of the programs in any or all of these languages (a total of about 40) because, under the hood, all of them are compiled and run with Common Language Infrastructure or CLI, whose task is to provide a language independent platform for development, compilation, and execution. Microsoft's implementation of the CLI is called the Common Language Runtime, or CLR. In other words, the .NET framework works somewhat similarly to the Java Virtual Machine, where code is first compiled into special byte-code and then is executed in the JVM.
Since its conception, .NET framework was designed to have: high security, built-in support for Web Services, new ASP .NET (a replacement for the old Active Server Pages), ADO .NET (new and improved ActiveX Data Objects), new Windows Forms (WinForms), and managed wrappers for the widgets contained in the existing Win32 APIs.
The future of application development for the Windows platform will undoubtedly be contingent on the .NET framework and its evolution.
The Spring framework is a relative newcomer in the area of the Java Web-based frameworks for Web application development, but it has gained a lot of popularity due to its clear layered structure and many flexible features. It can either be used to complement such veteran frameworks as Struts and Tapestry, or can be used on its own. The framework is based on code published in Expert One-on-One J2EE Design and Development by Rod Johnson (Wrox, 2002).
Besides a main Model-View-Controller (MVC) pattern, the Spring framework incorporates several other design patterns, such as Inversion of Control (IoC), different abstraction layers, and strategy interfaces. It also has Java Beans management, JDBC Data Sources (also via an abstraction layer with excellent exception handling), Java Transacting API (JTA) support that does not require a J2EE container, and integration with other Java technologies directly or via strategy interfaces, such as Hibernate, JDO, TopLink, iText, Velocity, and Tiles.
As a worthy contender from the Java frameworks, Spring deserves a special mention among other nominees.