原文:http://zetcode.com/lang/java/java/

在 Java 教程的这一部分中,我们将介绍 Java 编程语言。

目标

本教程的目标是使您开始使用 Java 语言进行编程。 本教程涵盖了 Java 语言的核心。 本教程使用命令行编译器来构建应用。

Java

Java 是一种高级的,通用的,面向对象的编程语言。 该语言的主要设计目标是鲁棒性,可移植性,高性能和安全性。 Java 是一种多线程和分布式编程语言。 它可用于在 PC 或嵌入式系统上创建控制台应用,GUI 应用,Web 应用。

Java 是 Sun Microsystems 于 1991 年创建的一种编程语言。Java 的第一个公共可用版本于 1995 年发布。如今,该语言由 Oracle 公司开发。

Java 在创建便携式移动应用,对各种设备进行编程以及创建企业应用方面表现出色。

Java 的普及

当前有几种广泛使用的编程语言。 Java 属于当今最受欢迎的语言。 多项调查将其列为世界排名前三位的语言。

Java 平台

Java 有四个编程平台:

  • Java 平台标准版(Java SE)
  • Java 平台企业版(Java EE)
  • Java 平台微型版(Java ME)
  • JavaFX

所有 Java 平台均包含 Java 虚拟机(JVM)和应用编程接口(API)。 Java 虚拟机是用于运行 Java 应用的特定硬件和软件平台的程序。 API 是我们可以用来创建其他软件组件或应用的软件组件的集合。

Java SE 用于开发桌面应用。 Java SE 的 API 提供了 Java 编程语言的核心功能。 它由虚拟机,开发工具,部署技术以及 Java 应用中使用的其他类库和工具包组成。 Java EE 建立在 Java SE 平台之上。 Java EE 平台提供了一个 API 和运行时环境,用于开发和运行 Web 应用以及大规模,多层,可伸缩,可靠和安全的企业应用。 Java ME 是 Java SE 的子集。 它提供了一个 API 和一个占地面积小的虚拟机,用于在小型设备(例如手机)上运行 Java 应用。 JavaFX 是一个使用轻量级用户界面 API 创建富 Internet 应用的平台。

严格来说,Java SE 是平台规范。 Java 平台标准版开发套件是 Oracle 对 Java SE 的正式实现。 还有其他实现。 例如免费和开源的 OpenJDK 或 IBM 的 J9。

在我们的教程中,我们使用 Java SE 平台来创建简单的控制台应用。

虚拟机

Java 虚拟机(JVM)执行 Java 字节码。 JVM 包含在 JRE 和 JDK 中。 Java 源代码写在扩展名为.java的文件中。 javac Java 编译器会将 Java 源代码编译为 Java 字节码; 编译后的文件具有.class扩展名。 该字节码由 JVM 执行。 Java 工具是 Java 应用的启动器。 Oracle 的 JVM 被称为 HotSpot。 HotSpot 是用于台式机和服务器的 Java 虚拟机。 它具有先进的技术,例如即时编译和旨在提高性能的自适应优化。

JRE

JRE(Java 运行时环境)是用于执行 Java 应用的一组工具。 JRE 不包含用于开发 Java 应用的工具和工具,例如编译器或调试器。

JDK

JDK(Java 开发工具包)是 JRE 的超集。 它包含 JRE 和开发 Java 应用所需的工具,例如编译器和调试器。 我们需要安装 JDK 来构建和运行我们的 Java 程序。

OpenJDK 安装

由于 Oracle 的许可问题,许多开发者开始使用 OpenJDK。 亚马逊提供免费的,跨平台的,可立即投入生产的 Open Java Development Kit(OpenJDK); 它称为 Amazon Coretto。

为了我们的学习目的,我们可以使用 https://jdk.java.net/ 中的 OpenJDK。

  1. $ tar xzvf openjdk-13_linux-x64_bin.tar.gz

下载并解压缩 OpenJDK 后,我们可以在jdk-13目录中看到 JDK 的内容。 开发工具位于bin子目录中。 javac编译器和java应用启动器位于此子目录中。

  1. $ ls -F jdk-13/
  2. bin/ conf/ include/ jmods/ legal/ lib/ release

conf目录包含.properties.policy和其他配置文件,供开发者,部署人员和最终用户编辑。 include目录包含支持本机代码编程的头文件。 jmods目录包含已编译的模块定义。 legal目录包含每个模块的版权和许可文件。

release文件包含 JDK 发行信息。

设置环境变量

在下一步中,我们设置JAVA_HOME变量并更新PATH变量。

  1. $ export JAVA_HOME=~/jdk-13/

JAVA_HOME变量由 IDE 或构建器之类的工具使用。

  1. $ export PATH=$PATH:~/jdk-13/bin/

通过更新PATH变量,我们不需要为javacjava工具指定完整路径。

编译 Java 应用

我们使用命令行工具创建一个简单的 Java 程序。

  1. $ mkdir -p src/com/zetcode

在当前工作目录(即主项目目录)中,我们创建com/zetcode子目录。 Java 源文件组织在称为包的模块中。 包必须与目录结构匹配。

  1. $ mkdir bin

编译后的 Java 字节码进入bin目录。

注意:在 Java 中, .java文件中的类名需要与文件名完全一致。

  1. $ touch src/com/zetcode/SimpleEx.java

com/zetcode子目录中创建SimpleEx.java源文件。 Java 源文件具有.java扩展名。

com/zetcode/SimpleEx.java

  1. package com.zetcode;
  2. public class SimpleEx {
  3. public static void main(String[] args) {
  4. System.out.println("This is simple Java example.");
  5. }
  6. }

这是一个简单的 Java 示例的源代码。 本示例将消息打印到控制台。

  1. package com.zetcode;

包名称必须与源文件所在的目录结构相对应。

  1. public class SimpleEx {

需要公共类名才能与文件名匹配。

  1. $ javac -d bin src/com/zetcode/SimpleEx.java

我们使用javac编译器来编译源代码。 注意,我们从根项目目录编译 Java 源代码。 编译后的文件进入bin目录。

  1. $ tree
  2. .
  3. ├── bin
  4. └── com
  5. └── zetcode
  6. └── SimpleEx.class
  7. └── src
  8. └── com
  9. └── zetcode
  10. └── SimpleEx.java
  11. 6 directories, 2 files

编译器生成 Java 字节码,该字节码由 Java 虚拟机执行。 字节码具有.class扩展名。

  1. $ java -cp bin com.zetcode.SimpleEx
  2. This is simple Java example.

使用java应用启动器,我们执行程序。 它启动 Java 运行时环境,加载指定的类,然后调用该类的main方法。 .class扩展名不包括在内; 这是假定的。 程序名称是程序的完全限定名称-com.zetcode.SimpleEx。 它包括程序名称及其包。 使用-cp选项,我们告诉启动器在哪里寻找类文件。

运行单文件源代码

从 Java 11 开始,可以运行单个.java文件,而无需定义包结构,也不需要先编译源代码。

  1. $ ls
  2. SimpleEx.java

项目目录中只有一个文件。

SimpleEx.java

  1. public class SimpleEx {
  2. public static void main(String[] args) {
  3. System.out.println("This is simple Java example.");
  4. }
  5. }

我们不必定义 Java 包。

  1. $ java SimpleEx.java
  2. This is simple Java example.

我们使用java工具运行一个包含一个文件的简单应用。 这对于学习非常方便。

数据来源

以下资源用于创建本教程:

在 Java 教程的这一部分中,我们介绍了 Java 语言,提供了一些基本的 Java 定义,展示了如何安装 JDK,并创建了第一个简单的 Java 程序。