J2EE Project Types
Tailor Criteria to Your Needs
Your project will have specific needs and multiple priorities. Agree on these issues before beginning your search for an application server. The sections in this article discuss what I consider to be the most (and least) important criteria for different project types. The following are the five types of projects I address:
Once you have established your criteria, you will have various types of app servers from which to choose. I will discuss the following app server categories:
- Entry JSP/Serv—JSP and servlets (no EJBs)
- Entry J2EE—Full J2EE (low-cost)
- Midrange J2EE—Full J2EE, fault tolerance, and support from an established vendor
- Advanced J2EE—High-end features, large community, significant technical support, rock-solid product, large market share
- High-end J2EE—Compliant, massively scalable and reliable, proven in huge applications, platinum support, bulletproof, typically a smaller market share
Learning Environment
This category encompasses academic exploration, including university and personal or professional development. The learning environment's priorities and criteria often are significantly different than those of large e-sites.
Top Priorities
- Cost—To keep costs low, individuals may wish to look into evaluations, and schools may wish to look into education discounts.
- Compliance—Missing features can hinder learning. Look for good support for the latest versions.
- On-line Support—Look for Web resources, newsgroups, etc. to help you as you learn to develop J2EE applications.
- System Requirements—Schools and individual users have all sorts of configurations, so try to deal with an application server that offers broad platform support (especially Solaris and WinNT/2k)
- Run-time Server Debugging—Good debugging principles are critical in the learning environment, particularly in school systems. However, if you cannot find an educational discount, beware of high-priced debugging tools.
Low Priorities
- EJB Support—When you dive into J2EE, your first choice may simply be to get into some Java programming, learn about DB connectivity, and dive into Web development. I would still suggest going with EJB support because you eventually will want it and there is no sense moving to a different application server at that point.
- Licensing and Certification—Although support for the latest features is good, an educational setup can probably tolerate higher defects in the application server than high-traffic e-sites can. Since licensing and certification cost money, they often oppose the goal of low cost.
- Scalability and Availability—Although learning about
clustering, fail over, etc. is good, it shouldn't be a critical requirement for a
learning environment.
- Value-added Support Options—Standard support via e-mail should suffice. Most educational institutions or individual users will not want or be able to pay for additional support.
- Performance—Concurrent hits tend not to be too high, so the demand for high performance shouldn't be either.
- Administration—Configuration of the architecture and applications should not be required that often.
- Track Record—The product's/vendor's history is a lower priority—if the product is discontinued, the trouble of moving to a new one is not significant.
Recommended Option
If a school can afford the resources and negotiate educational discounts on a high-end application server, then it should. However, my suggestion is to aim for Entry J2EE app servers. You should be able to find an option that is free for non-commercial use, provides good coverage of the J2EE specification, and is an efficient implementation that does not require high-end hardware.
Small Intranet
A small corporate intranet needs to keep costs and maintenance at a minimum. In some organizations, maintaining the corporate intranet is a part-time task that just a few individuals can handle. Consequently, the system cannot be overly complex, and performance is certainly a lower priority given the small number of concurrent users hitting the intranet site.
Top Priorities
- Cost—Keep overhead down.
- On-line Support—Good resources help to keep costs down and make it easier to continually improve the site.
- Quick Support Response—Quick support response is important for minimizing downtime.
- Win2000 Supported—Many small intranets are Windows-based, so lots of them go to WinDNA architectures. For other small intranets though, the ability to prototype and host the site on an easily administered Win2000 box is a plus.
- Developer Efficiency—Developing and working on the site should be easy. One exception is a corporate intranet site that also is a learning opportunity, in which case the learning environment discussion may apply more accurately here.
- Easy Administration—Sys admins should not need complex training to ensure that the site is configured properly and running efficiently.
- History of Product and Vendor—For a small company or office, a corporate intranet site represents an investment. The product should be stable.
Low Priorities
- Performance—Performance is a priority, but a high-performance server that can handle large numbers of concurrent users is not all-important for a small internal site. Bandwidth should also be less of an issue, meaning that sophisticated caching becomes less of a priority.
- Licensing and Certification—Although the product should work and
support a reasonable feature set, it does not have to be bleeding edge, nor does
it have to be 100% complete.
- Scalability and Availability—The system should be stable but need
not be bulletproof.
- Value-added Support—Most issues will probably be resolved through internal resources or standard support. Platinum support is a luxury for a site that receives a few thousand hits a day.
- Broad Platform Support—Hardware generally is stable within an office, and the office probably isn't jumping around hardware selections too often. Just ensure that the desired OS and a reasonable backup OS are both supported.
Recommended Option
A small corporate intranet will need a stable, working solution. Choosing the cheap Entry JSP/servlet solution may be tempting, but I think that this would be a mistake. Not only does an intranet probably require stronger support, but also legacy interfaces to external systems (financials, admin, mail, etc.) are better handled with the advanced capabilities of a full-blown J2EE system. Furthermore, a small office may have to double up on its site to offer some educational services and would benefit from full-blown ORB, EJBs, transaction support, etc. I recommend the Midrange J2EE option as a good compromise. (At least one Entry JSP/servlet solution (Weblogic) can be purchased in an "express" configuration, which for a fee can be upgraded to a full J2EE application server with minimal disruption.)
Enterprise Intranet
The enterprise intranet is an internal site that handles frequent hits throughout
the day. It is likely a critical part of the company's operations. This system might
support configuration management, data/document management, financials, employee admin and more. Downtime hampers productivity, so an intranet site solution usually receives a larger portion of the overhead budget.
As the sites become larger and more critical, more and more of the selection criteria become high priorities.
Top Priorities
- Compliance—Although compliance with the latest specifications is not critical, the system must work as advertised. Partial support is not desirable since stable and predictable performance is important.
- Scalability and Availability—The intranet system is a critical part of a large company's operations and as such must operate effectively and quickly, and be protected against data loss.
- Performance—The server must be dependable. A large number of users may concurrently access the system at critical times (i.e., during quarterly reporting periods, large project milestones, etc.)
- Administration—The system has to be easy to administer and monitor. Although at least one full-time sys admin probably will be assigned to this site, they will need easy access to reports, faults, performance bottlenecks, etc. Re-configuration of the system should be easy and quick to minimize downtime and avoid complex admin training.
- Support—Support must be thorough and responsive. If the site is large, pay the additional cost for value-added support options and on-site support.
- Track Record—The product should be stable, and the vendor should have a strong reputation. A large corporate intranet site represents a significant investment that should last.
- Consultant Availability—Problems and short-term, complex tasks may arise that consultants can quickly target and address or, when necessary, support upgrades.
- Training—Given that a team (of at least one) will likely be assigned to this project, good and reasonably priced training should be available. Research e-learning courses for the product, but allow quite a bit of time if the team must ramp up on J2EE technology.
Low Priorities
- Upfront Cost—Lifecycle costs (yearly maintenance, development tools, upgrades, etc.) represent a much higher cost than the upfront purchase costs.
- Latest Features—This site needs to be stable, not bleeding edge. Functionality such as JMS and advanced transaction support is important, but the latest specifications may not be as critical to your system. Moreover, they could prove to be a bit too new for you to safely adopt.
Recommended Option
An enterprise intranet is perfect for the Advanced J2EE configuration. This option is very safe (widely adopted), stable, and well regarded. Most of the functionality that your site would need likely will be included in the configuration, including SSL, transactional support, efficient EJB architecture, excellent admin tools, broad platform support, and more. At this level, training and support are generally top notch and the on-line community is quite active in exchanging ideas and fixes.
Small Internet Site
Admins for an Internet site that gets less than 250,000 hits a day generally try to keep hosting costs down and look for good performance under normal conditions. They don't expect large peak surges that can overload the system. A small Internet site might alternatively be developed in PHP/MySQL, ASP, Cold Fusion, or even CGI. I am also assuming that most small Internet sites are remotely hosted.
Top Priorities
- Cost—The server should be cheap or free, because it probably will be included in some hosting plans.
- On-line Resources—Getting answers has to be easy and free—look for newsgroups, official and unofficial sites, FAQS, etc.
- Win2000 Support—If you are going to remotely host your Internet site, you should run a low-cost local Windows instance (with low system requirements) of the server on your machine. This will allow you to test your code before deploying it to your hosting service.
- Linux/FreeBSD Support—Most hosting services run on these Unix variants or on a Windows machine.
- Performance—Since your site will not experience heavy traffic, worry about user response. The implementation should be efficient and well integrated with the server, and it should support efficient database interactions.
Low Priorities
- EJB Support—Very few (if any) hosting plans would ever include a server with EJB support. Unless you are sure that you will never move to another hosting plan, you forget developing EJB-based architectures. Even JSP/Serv hosting options are much less common than the standard fare.
- Compliance—Although you will want a working API, you probably should not chase the latest and greatest features. You most certainly will not need formal certification and licensing since that would oppose the goal of a low-cost server.
- Scalability and Availability—Although these features would be nice,
the cost constraint makes them unlikely.
- Training—Training is unlikely for most Web developers looking in this price range.
- Support Options—Support generally will be through on-line resources associated with the product and unofficial sources (i.e., newsgroups, FAQS, etc.)
- Broad Platform Support—You probably won't look for hosting plans on Solaris and HP/UX for small sites. Low-cost hosting plans exist for these platforms. Expect Linux, NetBSD, FreeBSD, and WindowsNT/2000 to dominate the hosting market.
Recommended Option
The best option for a small Internet site certainly is the Entry JSP/Servlet
application server. You can find free app server implementations that support JSP and
servlets, run on a number of platforms, have excellent on-line support, and are
available via low-cost hosting plans.
Large Internet Site
A large Internet site will have to plan for heavy traffic and massive peaks, depending on
the market of the site. It also needs to have a very high quality-of-service measure to
ensure that it runs 24 hours a day. This site likely will consist of at least one physical machine that provides redundancy, scalability, and perhaps distribution of the architecture for performance and/or security reasons.
Priorities
For this configuration, I personally feel that all criteria are important, none can be
deferred. Loading of the site is difficult to predict, and performance must be scaled
quickly and with minimal disruption. The system must work as advertised, provide superb
support, fully maximize development efficiency, and come from a stable and known
vendor.
Recommended Option
Thoroughly evaluate high-end servers to deliver the requirements of your
large Internet server. Underestimating issues such as scalability and support can be very costly to the entire company, if not catastrophic—if your server can't grow with the company, you made the wrong choice and cost the company lots of money. The obvious considerations in the high-end server market are the high costs and on-line support. Also, because of their elite status and high prices, these high-end solutions often do not enjoy the large on-line developer communities that the less costly solutions do. However, you do generally get what you pay for with these systems, but you still should do your homework first.