Java Weaknesses/Disadvantages

After All That Has Been Said, Does It Have Any?
Yes
Java is slow
Interpreting byte codes is 10-30 times slower than native execution. Using
JIT (= Just In Time) compilers interpretation speed can be improved by
factors ranging from 7-10, but still not as fast as native execution. There
are other features that slow down Java execution. Examples are
- programs are dynamically linked
- array bounds are checked on each array access
- all objects are created on the heap (no objects are created on the
stack)
- all uses of object references are checked at runtime for null
- all reference casts are checked at runtime for type safety
- garbage collection likely less efficient than well-done customized
memory management in C++
- primitive types are the same on every platform, rather than adjusting
to the most efficient size on each platform as is done in C/C++
- strings in Java use UNICODE which is less efficient than ASCII.
The Java I/O Package (for character based I/O) is difficult to learn to use
This is particularly a problem when teaching Java as a first programming
language.
Many class libraries contain (mostly relatively minor) imprefections
