Java


Creative Commons License
This -Java- introduction is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License
Java “The Language of Internet”

Despite strong competitors like JavaScript, Python, C#, C++… Billions of server computers, desktop computers, devices (meters, TVs, smarphones, blu-ray players…) and smart cards use Java as core programming language. Java evolved with key versions: Java (1995), Java 2 (java.beans…), Java 5 (enumerated types, generics…), Java 6, 7, 8 (streams…), 9 (modules…) 10, 11…

Java positioning in programming languages competition

First rose Pascal, CoBOL, ForTran, BASIC (Beginner's All-purpose Symbolic Instruction Code)… and later on… C, C++, Java, JavaScript, Python… The way languages popularity is nowadays measured depends upon data extracted from the Web. For example, the TIOBE Index proposes a ranking of languages.

Ranking in 2024

Most wanted…

Energy efficiency here

Styles of programming

Rule(s)

Java Virtual Machine (JVM)

Core and extended features of Java depend upon a Java Virtual Machine (JVM) version. For example, “streams” are supported from Java ver. 8. Picture shows JVM 8 that embeds a lot of technologies like SQL, XML, Web… whose functional interest in a specific app. is debatable.

Starting from Java 9 and next releases (Java 10, 11…), new syntax is introduced (e.g., module or var) while APIs evolve and/or disappear from the kernel of lastest JVM version. This creates inter-release compatibility disruption. With respect to this trend, Java 11 is recognized as a key step to migrate from Java 8 (see also here… or there…).

Novelties are commented on several Web sites, say, Java 10, Java 11, etc.

Java 852
Java 953
Java 1054
Java 1155
Java Settings

Download

macOS

Current shell
echo $0
Java Virtual Machine (JVM) location command
/usr/libexec/java_home -V
Display (example)
Matching Java Virtual Machines (3):
    18.0.1.1 (x86_64) "Oracle Corporation" - "Java SE 18.0.1.1" /Library/Java/JavaVirtualMachines/jdk-18.0.1.1.jdk/Contents/Home
    1.8.333.02 (x86_64) "Oracle Corporation" - "Java" /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
    1.8.0_333 (x86_64) "Oracle Corporation" - "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_333.jdk/Contents/Home
/Library/Java/JavaVirtualMachines/jdk-18.0.1.1.jdk/Contents/Home
Active JVM (empty ⇒ very last version is chosen)
echo $JAVA_HOME
Changing default JDK version (current session)
export JAVA_HOME=`/usr/libexec/java_home -v 1.8.0_333`
Active JVM (note that Java 8 does not support --version)
java -version
Java compiler
javac -version
Java packager
jar -version

Ubuntu

Java Virtual Machine (JVM) location command (current JVM)
/usr/lib/jvm
Java Virtual Machine (JVM) location command (other JVMs)
update-java-alternatives -l
Changing default JDK version
[sudo] update-java-alternatives config java

Windows

Explanations
echo $env:java_home
Java 9 as key disruption

Java 9 key enhancement is the introduction of modules (module keyword) in order to rationalize the overall core software functionality present in the JVM at execution time. JVM 9 is then decomposed into modules to avoid massive code functionality, which is not required at all by any user-defined app. To that extent, Java 9-based design of an app. arises from the “module” principle in the sense that developers have to isolate their code in execution-independent components (i.e., user-defined modules).

The other notable extension is the availability of a Java source interpreter known as Java Shell (JShell).

Rule(s)

Java SE 11 Developer certification (exam number 1Z0-819) here