<< c++ is a bit more a "windows" language like VB. although jave is not necessarily a linux language either but C is . >>
Well, not quite. C++ isn't a "windows" language at all like VB -- Visual Basic is a complete fabrication of Microsoft. It's a GUI and application builder for Win32 specifically, and is based on a language pretty much owned by Microsoft.
ANSI C++ programs will compile to any platform with a decent C++ compiler. C++ has nothing to do with Windows, as it is just a language. C isn't a Linux language either. Sure, Linux is written in C, along with 90% of the code written around it.. but C came way before Linux (it was invented for the original UNIX).
To answer the question at hand, Java is a stripped down C++ with high-level features like automatic garbage collection so the programmer doesn't have to manage their own memory. Java is intended to be cross-platform at the binary level, and consequently compiles to byte-code binaries instead of true executables (like a C++ compiler will produce). The result is that the Java program will be (in general) more secure, less prone to error, but will also be much slower than a natively compiled C++ application (assuming same algorithms are used). You can usually write an application in Java in a shorter period of time than you could in C++ as well. A JVM (Java Virtual Machine) is used to execute the compiled bytecode.