Microsoft have been making a lot of effort to stop the growth of Java, mainly by excluding the Java Virtual Machine (JVM) from the standard configuration of Windows XP. In place of Java Microsoft are luring their faithful followers away by introducing the alternative of C#. In fact C# and the relevant run-time support are in fact technically as good as Java, but we simply didn't want yet another option. If C# was a genuine open system then being able to choose between two architectures and tools wouldn't be a bad thing, but C# is aimed at trapping users into Windows XP.
Java was introduced as a tool to enhance Web pages by downloading an executable Java applet; this also meant that software updates could be implemented by simply upgrading the server copy of a program, avoiding one of the major problems created by thousands of individual PCs. This however did not prove the panacea it promised, much to Microsoft's relief, for two major reasons, the slowness of most peoples Internet connection, but also because developers didn't understand the need to design very small applets! Most were brought up on PCs, and there has never been such an environment for developing bad programming habits. Thus Java applets, the ones aimed at the client, have only been of limited use. Despite this there is still a nasty battle going on between Sun and Microsoft over XP support. Thus attention has been drawn away from the server, which is where the real action is taking place.
A good model to work with is the one in which the client devices are handled by an "appliance server", while the integration with the database or legacy application is handled by the "application server". In the future it is possible that all of the application logic will be focussed on the application server, connected to a database. However, for the foreseeable future, most systems will use the application server to connect to existing systems. These can take various forms, including screen scrapping, calling transaction routines, and eventually reuseable components. The latter may be new, but there is a big advantage in extracting them from legacy systems if possible.
The appliance servers are based on HTML, with extensions from cookies, scripts, ActiveX and Java applets. In the long term XML based pages may replace the current ones, but at the moment everything is made difficult by inconsistencies in the browser standards. In any case most systems will be improved by replacing the latest Web interfaces with much simpler screens which avoid the use of a mouse.
The appliance severs then are not the critical elements in the battle for dominance of the key enterprise systems, it is the application servers. There are three base classes of application server, database extensions (mainly Oracle), Microsoft Active Server Pages (ASP) and Enterprise Java Beans systems. There are also a number of earlier application servers such as Cold Fusion which preceded the EJB specification. These products are now delivered with EJB support, but there are still some satisfactory installations with the earlier releases. Oracle users are clearly tied into Oracle, which includes EJB support. ASP users are equally tied into Microsoft and the Windows operating systems. The leading Java based application server product is BEA WebLogic, followed by IBM's WebSphere and Sun's server. HP are proposing to make inroads into the market by giving their server away! There are some powerful OSS products too, notably Apache. It doesn't take much effort to see that the future lies with Java, but not so much on the client as on the server. If users wish to continue with Windows then they can do so because all the Java based application servers run on NT.
Since one of the major activities over the past few years has been in Web-enabling systems, there has been an above average amount of effort spent on the new technologies and they have matured much quicker than is the norm for the IT industry. And since most legacy systems are running on mainframe and Unix platforms, they have been the major environments to benefit. Thus while GUI Java applets have failed to take over the client, EJB has quitely taken over the role of application integrator and is now far from dead, but is the dominant development environment, and is the future.