Differences Between C++ vs Java

C++ and Java both are object-oriented programming languages, still, both C++ and Java languages are different from each other in many ways. To begin with, C++ vs Java have different design goals. C++ was implemented for application and system development and is an extension of C language. Along with the features of the procedural language, C++ has an added support for object-oriented programming features, exception handling, generic programming etc. C++ also has a standard library with many generic containers and algorithms.

Java was developed earlier with the functionality of an interpreter for printing systems which later supported network computing. It is built upon the virtual machine which is highly secure and portable in nature. It is grouped with a comprehensive library implemented to provide support for abstraction of the existing platform. Just like C++, Java is also statistically typed object-oriented programming language with a similar with an incompatible syntax. The main purpose of developing Java was to develop an easy to use and widely available programming language. Java has an extensive documentation as well which is known as Javadoc.

C++ uses pointers while Java does not involve pointers. Java uses the concept of ‘restricted pointers’. A C++ program is run and the compilation is done using its compiler. The compiler in C++ converts source code into machine level language which makes C++ a platform-dependent language. In Java, java source code is first converted into bytecode at the time of compilation. This bytecode is then interpreted by the interpreter and runtime to produce the output that makes Java a platform independent language.

C++ does not provide built-in support for threads whereas Java support threads implicitly. Though in the latest implementation of C++11, it does have support for threads as well. Java is much like C++ but does not involve complex concepts like structures, operator overloading, pointers, templates, unions etc. Also, Java doesn’t have support for conditional compile (#ifdef/#ifdef type).

Every entity is an object in java except fundamental types. Java has a single root hierarchy as everything emerged from java.lang.Object.

C++ vs Java

There are many differences and similarities between C++ programming language and Java.

Comparison Index C++Java


C++ is platform-dependent.

Java is platform-independent.

Mainly used for

C++ is mainly used for system programming.

Java is mainly used for application programming. It is widely used in window, web-based, enterprise and mobile applications.

Design Goal

C++ was designed for systems and applications programming. It was an extension of C programming language.

Java was designed and created as an interpreter for printing systems but later extended as a support network computing. It was designed with a goal of being easy to use and accessible to a wider audience.


C++ supports goto statement.

Java doesn't support goto statement.

Multiple inheritance

C++ supports multiple inheritance.

Java doesn't support multiple inheritance through class. It can be achieved by interfaces in java.

Operator Overloading

C++ supports.

Java doesn't support operator overloading.


C++ supports pointers. You can write pointer program in C++.

Java supports pointer internally. But you can't write the pointer program in java. It means java has restricted pointer support in java.

Compiler and Interpreter

C++ uses compiler only. C++ is compiled and run using compiler which converts source code into machine code so, C++ is platform dependent.

Java uses compiler and interpreter both. Java source code is converted into byte code at compilation time. The interpreter executes this byte code at run time and produces output. Java is interpreted that is why it is platform independent.

Call by Value and Call by reference

C++ supports both call by value and call by reference.

Java supports call by value only. There is no call by reference in java.

Structure and Union

C++ supports structures and unions.

Java doesn't support structures and unions.

Thread Support

C++ doesn't have built-in support for threads. It relies on third-party libraries for thread support.

Java has built-in thread support.

Documentation comment

C++ doesn't support documentation comment.

Java supports documentation comment (/** ... */) to create documentation for java source code.

Virtual Keyword

C++ supports virtual keyword so that we can decide whether or not override a function.

Java has no virtual keyword. We can override all non-static methods by default. In other words, non-static methods are virtual by default.

unsigned right shift >>>

C++ doesn't support >>> operator.

Java supports unsigned right shift >>> operator that fills zero at the top for the negative numbers. For positive numbers, it works same like >> operator.

Inheritance Tree

C++ creates a new inheritance tree always.

Java uses single inheritance tree always because all classes are the child of Object class in java. Object class is the root of inheritance tree in java.


C++ is more nearer to hardware.

Java is not so interactive with hardware.

Object oriented

C++ is an object-oriented language. But in C language, single root hierarchy is not possible.

Java is also an object-oriented language. But in Java, everything (except fundamental types) is an object in Java. It is a single root hierarchy as everything gets derived from java.lang.Object.

  • Java doesn't support default arguments like C++.
  • Java does not support header files like C++. Java uses import keyword to include different Classes and methods.