# Java 语言 原文: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/](https://jdk.java.net/) 中的 OpenJDK。 ```java $ tar xzvf openjdk-13_linux-x64_bin.tar.gz ``` 下载并解压缩 OpenJDK 后,我们可以在`jdk-13`目录中看到 JDK 的内容。 开发工具位于`bin`子目录中。 `javac`编译器和`java`应用启动器位于此子目录中。 ```java $ ls -F jdk-13/ bin/ conf/ include/ jmods/ legal/ lib/ release ``` `conf`目录包含`.properties`,`.policy`和其他配置文件,供开发人员,部署人员和最终用户编辑。 `include`目录包含支持本机代码编程的头文件。 `jmods`目录包含已编译的模块定义。 `legal`目录包含每个模块的版权和许可文件。 `release`文件包含 JDK 发行信息。 ## 设置环境变量 在下一步中,我们设置`JAVA_HOME`变量并更新`PATH`变量。 ```java $ export JAVA_HOME=~/jdk-13/ ``` `JAVA_HOME`变量由 IDE 或构建器之类的工具使用。 ```java $ export PATH=$PATH:~/jdk-13/bin/ ``` 通过更新`PATH`变量,我们不需要为`javac`和`java`工具指定完整路径。 ## 编译 Java 应用 我们使用命令行工具创建一个简单的 Java 程序。 ```java $ mkdir -p src/com/zetcode ``` 在当前工作目录(即主项目目录)中,我们创建`com/zetcode`子目录。 Java 源文件组织在称为包的模块中。 软件包必须与目录结构匹配。 ```java $ mkdir bin ``` 编译后的 Java 字节码进入`bin`目录。 > **注意**:在 Java 中, `.java`文件中的类名需要与文件名完全一致。 ```java $ touch src/com/zetcode/SimpleEx.java ``` 在`com/zetcode`子目录中创建`SimpleEx.java`源文件。 Java 源文件具有`.java`扩展名。 `com/zetcode/SimpleEx.java` ```java package com.zetcode; public class SimpleEx { public static void main(String[] args) { System.out.println("This is simple Java example."); } } ``` 这是一个简单的 Java 示例的源代码。 本示例将消息打印到控制台。 ```java package com.zetcode; ``` 程序包名称必须与源文件所在的目录结构相对应。 ```java public class SimpleEx { ``` 需要公共类名才能与文件名匹配。 ```java $ javac -d bin src/com/zetcode/SimpleEx.java ``` 我们使用`javac`编译器来编译源代码。 注意,我们从根项目目录编译 Java 源代码。 编译后的文件进入`bin`目录。 ```java $ tree . ├── bin │   └── com │   └── zetcode │   └── SimpleEx.class └── src └── com └── zetcode └── SimpleEx.java 6 directories, 2 files ``` 编译器生成 Java 字节码,该字节码由 Java 虚拟机执行。 字节码具有`.class`扩展名。 ```java $ java -cp bin com.zetcode.SimpleEx This is simple Java example. ``` 使用`java`应用启动器,我们执行程序。 它启动 Java 运行时环境,加载指定的类,然后调用该类的`main`方法。 `.class`扩展名不包括在内; 这是假定的。 程序名称是程序的完全限定名称-`com.zetcode.SimpleEx`。 它包括程序名称及其程序包。 使用`-cp`选项,我们告诉启动器在哪里寻找类文件。 ## 运行单文件源代码 从 Java 11 开始,可以运行单个`.java`文件,而无需定义包结构,也不需要先编译源代码。 ```java $ ls SimpleEx.java ``` 项目目录中只有一个文件。 `SimpleEx.java` ```java public class SimpleEx { public static void main(String[] args) { System.out.println("This is simple Java example."); } } ``` 我们不必定义 Java 包。 ```java $ java SimpleEx.java This is simple Java example. ``` 我们使用`java`工具运行一个包含一个文件的简单应用。 这对于学习非常方便。 ## 数据来源 以下资源用于创建本教程: * [Oracle 的 Java 教程](https://docs.oracle.com/javase/tutorial/) * [Java 平台,标准版& Java 开发套件版本 13 API 规范](https://docs.oracle.com/en/java/javase/13/docs/api/index.html) * [Java 语言规范](https://docs.oracle.com/javase/specs/) 在 Java 教程的这一部分中,我们介绍了 Java 语言,提供了一些基本的 Java 定义,展示了如何安装 JDK,并创建了第一个简单的 Java 程序。