At the start of a project, during the Unified Process's Inception Phase and into the Elaboration Phase, you will make important architectural decisions for your software project. The choice of programming languages, tools, and application servers are all made during these phases. With respect to application servers, Enterprise JavaBeans (EJB) technology is likely one of your leading candidates. EJB is an excellent technology, but it isn't the only option available to you. How do you know when it is a good fit for your project? For your organization? To determine if EJB technology is right for you, consider the following factors:
-
Multi-platform support
EJB application servers are available for a wide variety of platforms, including Solaris, Linux, MVS, and Windows NT. This availability provides you with significant flexibility for deployment of EJB-based applications.
-
Multi-vendor support of EJB technology
EJB application servers are offered by several vendors, including BEA Systems, IBM, Inprise Corporation, and Secant Technologies to name a few (see Resources for links). There is even an open-source initiative called jBoss for the development of an EJB application server. You are not dependent on the product line of a single vendor if you choose to go with EJB. It is true that you would have some rework to perform to port your EJB applications to a different vendor's server but this effort would be significantly less than the complete rewrite that would be required to port to a non-EJB environment.
-
Scalability
EJB technology offers several strategies for developing scalable applications including stateless session beans and server farms. As your application grows, EJB technology will be able to support that growth.
-
Use of Java technology
EJB technology uses the Java programming language, which is the de facto industry standard for portable, multi-platform development using component-based and object-oriented techniques.
-
Existing developer skills
Your project will likely need people experienced in Java programming, object-oriented techniques, Web-based development, and component-based development to be successful using EJB technology. Although this seems like a daunting list, with the exception of substituting another language for Java, it is the same list that you would need for any of the other leading alternatives to EJB (such as Microsoft's DCOM/MTS, CGI and PERL, or C/C++). If your developers do not have these skills, you will need to either train them or hire from the outside.To gain the skills you need to develop mission-critical software using object-oriented and Java-based technology such as EJB, consult the resources listed in the "Further reading" section of Resources.
-
Ability to hire EJB developers
Because EJB has now been in use for several years, developers with experience in the technology are now available. The demand still outstrips the supply (in the computer industry, when isn't this the situation?) but people with the right skills are definitely available.
-
Industry mindshare
EJB technology, as well as Java and J2EE (Java 2 Enterprise Edition) products, have garnered significant attention within the information technology industry. These technologies are real, they've been proven in mission-critical applications, and they are here to stay. EJB technology is a safe bet.
-
EJB technology's true costs
Like any new technology, EJB has a significant cost of adoption because you will need to purchase new technologies, such as application and Web servers, and train your staff in new techniques. However, once you have made this initial investment, your cost of development is significantly reduced because of EJB technology's use of component and object-oriented technology. Deployment is also easier, hence less costly, because you deploy EJB software, using the tools provided by your application server vendor, to a handful of application servers instead of hundreds or thousands of desktops. Maintenance of EJB-based applications can also be lower than that of traditional applications because of its use of object-oriented and component technologies.
-
Availability of reusable components
There is a wide range of reusable components, both freely available as well as for charge. Examples include IBM's San Francisco, EJB and Java-based components at Component Source, and reusable business components available online at Flashline and Diamelle Technologies.
-
Support for e-commerce
E-commerce applications are typically Web-based and transaction-oriented applications. JSP technology and servlets, part of J2EE, address Web-based development and EJB technology supports transactions via stateful and stateless session beans.
-
BEA Systems
-
IBM
-
Inprise Corporation
-
Secant Technologies
-
jBoss
- You'll find other application servers listed at ServerWatch.
Scott W. Ambler is President of Ronin International, a consulting firm specializing in object-oriented software process mentoring, architectural modeling, and Enterprise JavaBeans (EJB) development. He has authored or co-authored several books about object-oriented development, including the recently released The Object Primer 2nd Edition, which covers, in detail, the subjects summarized in this article. He can be reached at scott.ambler@ronin-intl.com and at his Web site at www.ambysoft.com.