Why do people fight over Java Vs C++?

C++ and Java are the most widely used programming languages in the field of computer programming all around the world. The majority of competitive programmers use C++ with Java coming in second place. So, what’s the point of their conflict? Is one of them superior to the other? If so, in what aspects? First, we will talk about what they actually are!

What is C++?

C++ is a modified version of C language, developed by Bjarne Stroustrup at Bell Laboratories. It is an intermediate level language since it has both high level and low level language characteristics. C++ is a compiled general-purpose language that is statically typed, free form, and multi-paradigm. The creator was aiming to create a language which supports object-oriented programming features and still has features of C language.

What is Java?

Java is a powerful general-purpose programming language, developed by James Gosling at Sun Microsystems (acquired by Oracle). It is used to create desktop and mobile apps, as well as big data processing and embedded devices.

Major Differences

  • C++ uses only compiler, whereas Java uses both a compiler and an interpreter.
  • C++ supports manual object management via the new and delete keywords, whereas Java has built in automatic garbage collection.
  • Java doesn’t supports structures, whereas C++ supports structures.
  • C++ supports unions while Java doesn’t support unions.
  • C++ supports both operator and method overloading, whereas Java only allows for method overloading.

Performance and scalability are important considerations in software development, and selecting the correct programming language can be a time-consuming process.

Investigation

A study was conducted at Blekinge Institute of Technology, 371 79 Karlskrona, Sweden.

Its main purpose was to identify the weaknesses and strength of programming languages. Two applications were created, one using C++ and one using Java. Apart from a few syntax and necessary differences, both were as close to being identical as possible. Each application loads three files containing 1000, 10000 and 100000 randomly ordered integers. These files are pre-created and always contain the same values. They are randomly generated by another small application before testing. The test runs three times, once for each file. When the data is loaded, it is sorted using quicksort. The data is reset using the dataset file and sorted again using insertion-sort. The sorted data is then saved to a file. Each test runs 50 times in a large loop and the times for loading, sorting and saving the data are saved. In total, 300 tests are run between the C++ and the Java application.

The results show that Java has a total time that is faster than C++ and it is also faster when loading two out of three datasets. C++ was generally faster when sorting the datasets using both algorithms and when saving the data to files.

Investigation Concluded

In general Java was faster in this study, but when processing the data and when under heavy load, C++ performed better. The main difference was when loading the files. The way that Java loads the data from a file is very different from C++, even though both applications read the files character by character, Java’s “Scanner” library converts data before it parses it. With some optimization, for example by reading the file line by line and then parsing the data, C++ could be comparable or faster, but for the sake of this study, the input methods that were chosen were seemingly the fairest.

Distinctions We Can’t Ignore

The way C++ and Java manage memory control is a significant distinction. Memory is allocated and de-allocated manually in C++ using specific functions. Java features a garbage collection feature, which implies that it is handled automatically by the system. However, when comparing Java vs. C++ on this aspect, it’s difficult to conclude which is superior. While automatic is usually preferable, there are times when a developer would prefer to have control in their own hands.

C++ programs are platform-specific. They must be compiled for a certain platform. Java programs are platform independent. Java programs are designed to run on the Java Virtual Machine (JVM). It will run without needing to be recompiled.

Java is a completely object-oriented programming language. That is why it sticks to a single root hierarchy. There is no such thing as a root hierarchy in C++. C++ is a hybrid language since it enables both procedural and object-oriented programming.

References

Sharma, S. (2019, Febuary 12). get: diva-portal.org. Retrieved from diva-portal.org: http://bth.diva-portal.org/smash/get/diva2:1333653/FULLTEXT02.pdf

Written by: Ayesha Asim

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store