When evaluating tools and frameworks, it's very important to understand how they support the specific applications that your teams are developing. Using tools that are well designed for the task at hand should always be the primary focus. One way to cut through marketing hype and get to the bottom of a potential new tool is to first go back to the most basic Java development tools and to see where the new tool takes you from there.
Project managers are often inundated with a plethora of choices, some easy, some not-so-much. There's jQuery vs MooTools for the front-end UI work, Spring vs Grails vs Ruby on Rails for general Web development, Scala and others for more scalable applications, and a host of other specific uses for which one of a number of tools can potentially help ease development. The core of the development, however, can be accomplished with a minimum of tooling. These are the three main weapons around which you must build your application development arsenal:
- The Java Development Kit (JDK)
- A Web server /container (such as Apache Tomcat)
- A Web application framework such as JavaServer Faces (JSF)
While specialized tools certainly make the process easier, there are actually only a few tools that every Java developer needs in order to build Web applications. The Java Development Kit is the most important item on this very short list. In addition, there are no substitutes for the JDK. You may find that a specialized application server or an alternate Web application framework serves your needs better than the standard combination of Apache Tomcat and JSF, but if you're not using the JDK, then you're not developing Java applications. Once they install and configure the JDK, there are two more important tools to get in place before Java developers are ready to actually build their applications.
The second most important part of the puzzle is the Web server and container. The function of the Web server is to deliver files over the internet. The container part of the web server is to host Java based web components that are based upon the Servlet and JSP specification. This is the important link between the client and the server in the client-server model of application development. Without the Web server and container, a server-side application would be too isolated to do much good. Apache Tomcat is a very popular Web container that supports Servlet and JavaServer Pages (JSP) technologies. According to our most recent user survey, Tomcat is projected to be the fastest growing web container over the next eighteen months. Benefits including flexibility, frequent improvements, ease of use and low cost make installing an Apache Tomcat a good choice.
The final piece of the puzzle is the application framework. A Web application framework is not quite as strictly necessary as the JDK or the Web server, but it is still very important. The application framework provides a library of patterns, features, and functions that ease some of the repetitive tasks associated with writing code for Web-based applications. Without an application framework it would necessary to type out every line of code by hand. Many teams install JavaServer Faces for building enterprise applications because it has gone through the Java community process and is officially a part of the Java Platform, Enterprise Edition (Java EE).
With these three tools in place, a Java development project can get underway. As the project progresses, the team will likely find that there are additional tools that are either necessary to expand the team's ability to add new features to their application or to make the process faster and more efficient. Each potential new tool should be evaluated against your existing arsenal. Adding new tools will probably only benefit the team if it allows the team to do something they are currently trying to do without success or if it automates some part of the processes they are already doing. Otherwise new tools may just mean more training.