# Java: Weaknesses

Altho Java is arguably the best overall programming languages, but there are problems with it.

InstallingJava Programs | Elliotte Rusty Harold, author of several good Java books, described one of Java's main problems as "Java's insanely complex, difficult and unintuitive installation" process. You won't find any disagreement with this, altho it has improved in recent versions..
Changes | Java has serveral versions - 1.0, 1.1, the Java 2 series (1.2, 1.3, and 1.4), and a mysterious leap in numbering to Java 5 (also known as Java 1.5). Each version contains major improvements, but this has also created compatibility problems.
Speed | Java programs run faster than Visual Basic programs, but are sometimes slower than C programs. Java's speed has been improving with every new version, and it is now close to C/C++. To put this in perspective, the difference in speed is probably less than the hardware speed improvement in one year.
Lack of a few Features | Java lacks a few features that some C++ programmers find useful, for example, macros and operator overloading. Many of the "features" of C++ that are not in Java have been removed to make the language better (eg, pointers and multiple inheritance).
Enemies | Because the portability of Java programs allows users to move programs from one operating system to another, users are no longer locked into one system. Java has been a great threat to Microsoft's monopoly, and therefore Microsoft has opposed it for many years, making integration with Windows awkward. More recently Microsoft has responsed by creating C#, a language which is pretty much a clone of Java. Apple computer likewise shows little enthusiasm as suggested by their poor support for Java. It is, of course, good business strategy to create large switching costs for your customers. But it's not in the customer's interest.