Java Technology Overview
Total Page:16
File Type:pdf, Size:1020Kb
Java Technology Overview Péter Jeszenszky Faculty of Informatics, University of Debrecen [email protected] Last modified: February 14, 2021 Terminology ● Java (programming language) ● Java Virtual Machine (JVM) ● Java Platform ● Java Platform, Standard Edition (Java SE) ● Java Platform, Enterprise Edition (Java EE) ● Java Runtime Environment (JRE) ● Java Development Kit (JDK) ● OpenJDK ● Java Community Process (JCP) ● Java Specification Request (JSR) ● JDK Enhancement Proposal (JEP) 2 Java (Programming Language) (1) ● The language was developed at Sun Microsystems in the 90s. The company was acquired by Oracle in 2009. – The father of the language: James Gosling http://nighthacks.com/jag/blog/400/ ● Website: https://www.oracle.com/java/ 3 Java (Programming Language) (2) ● The language can be characterized by the following buzzwords: – Simple – Object oriented – Distributed – Multithreaded – Dynamic – Architecture neutral – Portable – High performance – Robust – Secure ● See: The Java Tutorials – Trail: Getting Started – Lesson: The Java Technology Phenomenon – About the Java Technology https://docs.oracle.com/javase/tutorial/getStarted/intro/definition.html 4 Java (Programming Language) (3) ● A general-purpose, concurrent, class-based, object-oriented language. ● Related to C and C++ but is organized rather differently, with a number of aspects of C and C++ omitted and a few ideas from other languages included. ● Strongly and statically typed. ● Java programs are normally compiled into a machine- independent byte code representation that is intended to be executed by virtual machines. ● See: The Java Language Specification, Java SE 11 Edition https://docs.oracle.com/javase/specs/ 5 Java (Programming Language) (4) ● A multi-paradigm programming language that supports the following paradigms: – Functional (introduced in Java SE 8) – Generic – Imperative – Object oriented (class-based) – Concurrent – Structured 6 Java (Programming Language) (5) ● The latest version is Java 15. ● Language specification: – James Gosling, Bill Joy, Guy Steele, Gilad Bracha, Alex Buckley, Daniel Smith. The Java Language Specification, Java SE 15 Edition. September 2020. https://docs.oracle.com/javase/specs/ 7 Java (Programming Language) (6) ● According to the Tiobe Index, it is currently the second most popular programming language after C. – See: ● TIOBE Index https://www.tiobe.com/tiobe-index/ ● TIOBE Programming Community Index Definition https://www.tiobe.com/tiobe-index/programming-languages-defi nition/ ● See also: – PYPL PopularitY of Programming Language https://pypl.github.io/PYPL.html 8 Java Virtual Machine (1) ● An abstract computing machine with an instruction set that knows nothing of the Java programming language,only of a particular binary format, the class file format. – A class file contains Java virtual machine instructions (or bytecodes) and a symbol table, as well as other ancillary information. ● The Java Virtual Machine is the cornerstone of the Java platform. It is the component of the technology responsible for its hardware- and operating system-independence, the small size of its compiled code, and its ability to protect users from malicious programs. ● Specification: – Tim Lindholm, Frank Yellin, Gilad Bracha, Alex Buckley. The Java Virtual Machine Specification, Java SE 11 Edition. 2018. https://docs.oracle.com/javase/specs/ 9 Java Virtual Machine (2) ● Free and open source implementations: – HotSpot (operating system: cross-platform; license: GPLv2) https://openjdk.java.net/groups/hotspot/ ● The virtual machine of OpenJDK. – Eclipse OpenJ9 (operating system: AIX, Linux, macOS, Windows; license: Apache License 2.0/Eclipse Public License 2.0) https://www.eclipse.org/openj9/ https://github.com/eclipse/openj9 ● A virtual machine originally developed by IBM (J9). ● Is an alternative to the HotSpot virtual machine for OpenJDK. ● Non-free implementations: – PTC Perc (operating system: Linux) https://www.ptc.com/en/products/developer-tools/perc – Zing (operating system: Linux) https://www.azul.com/products/zing/ 10 Java Platform (1) ● A platform is the hardware or software environment in which a program runs. – Examples: an embedded system, operating system, web browser, … ● A software-only platform that runs on top of other hardware- based platforms and has the following two components: – The Java Virtual Machine (JVM) – The Java Application Programming Interface (API) ● See: The Java Tutorials – Trail: Getting Started – Lesson: The Java Technology Phenomenon – About the Java Technology https://docs.oracle.com/javase/tutorial/getStarted/intro/definition. html 11 Java Platform (2) ● Java platforms: – Java Card https://www.oracle.com/java/technologies/java-card- tech.html – Java Platform, Enterprise Edition (Java EE) https://www.oracle.com/java/technologies/java-ee-gl ance.html – Java Platform, Micro Edition (Java ME) https://www.oracle.com/java/technologies/javameov erview.html – Java Platform, Standard Edition (Java SE) https://www.oracle.com/java/technologies/java-se-gl ance.html 12 Java SE (1) ● A platform for developing and deploying Java applications on desktops and servers. – Many identify the Java SE API as the Java programming language. ● Website: https://www.oracle.com/java/technologies/java-s e-glance.html 13 Java SE (2) ● The latest LTS version is Java SE 11 (18.9) released on September 25, 2018. – See: Oracle Boosts Software Development Productivity with New Java Release https://www.oracle.com/corporate/pressrelease/java-11-092518.html ● Specification: – JSR 384: Java SE 11 (18.9) https://www.jcp.org/en/jsr/detail?id=384 ● Documentation: https://docs.oracle.com/en/java/javase/11/ – Migration: Oracle JDK Migration Guide, Release 11 https://docs.oracle.com/en/java/javase/11/migrate/ – API documentation: https://docs.oracle.com/en/java/javase/11/docs/api/index.html 14 Java SE (3) ● Its current version is Java SE 15 released on September 15, 2020. – See: Oracle Announces Java 15 https://www.oracle.com/news/announcement/oracle-announces-java -15-091520.html ● Specification: – JSR 390: Java SE 15 https://www.jcp.org/en/jsr/detail?id=390 ● Documentation: https://docs.oracle.com/en/java/javase/15/ – Migration: Oracle JDK Migration Guide, Release 15 https://docs.oracle.com/en/java/javase/15/migrate/ – API documentation: https://docs.oracle.com/en/java/javase/15/docs/api/ 15 Java SE (4) ● The next version is Java SE 16 implemented by JDK 16. – JDK 16 will be released on March 16, 2021. ● See: https://openjdk.java.net/projects/jdk/16/ ● Specification: – JSR 391: Java SE 16 https://www.jcp.org/en/jsr/detail?id=391 ● API documentation: https://download.java.net/java/early_access/jdk16 /docs/api/ 16 Java SE (5) ● The two types of Java SE implementations: – Java Runtime Environment (JRE) – Java Development Kit (JDK) ● Starting with JDK 11 there is no separate JRE! 17 Java SE (6) Source: Java Platform Standard Edition 8 Documentation https://docs.oracle.com/javase/8/docs/ 18 Java Runtime Environment (JRE) (1) ● Includes a Java virtual machine, class libraries, and other files that support the execution of programs written in the Java programming language. ● Implementations: – OpenJDK (operating system: Linux, macOS, Windows; license: GPLv2 + Classpath Exception) https://openjdk.java.net/ https://github.com/openjdk/jdk – Oracle JRE (operating system: Linux, macOS, Solaris SPARC, Windows; license: Oracle Technology Network License Agreement for Oracle Java SE) https://www.oracle.com/java/technologies/javase-jre8-downloa ds.html 19 Java Runtime Environment (JRE) (2) ● Server JRE: – A JRE for running server-side applications. ● Contains both JRE and JDK tools but is smaller in size compared to a JDK. – See: ● Aurelio Garcia-Ribeyro. Understanding the Server JRE. July 27, 2017. https://blogs.oracle.com/java-platform-group/understandin g-the-server-jre ● Server JRE (Java SE Runtime Environment) 8 Downloads https://www.oracle.com/java/technologies/javase-server-jr e8-downloads.html 20 Java Development Kit (JDK) (1) ● A development environment for building applications and components using the Java programming language. – Includes a complete JRE plus tools for developing, debugging, and monitoring Java applications. ● See: Oracle JDK 11 Documentation – Java Platform, Standard Edition – Tools Reference https://docs.oracle.com/en/java/javase/11/tools/ 21 Java Development Kit (JDK) (2) ● Non-free implementations: – Oracle JDK (operating system: Linux, macOS, Solaris SPARC, Windows) https://www.oracle.com/technetwork/java/javase/do wnloads/index.html ● License: Oracle Technology Network License Agreement for Oracle Java SE https://www.oracle.com/downloads/licenses/javase-licens e1.html – Zulu Enterprise (operating system: Linux, macOS, Solaris, Windows) https://www.azul.com/products/zulu-enterprise/ 22 Java Development Kit (JDK) (3) ● Free and open source implementations: – OpenJDK (operating system: Linux, macOS, Windows; license: GPLv2 + Classpath Exception) https://openjdk.java.net/ – Oracle OpenJDK (operating system: Linux, macOS, Windows; license: GPLv2 + Classpath Exception) https://jdk.java.net/ – AdoptOpenJDK (operating system: Linux, macOS, Windows, AIX, Solaris; license: GPLv2 + Classpath Exception) https://adoptopenjdk.net/ – Amazon Corretto (operating system: Amazon Linux 2, macOS, Windows; license: GPLv2 + Classpath Exception) https://aws.amazon.com/corretto/ – Zulu (operating system: Linux, macOS, Windows; license: GPLv2 + Classpath Exception) https://www.azul.com/downloads/zulu/ 23 Java Development Kit (JDK)