Software developers usually distinguish strongly with their tools of choice, freely associating objective facts with subjective partiality.
In the last decade though, has seen an explosion both in the number of languages employed in production and the number of programming languages an individual developer is likely to use day to day. Meaning those language associations are sometimes spread more loosely and broadly across various frameworks, codebases, and platforms. New projects and current developers are increasingly polyglot – able to bring on more languages and libraries than ever before. An informed choice however still has a considerable part to play.
From the bustling marketplace of programming languages, let’s center our focus on a survivor of the 1990’s that has a very different and distinct origin: JAVA.
Although its launch was not until 1995, Java’s saga began in 1991. James Gosling and others at Sun Microsystems invented a language for programming interactive TV systems. Its release comes with the display of being a portable internet language, specifically in the browser. It has come a long way from this starting point and its original name: Oak.
Part of its appeal and significance is its relative efficiency and portability. Although not a primary language, such as C or C++, Java is a compiled language. Its execution model is more machine-centered than purely interpreted languages, like Perl and Python.
Java Virtual Machine (JVM)
Java is more than just merely a language and a set of libraries. It is also a virtual machine and, hence, an ecosystem. The Java Virtual Machine (JVM) is an idealized and portable platform for managing Java code. Rather than fretting about hardware specifics and having to port code to brand-new platforms, the outlook of Java has been Write Once, Run Anywhere (WORA).
That is so that as long as a JVM is present, anything compiled into its bytecode can operate and interact comfortably with anything else written for the JVM. There are several JVM languages, including the more script-like Groovy, the functional Clojure, the object-functional hybrid Scala, and even a Python variant known as Jython.
Java is an object-oriented language which has a C/C++ like syntax that is common to many programmers. It is dynamically linked, enabling new code to be downloaded and run, but not dynamically typed. As a language, Java’s evolution has been moderately slow, only lately incorporating features that encourage functional programming. However, the theory for both the language and the VM has been to treat backward compatibility as a top directive.
After Oracle acquired Sun, the language, and its compiler ultimately became open-source. The Java Community Process (JCP), guides the language’s evolution which includes companies and individuals outside Oracle.
All the best and happy learning!