Login | Register   
RSS Feed
Download our iPhone app
Browse DevX
Sign up for e-mail newsletters from DevX


Server-side Subjects Drop Java's GPA

There's a lot to love in Java, but it can be far from a cakewalk. Find out why, in some scenarios, Java scores only a middling B-.

'll get right to the punch line: The choice between implementing real-world server-side solutions in Java vs. alternate technologies is not a foregone conclusion. More often than not, the concrete APIs and services offered by the Java 2 Standard Edition and Java 2 Enterprise Edition platforms meet or exceed the competition, but in several key areas related to server development, the tools available on these popular platforms are weak.

When a project's requirements coincide with Java's server-side weaknesses, the resultant Java solution can be difficult to build, non-portable, and hard to maintain. This is why my overall grade for using Java to build the various real-world servers businesses demand is only a B-.

This assessment of Java's advantages and disadvantages regarding server-side development breaks along three somewhat orthogonal axes. I examine the platform's facilities imbuing Java solutions with key server attributes: scalability, extensibility, throughput, security, manageability, and code-base maintainability. Java provides wonderful support for some of these attributes, but for others it falls far short of ideal in terms of convenience and support.

J2SE has several advantages for real-world services. An analysis of Java's performance against its competition indicates that its platform independence, binary standards for code distribution, and J2SE's inherent stability combine to give the Java platform portability advantages that far outweigh the competition. In fact, projects whose requirements coincide with these strengths simply can't be built on alternate platforms (at least, not without exponentially more effort).

Examining non-technical areas and focusing on project management, the J2SE and J2EE platforms enjoy a large base of developers, decent tool sets, and wide industry support. From a project-management perspective, Java is in a league whose only other member is the suite of tools and technologies soon to be offered by Microsoft Corp.—those of the Visual Studio .NET platform.

With that in mind, let's now get to the bottom of the strengths and weaknesses of Java as an enterprise server technology.

J2SE Report Card   J2EE Report Card
Category Grade Comments Category Grade Comments
Scalability C Reliance on blocking I/O libraries limits potential. Java 2 v1.4 non-blocking APIs should help. Scalability B+ Frameworks target scalability well. Complex component models and weaknesses inherited from J2SE can hamstring implementations.
Extensibility A+ Late-linking plus platform-independent binary class definitions—awesome! Extensibility B Open component model definitions are great! Need more guidance on patterns and usage.
Throughput B- See blocking I/O comments above; interpretive nature of Java degrades performance vs. platform-specific compilation. Throughput Varies Very container-dependent.
Security B+ Very nice framework; lower marks for poor documentation of advanced techniques and capabilities. Security C Portable security descriptors are nice, but lack expressiveness