I know it since Sun introduced it and it was a saner experience than C++ back in the day, when each compiler implemented their own vision of the ongoing working standard.
There are only three things I don't like about Java, proper AOT compilation is only available in commercial JDKs and lack of value types, and use of @Overrides annotation instead of adding a proper keyword.
The first two will hopefully get addressed in Java 10, assuming Oracle doesn't change their minds about the language.