What is Java?
Java is a mainstream programming language which is usually compiled to byte code and then executed in a virtual machine (JVM) with help of JIT compiler. In theory it should be faster than traditional languages since program is prepared for execution directly on machine where it is supposed to be running, so JIT can use any special instructions this particular machine supports.
Java is similar to C language with some major exceptions: it does not support pointers and it supports garbage collection (automatic memory release) plus object-oriented programming (OOP - which is different than in C++).
Java supports OOP but is not as complicated as C++. This is mainly because of support for garbage collection and for example lack of multi-base inheritance. Java is easier to learn than C++, supports GUI in the standard (Swing, JavaFX), can be executed without any compilation or modification on every platform which has JVM installed (exception: Android).
Java is also very useful for scientific programming because of it's portability and high performance in long runs.
Why not Java?
Using Java can be difficult or impossible when you try to implement low-level software: OS, kernel, drivers, interrupt handlers. For this purpose using C probably would be better. Java can be also not suitable for some mixed-language architectures where usually C/C++ play a role of common platform.
Java does not support unsigned integer data type and some algorithms require it. There are several workarounds for this problem - see Unsigned integer.
|1996||Java 1.0||First public release|
|1997||Java 1.1||First stable release|
|1998||Java 1.2 / Java 2||JavaBeans, JDBC, RMI, JIT, reflection, Java Plug-in, Collections|
|2000||Java 1.3 / Java 2 (still)||JNDI, HotSpot, JavaSound|
|2002||Java 1.4 / Java 2||assert, Perl regular expressions, IPv6, NIO, logging API|
|2004||Java 1.5 / 5.0 / Java 5||generics, enumerations, autoboxing, annotations, static imports|
|2006||Java 6 (1.6)||scripting support, JAX-WS, StAX, JDBC 4.0,|
|2011||Java 7||strings in switch, try with resources, diamond operator|
|2014||Java 8||lambdas, annotations on types, date & time API|
1) Java (programming language) - Wikipedia.org
3) Java version history - Wikipedia.org