Java is commonly used to refer to the Java platform, a set of tools allowing for easy cross-platform application development, as well as the Java programming language, which is a general-purpose programming language often used to develop programs for this platform. The important thing about Java that differentiates it from many other technologies is that it is designed such that code written in Java can be run on any system that a Java virtual machine (JVM) can run on. This concept of write once, run anywhere was used as a slogan to promote Java’s cross-platform abilities. Java environments can be found on all sorts of devices, large and small, and therefore a Java developer has more flexibility when it comes to being able to treat code as agnostic to the system on which it runs. The Java programming language itself is an object-oriented language, which is syntactically similar to C++. Unlike some other languages which came before it, which implemented classes but did not require their use, Java programs are always designed with an object-oriented design. While the Java language and the Java virtual machine which runs Java code are closely paired, the two are separate. Code from other languages which is designed specifically for the JVM, like Groovy and Scala, can also run on the Java virtual machine. Be careful not to confuse Java with JavaScript. While both languages are now found in numerous environments, JavaScript, which is most commonly used to power interactivity inside of a web browser, is a different tool completely. Other than a part of the name, the two don’t share much in common.
Java can be found in all sorts of places, perhaps even in your pocket or on your wrist. Android, Linux-derived open source operating system powering millions of mobile devices around the world, uses the Java language along with its own special set of libraries as the basis for mobile applications built for its platform. You also might be using Java on your desktop without even knowing it. All sorts of applications, from wildly popular games like Minecraft to the Eclipse integrated development environment used by developers for many different languages and platforms, run on Java. Java also powers a number of applications built specifically for the web. While with improvements to JavaScript and HTML, Java applets are no longer the de facto standard for interactive web applications, many still do rely on Java for providing an in-browser interactive experience. But even though Java isn’t as commonly found as the front-end for web applications these days, it is still a very popular language behind the scenes on many websites and web applications. Through the capabilities of Java Enterprise Edition and open source Java application servers like WildFly and Apache Tomcat, Java has a rich ecosystem of tools for powering and connecting massively scalable applications which keep some of the largest websites and business operations out there up and running.
The subject of Java licensing is a long and complicated story, but today, most major components of Java are available under open source licenses, and those which are not available under open licenses typically have drop-in replacements which are open. Sun, the original developers of Java, placed much of Java under the GNU General Public License in 2006. Projects like IcedTea filled in the gaps for the portions of the Java Development Kit not available under an open license, meaning today, it is possible to run Java applications without using any proprietary code.
Since Java 9, the language has been moving toward a modular design. Many modern Java applications bundle a small Java module as part of the software itself. This means there are some applications you can run without even downloading Java. This is by no means universal yet, however. To run many Java applications, you must have a Java runtime environment (JRE) installed. Because Java is open source, there isn't just one JRE, so you can choose the JRE that best suits your needs. Linux distributions typically provide an OpenJDK or IcedTea JRE. Windows users can download a JRE installer from Red Hat's Developer portal. MacOS (and Windows and Linux) users can also download JRE installers from OpenJDK.java.net or the Zulu community at Azul. Because the JRE you install has been created specifically for your OS, any Java application can run on your computer. By installing Java, you provide your system with a layer (technically a Java virtual machine, or JVM) upon which any Java application can run.
Java was originally developed and supported by Sun Microsystems and is now supported by Oracle. However, Java is open source and has a worldwide community invested in guiding its continued development and growth. The use cases for Java may change over the years