目录
6.1 JDK (Java Development Kit)
6.2 JRE (Java Runtime Environment)
Java是一门面向对象编程语言。本篇文章将介绍Java语言的特点与优势,jdk与Java环境变量的配置,如何在控制台编译和运行Java程序,第一个Java程序:Hello World!,Java的跨平台解释,JDK、JRE,JVM三者的区别。
一、Java语言特性
1.1 面向对象
在Java的世界里,一切皆对象。Java是一种纯粹的面向对象编程语言,支持类和对象的概念,通过封装、继承和多态等特性实现代码重用和灵活性。
1.2 跨平台性
Java程序可以在不同的操作系统上运行,因为它的编译器将源代码编译成一种中间格式的字节码(bytecode),然后在Java虚拟机(JVM)上运行。这种方式使得Java程序具有高度的可移植性。
1.3 安全性
Java提供了安全机制,如沙箱安全模型和内置的安全特性,可以防止恶意代码执行和其他安全漏洞。
1.4 内存管理
Java具有自动内存管理机制,开发人员不需要手动管理内存分配和释放,这一任务由Java虚拟机负责。这种方式使得Java程序更加健壮和安全。
1.5 丰富的库。
Java拥有庞大的标准类库(Java Standard Edition,Java SE)和其他相关库(如Java Enterprise Edition,Java EE),这些库提供了丰富的工具和功能,开发人员可以利用它们来加速开发过程。
1.6 多线程
Java提供了多线程编程的支持,开发人员可以轻松地创建多线程应用程序,实现并发执行和提高程序的效率。
二、JDK
2.1 什么是JDK?
JDK(Java Development Kit)是Java开发工具包,它是用于开发Java应用程序的核心工具集合。JDK提供了一系列的工具和库,包括编译器(javac)、Java运行时环境(java)、Java文档生成器(javadoc)、调试器、类库、文档和示例等,开发者可以使用这些工具来编写、编译、调试和运行Java程序。所以我们要进行Java编程则需要安装JDK。
2.2 安装JDK
可以根据自己的需要个性化选择JDK版本,建议使用最新版本前一两个版本,这样比较稳定。官方下载地址:oracle公司官网JDK下载地址
我下载使用的是JDK17,JDK17的安装程序我放在我的微云需要的自取:JDK17
下面我以JDK17介绍安装过程:
将安装程序下载到本地双击运行:点击下一步:
点击更改修改JDK的安装目录,也可以默认不过要先记录一下这个目录,后面配置环境变量要用到,这里我放在了D:\Java\jdk17这个目录下。注意:自己自定义目录不要有空格和汉字,这样都会导致后面环境变量配置发生问题,目录尽量简单简约就行。
修改后点击确定下一步,JDK17就在安装了,稍微等待一小会。
安装完成,关闭窗口。接下来我们配置Java环境变量。
2.3 Java环境变量的配置
2.3.1 什么是环境变量?
环境变量是操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息。配置环境变量把系统的信息提供给程序,方便程序使用。环境变量简单来说就是将某些数据,文件或文件夹设置为系统默认值,这样你调用的时候就不用给出完整路径和地址或进行设置,直接用名字就可以了。
2.3.2 为什么Java要配置环境变量?
配置JDK(Java Development Kit)环境变量是为了在命令行或终端中能够直接访问Java开发工具,例如编译器(javac)、Java运行时环境(java)、Java文档生成器(javadoc)等。配置环境变量可以让操作系统知道这些工具的安装路径,从而可以在任何目录下运行它们,而不必在每次使用时都输入完整的路径。
例如,我们需要在任意目录下打开cmd直接使用JDK,这时候如果配置好了环境变量就轻松方便多了,下面我也会演示在cmd编译和运行java程序。
2.4 配置Java环境变量
直接搜索栏,搜索环境变量。
点击环境变量
来到这个界面:
由图可发现有用户变量与系统变量,这里介绍一下两者的区别。配置用户变量与系统变量均可,方法都是一样的,根据自己的需求配置。这里以系统变量示例。
我们知道一个系统可以创建多个用户。比如我们的window系统电脑,我们可以开通多个用户。简单的来说,用户环境变量就是只对当前的账户有效,可以看到用户环境变量的全称是xxx(25100是我的window用户名)的用户变量,表示这只是针对某个账户的变量,用户变量只对当前用户有效,不影响其他用户;而系统变量是全局的,对所有用户都有效。
2.4.1 配置JAVA_HOME
该变量指向JDK的安装目录。它告诉系统JDK的根目录在哪里。配置JAVA_HOME的好处是,许多其他的Java开发工具或应用程序都可以使用这个变量来确定JDK的安装位置。
在系统变量下点击“新建”按钮,在弹出的输入界面中输入变量名JAVA_HOME和变量值D:\java\jdk17(你自己的JDK安装目录)。
2.4.2 配置Path
在PATH变量中添加JDK的\bin目录路径,使得系统可以在任何目录下识别并直接调用Java开发工具,如javac、java、javadoc等。这样做可以避免在命令行中每次都输入完整的工具路径。
在系统变量中找到Path点开新建输入JDKbin目录的地址D:\Java\jdk17\bin(你自己的JDKbin目录地址)。
注意:配置完成之后,后面的界面全部点击确定,不要直接关掉界面。至此环境变量配置完成。
2.4.3 验证环境变量配置是否成功
win+R输入cmd回车打开命令行。
输入javac验证Java编译器:
输入java验证Java运行时环境:
输入java -version(注意java与‘-’之间有空格)验证JDK版本如果上述步骤成功,则Java环境变量配置成功。
如果配置失败,请仔细检查配置JAVA_HOME或PATH时,指定的路径是否正确。如果路径错误(是不是有空格,用了汉字),就会导致配置失败。
三、第一个Java程序Hello World!
编写程序,编译运行程序,输出Hello World!
3.1 使用文本编辑器编写Java源代码
在任意目录下新建一个文本文件,命名为HelloWorld.java, Java的源代码是以.java为后缀名的。
注意事项:点击查看,一定要把文件扩展名和隐藏的项目给勾选上,不勾选文件扩展名会省略后缀,隐藏的项目会隐藏一些可能我们需要的项目,对于程序员来说,这两个选项务必勾选上。
如果我取消文件扩展名,.java后缀就没有了。还有一个要强调的是我的文本编辑器和你们的图案不一样,你们应该是记事本,原因是我安装的一款叫Sublime Text的的软件,我默认.java后缀的文件用Sublime Text打开,所以文件图案就是Sublime Text的logo了,如果需要了解和下载这款软件可以参考我的另外一篇博客:http://t.csdnimg.cn/XU7q9
在HelloWorld.java中编写代码:
public class HelloWorld{
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
3.2 使用javac命令编译程序
在搜索栏输入cmd回车打开控制台
输入javac HelloWorld.java 编译程序
javac HelloWorld这条命令执行完成后,可以看到文件中多了一个叫HelloWorld.class的文件,这就是由编译生成的以.class为后缀的字节码文件,后面会详细介绍编译运行的原理和过程。当你点开时,你会发现里面是一些乱七八糟的东西,用记事本和Sublim Text分别打开.class文件
3.3 使用java命令运行程序
输入java HelloWorld回车,打印出Hello World!
注意事项:
1.一定要确保代码正确,否则会报错,类目一定要与.java文件的名字相同。
2.修改代码后要先保存,重新编译运行才会是新的代码执行的效果,否则java运行程序,还是之前编译所产生的字节码文件。
3.4 Javadoc命令生成文档
Javadoc 是 Java 平台的一种文档生成工具,用于从 Java 源代码文件中提取注释信息,并生成相应的 API 文档。
使用 Javadoc 可以自动生成详细的 API 文档,其中包含类、方法、字段的说明文档、参数说明、返回值说明、异常说明等信息,使得开发者可以方便地查阅和理解 Java 类库的使用方法。
3.4.1 编写注释
在刚刚的HelloWorld.java文件中加上注释并且保存
/**
文档注释:
@version v1.0.0
@author will
作用HelloWorld类,入门第一个程序练习
*/
public class HelloWorld{
/*
多行注释:
1. main方法是Java程序的入口方法
2. main函数的格式是固定的,必须为public static void main(String[] args)
*/
/**
main方法是程序的入口函数
@param args 命令行参数。
*/
public static void main(String[] args){
// 单行注释:System.out.println是Java中标准输出,会将内容输出到控制台
System.out.println("Hello World");
}
}
3.4.2 运行 Javadoc
// -d 创建目录 myHello为目录名// -author 显示作者// -version 显示版本号// -encoding UTF-8 -charset UTF-8 字符集修改为UTF-8
3.4.2 查看文档
Javadoc命令执行完成后,生成了一个myHello的文件
打开其中的index.html,就能看到文档了
四、Java运行过程
- 编写Java源代码文件(.java文件)。
- 编译源代码:使用Java编译器(javac)将源代码编译成Java字节码文件(.class文件)。编译过程会进行语法检查、类型检查和生成字节码等操作。
- 加载类文件:Java运行时环境(JRE)加载并解析编译生成的类文件(字节码文件)。类加载器负责从文件系统或其他来源加载类文件,并将其转换为内存中的类对象。
- 执行程序:Java虚拟机(JVM)执行加载的类文件中的字节码指令。程序从main方法开始执行,按照指令顺序执行程序的逻辑。
- 运行时环境:在程序执行过程中,JVM管理程序的内存分配、垃圾回收、线程调度等运行时环境,确保程序的正确执行和资源的合理利用。
-
输出结果: 程序执行完成后,根据程序的逻辑,可能会产生输出结果。输出结果可以是在控制台打印信息、生成文件、与用户交互等形式。
-
结束程序: 程序执行完毕或达到终止条件时,程序结束执行,JVM释放程序占用的资源,程序退出运行状态。
五、Java跨平台解释
先介绍两个概念
5.1 字节码
Java编译器将Java源代码编译成一种中间代码,称为字节码(上面我们有打开.class文件发现是乱七八糟的)。字节码是与平台无关的,它与具体的硬件架构和操作系统无关,而是针对Java虚拟机(JVM)设计的。字节码文件通常以.class为扩展名,可以在任何装有JVM的系统上运行。
5.2 Java虚拟机(JVM)
Java虚拟机是Java跨平台的关键组件。它负责在运行时加载、解释和执行字节码。JVM充当了一个虚拟的操作系统,提供了一个与硬件平台无关的运行环境,它在不同的操作系统上提供了相同的接口和行为
我们编写Java源代码,并通过Java编译器将其编译成字节码文件(.class文件)。字节码文件可以在任何装有Java虚拟机(JVM)的系统上运行。不同操作系统上的JVM会负责解释和执行字节码,使得Java程序能够在不同平台上运行。JVM在运行时负责将字节码转换成机器码,并且处理与底层操作系统的交互,以实现对平台的适配和兼容性。由于Java虚拟机提供了统一的运行环境,Java程序的行为在不同平台上保持一致,从而实现了Java的跨平台性。
从上图可以看出,不同的操作系统需要使用到不同版本的虚拟机,这种方法使得Java语言具有"一次编写,到处运行(Write one , run anywhere)"的特点,有效地解决了程序设计语言在不同操作系统编译时产生不同机器代码的问题,大大降低了程序开发和维护的成本。需要注意的是,Java程序通过Java虚拟机可以达到跨平台特性,但Java虚拟机并不是跨平台的,也就是说,不同操作系统上的Java虚拟机是不同的,即Windows平台上的Java虚拟机不能使用在Linux平台上,反之亦然。
六、JDK JRE JVM三者的关系
6.1 JDK (Java Development Kit)
- JDK 是 Java 开发工具包,是开发 Java 程序的核心工具集合。
- JDK 包含了 Java 编译器(javac)、Java 运行时环境(JRE)、Java 标准类库(Java SE)、开发工具(如调试器、文档生成器等)以及其他一些辅助工具。
- JDK 面向的是 Java 程序的开发人员,提供了编写、编译、调试和运行 Java 程序所需的全部工具和库。
6.2 JRE (Java Runtime Environment)
- JRE 是 Java 运行时环境,是用于运行已编译的 Java 应用程序的运行时环境。
- JRE 包含了 Java 虚拟机(JVM)和 Java 标准类库(Java SE)。
- JRE 面向的是 Java 程序的最终用户,用于执行已经编译好的 Java 应用程序,而不涉及开发过程中的编译和调试。
6.3 JVM(Java Virtual Machine)
- JVM是Java 虚拟机,是 Java 跨平台的核心组件。
- JVM负责在运行时加载、解释和执行Java字节码(Bytecode)。
- JVM提供了统一的运行时环境,使得相同的Java程序可以在不同的操作系统和硬件架构上运行。
JDK包含了JRE 和开发工具,JRE 包含了JVM 和Java标准类库,而JVM则负责加载、解释和执行 Java 字节码。这三者共同构成了 Java 程序的开发和执行环境。
值得注意的是:运行一款Java程序则JRE就满足要求。
完