A number of criticisms have been leveled at the
Java programming language and the
Java software platform for various design choices in the language and platform. Such criticisms include the implementation of generics, forced object-oriented programming only, the handling of unsigned numbers, the implementation of floating-point arithmetic, and a history of security vulnerabilities in the primary Java VM implementation
HotSpot. Additionally, Java, especially its early versions, has been criticized for its performance compared to other programming languages, some of which the Java community (before it was a community) had claimed it would better. Developers have also remarked that differences in various Java implementations must be taken into account when writing complex Java programs that must be used across these implementations.