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.
Ruby on Rails
As a “full-stack” framework, RoR has complete RDMB support, primarily with all main royalty-free databases (MySql, PosrtgreSQL, SQLite), but it supports major commercial databases as well (DB2, Oracle, SQL Server). Out-of-the-box, it comes with the light Web server “WEBrick” for testing purposes. For production use, a more robust server, such as Apache, is recommended.
As mentioned above, one of the strengths of the framework is minimal configuration, possibly because of a well-implemented controller and overall framework structure.
Even though RoR does not have a large market share, it is a unique framework. If AJAX continues to advance, Ruby on Rails has a prospect of becoming a major player in an enterprise Web application frameworks space.
AND THE WINNER IS …
From Sun Microsystems Inc.
The same as last year, this year Sun Microsystems won in many product categories. This is partly because Sun created the Java language and its specification and now supports most of the Java-based industry standards and technologies. Java and its numerous specifications continue to dominate enterprise development space, especially in Web development.
Over the last decade, Sun continued to evolve and improve its Web technologies with the help of JCP (Java Community Process), constantly listening to the developers’ needs and looking at the development market trends. Sun started from Servlets (too much of HTML in Java), and then standardized Java Server Pages (JSP) (too much Java in HTML) and now developed a new Web framework specification JavaServer Faces (JSF). The first specification for JSF was released in March 2004 (JSR 127), and currently this technology is supported by most major vendors: IBM, Oracle, BEA, Borland, and Apache Foundation. As a result, most major IDEs on the market have or will have native built-in support for the JSF.
JSF is a Java-based Web application framework that relies heavily on JSPs (or other display technologies) to simplify the development of user interfaces (UI) in J2EE applications. It has a complete set of APIs for representing User Interface UI components and “managing their state, handling events and input validation, defining page navigation, and supporting internationalization and accessibility.” In addition to Managed Beans technology and client state management, it has full support for tag libraries and event model on the server-side.
The JSF arose primarily due to the need to standardize GUI component development in J2EE applications. Before the introduction of the JSF specification, different Java software shops would create their own interfaces using JSP and HTML, resulting in maintenance problems. JSF is somewhat similar to the ASP .NET Web forms, but it is pure Java and has very good integration with Struts framework. Not coincidently, Craig MacLanahan, lead architect of JSF, is the main contributor for Struts.
JavaServer Faces is a very solid, standardized technology that greatly advances GUI development of the J2EE applications. Its popularity among developers makes it a clear winner in the frameworks space going into 2006.
Going into 2006, Developer.com’s product of the year contest demonstrated a very interesting trend. In general, developers prefer an open-source, free-license model or easily available technologies over the commercial or proprietary ones. This was true not only in the framework category but in other categories as well. There were a lot of winners from Sun Microsystems, Apache Software Foundation, and other applications with an open licensing model. The winner in the framework category indicates that Web development is a very strong area. Sun, and Java technologies in particular, are the favorite choice among IT developers and more projects are geared toward the Web platform. It will be interesting to see what new frameworks will emerge in 2006 and which product will dominate going forward.
- JavaServer Faces Technology: Sun Microsystems Inc.: http://java.sun.com/j2ee/javaserverfaces/
- Introducing JavaServer Faces (Jsf): http://roseindia.net/jsf/r/introducingjsf.shtml
- Microsoft .NET Framework Developer Center: http://msdn.microsoft.com/netframework/
- Eclipse platform: http://www.eclipse.org/downloads/index.php
- Spring Framework: http://www.springframework.org/
- Ruby on Rails: http://www.rubyonrails.org/
- Wikipedia: http://en.wikipedia.org/wiki
About the Author
Vlad Kofman is a Senior System Architect. He is implementing enterprise-scale projects for major Wall Street firms, projects under defense contracts, and projects for the U.S. government. His main interests are object-oriented programming methodologies and design patterns.