Java’s inherit features, such as heterogeneous interoperability and object-oriented development, make it well suited for very large software projects on distributed systems. The Java Platform, Enterprise Edition (Java EE) is a set of standard APIs for developing server software. This is an extension to the Standard Edition, intended for desktop software. (There is also a Micro Edition for embedded systems.)
Furthermore, there are a number of application servers that can run Java software for client computers, much the same way as CGI scripts are executed on a remote machine. Among the more popular servers are WebSphere (IBM), WebLogic (BEA), and the open source JBoss (soon to be supported by Red Hat). Applications executed on these servers can interact with databases to provide specific functionality in the form of web services.
Given Java’s success in enterprise computing, there was some hope that the language could be used in technical computing. Experimentation in this field (particularly through the Java Grande Forum) has been muted in recent years as Java’s performance has not matched that of C++. Furthermore, as detailed previously, a domain-specific platform such as MATLAB or Mathematica may be more suitable.
Java’s main competitor in enterprise space in .NET, Microsoft’s own platform. So far though, .NET has not enjoyed the same level of success.