Java is designed to be simple and very easy to learn. It contains so many useful features. So for that reason it is not so popular today. Clearly a decision was made to hide some problems rather than to give people the means to solve them. Although Java is classed as an object-orientated programming language and one of the easier programming languages to start learning, Java’s primitive types are not objects and so consequently it is not a pure object-orientated language.
Java has the following problems:
- A Java compiler can not logically test as much of a program’s design as a C++ compiler can.
- Some design problems may not be found, even at run-time, until too late.
- There is not enough separation between interface and implementation.
Java developers could document the behavior of every method but they rarely do, and there is no formal guarantee that the code will comply with the constraints described in its documentation. Ideally, a design would be perfect from the start, developers would make no errors while implementing it, and all of the code would be completely documented. In the real world, designs are perfected only in the course of development, simple errors are made, and documentation is incomplete. This is the reality, but java does not help us deal with it.