|
There are still problems, but in my opinion, Java's current shortcomings are largely an outgrowth of Java's inability to live up to Sun's rather ambitions promises. Things are improving almost daily, but there is still quite a way to go before the following promises are fulfilled.
Promise: Write Once. Run Anywhere
The same Java application will run on any machine and perform identically on all of them. A Java application will run unmodified under Windows, UNIX, OS/2, AS/400, Macintosh, and many other operating systems.
Reality: Write Once. Test Everywhere
A Java application can be made to run on multiple platforms. However, it requires testing on all target platforms and lengthy "test and tweak" cycles. The situation is getting better as Java matures, but at the moment, one simply cannot assume that an application will behave identically on all platforms.
Promise: No Localization Headaches
Java supports internationalization and multilingual computing at a far more fundamental level than other development environments. In fact, a Java application can be written in such a way that the program will automatically reconfigure its interface to match the language of OS that's running it.
For example, a Java application can be placed on the server, and when someone running Japanese MacOS double clicks it, the interface will be a Japanese one. When the program is run from a workstation running English Windows NT, the interface will be in English. A single copy of the application supports all languages.
Reality: New Development Headaches
While Java's support for multilingual computing is fantastic, the existing tools for building and maintaining such functionality leave much to be desired. Vanguard has had to create our own (non-Java) tools to manage multilingual application development in Java.
Promise: Transparent Database Access
Java's JDBC provides seamless database access. Applications can access data stored in virtually any human-language in any almost database system running under almost any operating system. The programmer never has to worry about the specifics of the database.
Reality: Nice Try Sun
Actually, as long as the Java application is running under the same operating system and in the same human-language as the database, JDBC is a dream to work with. Unfortunately, in the real world we often need to store Japanese data on a machine running an English OS, and the operating systems of the database server and the client are often completely different.
Most of Java's data-access problems stem from the fact that rather than allowing the programmer to specify how data is to be written to a database, Java delegates this critical task to the JDBC drivers. These drivers are developed by third-party vendors, and the way they handle character encoding is inconsistent.
Almost all of these problems can be solved by careful evaluation and selection of JDBC drivers. However, writing Java code that will work correctly with any database on any platform is like passing a camel through the eye of a needle. It can be done, but the process is unpleasant (particularly for the camel), and you end up with a revolting, unrecognizable mess.
|