The sheer complexity of server-based Java development is hampering its deployment in enterprise networks, according to a report released Wednesday by the Meta Group.
Many large companies have picked Java as a key technology for building new server applications. But the combination of Java APIs and services, which are defined by the Java 2 Enterprise Edition (J2EE) specification and the application servers that host them, create a complicated framework for building and running applications.
The Meta Group market evaluation says that Microsoft Corp.'s .Net will be the main Java rival in the enterprise for the next 18 months. Microsoft's marketing consistently emphasizes the comparative simplicity of using .Net instead of Java to build Web services, which rely on standard protocols such as XML and Simple Object Access Protocol to share data easily. Java advocates counter that Web services can be built nearly as easily in Java, and that .Net currently lacks the sophistication to handle large-scale, distributed applications.
Despite the warnings, the Meta Group authors don't expect big companies to abandon J2EE. Instead, these users need to build up Java expertise, partly through carefully focused Java development projects.
The report predicts the group of vendors in the Java application server market will continue to dwindle over the coming year, as smaller companies shut down or get acquired. Partly as a result, the report recommends that network executives base their choice of vendor more on market share and the vendor's long-term viability than on any temporary technical superiority. BEA Systems Inc. and IBM Corp. are generally considered the leading application server vendors, and Meta Group predicts they will remain dominant.
The technical capabilities among the various vendors are "moving toward relative parity," according to the report's authors. For the next two to three years, the main differences between the application servers will be features, tools, and frameworks (which are typically libraries of ready-to-use code and components) to make development easier and faster.