As you enter the world of computer science, two of the more popular computer languages that you will encounter are Java and C++. Both are regarded as “standards” of the industry and both engender active user support along with some criticism. Regardless of whether you favor one over the other, in truth both of these languages can be highly useful in their respective contexts. This article focuses on some of the general contrasts between the two languages, and when you might use one over the other.
C++ is a system-specific, multi-paradigm revision of the popular C programming language. The “multi-paradigm” description here refers to the fact that C++ makes use of both procedural and object-oriented programming techniques. While a full description of the contrast between procedural and object-oriented programming is beyond the scope of this article, it is safe to say that object-oriented languages like Java are built around the idea that data can be encapsulated into discrete units, which can then be manipulated in a programming environment. Procedural languages like C, on the other hand, work by listing procedures and functions that are intended to operate on data. Writing programs in C++ is designed to operate in the middle ground.
C++ can sometimes be intimidating for new users. It is syntactically demanding, requiring exact detail on behalf of the programmer, and it leaves no room for error. As discussed in the next section, Java was designed with the Internet in mind, and it includes a number of checks and safeguards to minimize room for exploitation. C++, however, was created in the pre-Internet days, and the onus is on the programmer to ensure that the code is free of potential exploits.
You should not let the detail required by C++ intimidate you, however. Despite the introduction of newer languages, C++ is still something of a standard in the programming community for writing complex system programs like video games. With training, even advanced languages like C++ can be mastered in time.
While the ability for C++ to create a standalone program is valuable for creating complex system applications, the Internet boom necessitated a new way of thinking about programming in the context of webpages. Webpages are designed to be read on a variety of devices, regardless of what type of operating system an individual device uses. For programmers wishing to imbed applications into their web content, however, this variety means that it is impossible to rely on traditional C programming techniques—a Windows EXE program would not function in a Macintosh environment, for example. The answer to this dilemma was Java, a language, syntactically similar to C++, which can be read in multiple operating environments through the use of a clever system of translation.
When you write a program in Java, rather than compiling directly to a system-specific executable file, Java compiles to an intermediate file called a JAR archive. For a system to execute a JAR program, it utilizes a system program called a Java Virtual Machine (JVM). The JVM effectively translates the JAR archive into a system of commands that the computer can understand, allowing the JAR archive to be run on any device that has a JVM. A Java programmer, therefore, need only worry about writing the code for the JAR archive, as any system-specific functioning is handled by the JVM.
This functionality, however, comes at a speed cost. As Java programs tend to be translated and run with an additional program, they lose the advantage of C++ programs in being optimized for a specific operating system. While JVMs have come a long way in terms of operating speed, they still lag somewhat behind native system programs.
These general differences are only the tip of the iceberg. As you learn more about programming, you will learn that each language contains certain procedural techniques, syntaxes and ways of thinking about programming that are language-specific. With Java and C++, there is no “right” language that can be used for all purposes. Each language has its advantages in certain contexts, and you will likely benefit from learning both languages in your career. The key, as always, lies in obtaining formal education in these and in other languages so that your programming skills can adapt to as many professional situations as possible.