Java Q & A: Java
Brian Vincent writes:
I believe that this question relates to several issues, which I will attempt to cover in an organized manner.
Java on the Client :
When the average person thinks about software, they think about standalone or client software. This is where the biggest market exists, and where most of the software money is made. There are quite a few issues which make Java a hard sell for developing client software.
The Java language has been evolving very quickly, as programming languages go. In the past 3 years it has gone from version 1.0 to version 1.2 (due out at the end of next month). For a program, that seems like slow progress indeed, but as far as languages go it is light speed. A quickly changing language specification can make it difficult to write software, for several reasons. It makes it difficult to keep up with the latest changes in the language, and to make use of the newest capabilities. At the same time the user community is often using older software (such as browsers) which can only handle a much older version of the language specification.
Another issue is getting the Java interpreter (of the same version as your program) onto the client system. Since Java is an interpreted language, a piece of software, called an interpreter, needs to exist on the client before your Java program can be run. Most Java software now comes with a version of the Java Runtime Environment (JRE), which is the platform dependent Java interpreter. So getting the interpreter isn't the big issue, the problem is interpreter version control. Some people would say (and rightly so), that even version 1.0 Java programs would work with the latest Java interpreters, but that may not be true long into the future. Programs written in version 1.0 of the Java language will not always work with the latest Java interpreter, because some of the older functionality is deprecated, and is being phased out in newer versions.
There are groups working on getting these problems solved, and making Java a viable solution to client side problems, and there are plenty of good reasons to do it. From a development standpoint, writing programs in Java can save a company a lot of time and money, and if that money and time is to be saved, the problems for Java on the client side must be solved. The Java Lobby put together a petition to get all PC Hardware Vendors to include a standard Java runtime environment with every new PC.
In addition to the Java Lobby's petition (which I signed, electronically), a method to install the latest and greatest JRE needs to be made easier, and a method to update older Java programs to use the latest (and non-deprecated) methods needs to be devised. With all 3 of those problems solved, Java should be able to thrive on the client side.
Java on the Server:
The server side of the Internet has been where Java is thriving. Java's Servlet API (Application Programming Interface) has become fairly popular in the web development community. In addition to the Servlet API, several other new Java API's are making Java and the Internet a perfect match. The Java EJB (Enterprise Java Bean) API is becoming very popular with developers who need to span several operating systems and environments, and for Database access using the JDBC (Java Data Base Connectivity) API.
System Administrators are used to having to configure complex environments, so the issues with JRE configuration aren't as important.
Killer App can mean something very different depending on the person, so I will try to cover several very promising systems which are either written entirely in, or rely strongly upon, the Java programming language.
Prax War could be the biggest boost to Java client programming to date. It is a 3D-shooter type game (ala Quake II), and other then the rendering code, the entire thing is written in Java! This game hasn't been released yet, but so far I haven't heard anything but good things about it. The use of Java in games, as well as the growth of OpenGL could allow for games to be made available for ANY operating system (which has OpenGL support).
Much of (and maybe event most of) the server side software suites are integrating Java into their systems. One of the biggest supporters is Oracle, and they have been pushing Java for the last few years. Oracle is beginning to integrate Java into the deepest recesses of their database, including allowing the creation of database triggers and procedures in Java.
To sum up, there are some problems with Java on the client side which need to be resolved. This, in combination with the lack of an existing user base, makes people very hesitant to deploy Java client applications. If Prax War does well it should be a very big boost to the cause. Once the problems are solved (and they really aren't that bad), Java should start gaining acceptance on the client side. JDK 1.2 adds some capabilities that developers have been waiting for, such as the Java 3D API, Drag and Drop, the Java Mail API, and the Java Help API. All these can make developing solid applications far easier, and faster.
Thanks to Brian Vincent for the question, and I hope I answered it at some point in this article.
The writer of this article welcomes your comments: firstname.lastname@example.org