§ C++ is a general purpose
programming language developed at the beginning from C programming language.
It was developed by Bjarne Stroustrup at Bell Labs in 1979.
§ Java is another programming language which has been influenced
by the C language. It derives much of its syntax from C and C++. However it
has fewer low-level facilities than either.
§ C++ helps both procedural and
object oriented programming language so it is known as a hybrid language.
§ Java is an object oriented language where everything is
defined in terms of class and objects.
§ C++ was designed for system
and application programming extending the C programming language.
§ Java in most cases was created as an interpreter for
printing systems and support network computing. It is based on a virtual
machine to be secure and highly portable.
§ C++ is not a memory safe
§ Java is a memory safe language which means that mistakes in Java packages are
detected in defined ways.
§ C++ relies on non-standard
third party libraries.
§ Java incorporates preferred libraries
for solving specific tasks.
§ C++ uses memory allocation
and de-allocation functions.
§ Java has an automatic system for allocating and freeing
memory also known as garbage collection.
§ C++ supports all data types.
§ Java does not support the struct, union and pointer
§ C++ does not have built in
support for threads. It relies on third-party libraries for thread support.
§ Java has built in support for threads.
§ In terms of performance or
speed when you convert optimized C++ to Java, the code is about 3x slower.
C++ is still faster in most operations than Java.
§ Java at the moment even at low-level and numeric
§ C++ is normally compiled
directly to machine code that is when execution is directly done by
the operating system.
§ Java is normally compiled to byte-code that
the Java virtual
machine (JVM) then either interprets or JIT compiles to machine code and then executes.
§ C++ has destructors.
§ Java has finalizers. Both c++ and
java are invoked prior to an object’s deallocation but they differ
§ If a class during code
changes grows in data size, C++ code has to be recompiled since it’s the
instantiator’s task to allocate memory and needs knowledge about size.
§ It not the case in java. It’s easier to keep
§ C++ is a platform-dependent
language. C++ core is platform specific. Although, there are libraries that
help to make porting quite easy.
§ Java is portable. Java provides a true source code
portability and CPU architecture portability.
§ C++ has templates.
§ Java has generics