2022-03-22
JDK包含了不少Java开发相关命令。如,javac、java、javap、javaw、javadoc。虽然现在的Java开发都使用IDE完成,基本上不会直接使用这些命令。但是理解这些命令的用法,可以让我们更加扎实的掌握java编译、运行等的基本概念。
在讲解Java命令之前,我们先了解一些基本概念,可以帮助我们更加深刻的所要讲解的Java命令。
Java Runtime Environment。故名思意,包含了运行Java程序所需的环境,比如Java虚拟机、相关的类库等相关资源。**你可以将JRE理解成一个运行在操作系统上的程序,该程序可以用来运行Java程序。**这个程序只用来运行运行Java程序,但并不包含Java开发的工具。因此,对于开发人员,只有JRE是不够。对于需要运行的Java程序的普通用户,只需要正确版本的JRE就可以运行Java程序了。
注意:每个操作系统上的JRE程序都是不一样的,比如Windows与Linux上的JRE就不一样。你可以将不一样,理解成他们的代码不同。因此你在下载时,会发现不同操作操作系统会有不同的JRE,即使是同一个操作系统,32位与64位的JRE也不一样。
Java Development Kit。包含了Java开发的工具,比如javac、javap命令、java源代码等。对于开发人员,需要下载这个才能开发Java程序。
JDK 8及之前,安装JDK的时候除了安装JDK还会安装一个独立的JRE,因此你在安装的时候,会发现要安装两个东西。这个JRE,可以运行兼容版本的Java程序。换句话说,对于所有Java程序,某个JRE是完全一样的,不能单独定制。注意:安装JDK 8实际上安装了两个JRE。一个安装在JDK目录的jre目录中,另一个安装在你指定的其他目录。
JDK 11及之后,不包含另一个独立的JRE。JDK本身已经包含了Java的运行时环境,不过这个运行时环境剥离了一些东西,比如默认不包含的Java Swing。Java 11使用了jigsaw模块化系统,你可以为java程序创建一个更小的适合该程序的JRE。比如,你的Java程序不包含Java Swing代码,你可以使用jlink为你的程序定制一个更小的专属于你的程序的JRE。
结论:
1.JDK 11后,你不需要安装独立的JRE,因为其已经包含了。
2.JDK 11引入了模块化系统,你可以为自己的程序定制JRE。
.java文件(后缀名为java,如Hello.java),包含Java源代码。本质上是一个文本文件,可通过文本编辑器编辑,不能直接运行。
.class文件(如Hello.class),.java文件经过javac命令编译得到.class文件。是一个二进制文件,包含了Java虚拟机才看得懂的字节码命令。
Java Virtual Machine,简称JVM。通常来说JRE都要包含JVM。JVM是字节码文件运行的环境,可以加载与运行Java类。你的.class实际上是跑在JVM上,而JVM则是一个独立的程序,运行在操作系统上。每个操作系统上JVM的程序都不一样。但他们有一个共同之处,就是都可以运行你的.class文件。
什么是跨平台运行呢?
就是你编写好的.java源代码编译为.class字节码文件后,那么任何兼容该.class文件的JRE中的JVM都可以运行该字节码文件。而无需考虑这个JRE到底是Linux下的,还是Windows下。简单地说,你在Windows下编译好的.class文件,拿到Linux下,只要JRE版本正确,就可以运行。注意:这里的兼容指的是,Java版本的向下兼容。比如,你在Java 8下编译的字节码文件,理论上来说Java 11是可以直接运行的。反之则不行。
相比较于C或C++语言,你在Windows下使用gcc工具编译、链接成可执行程序.exe。这个可执行程序,在Linux下是无法执行的。
为什么可以跨平台呢?
关键在于JVM。.class字节码文件是结构中立的。所谓的结构中立指的是.class文件包含的面向JVM的字节码命令,而不是面对某个操作系统的机器码。你在哪个操作系统上对某个.java文件进行编译生成的.class文件都是一样的(只要Java版本相同)。因此,不管你是Linux上的JVM还是Windows上的JVM,都可以运行这些.class文件中字节码指令。见下图。
注意:字节码不是机器码,因此不能直接在操作系统上直接运行。只能先运行JVM,才能运行字节码文件。这也就是早期Java程序慢的一个原因。
JDK包含了JRE与Java开发工具(如javac,java,jar, jlink等命令)。
JRE包含了JVM、Java类库与一些资源文件。
1.Java程序的开发运行流程
编写.java文件—经过javac编译—>.class文件—使用java命令载入—>载入到JVM运行。
如下图所示。
2.运行JAVA程序必须先运行JRE中的JVM。
3.Java程序是跨平台的。编译好的.class文件可以在不同操作系统上兼容的Java上运行。
4.Java 11及以后支持模块化系统jigsaw。因此可为自己的Java程序定制化JRE。不过初学者,暂时不用考虑这些,直接使用默认的JRE即可。但碰到问题时(如要编写Java Swing程序,却提示错误),要了解问题可能产生的原因。
本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注脚本之家的更多内容!
您可能感兴趣的文章:Java编程基本概念Java线程的基本概念java基本教程之多线程基本概念 java多线程教程 Java新手入门的30个基本概念JAVA基本概念详解PHP中的魔术方法 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep,
2014-09-05
PHP中的(++i)前缀自增 和 (i++)后缀自增
2014-09-05
php递归返回值的问题
2014-09-05
常用dos命令及语法
2014-09-27
最简单的asp登陆界面代码 asp登陆界面源代码详细介绍
2017-04-12
php 做权限管理
2014-09-05
如何安装PHPstorm并配置方法教程 phpstorm安装后要进行哪些配置
2017-05-03
nginx,php日志分割
2014-09-05
解决ThinkPHP在Nginx下无法使用pathin方式的问题
2014-09-05
c语言新手入门代码
2022-03-22
荣耀大天使华为版下载v1.10.52 安卓版
角色扮演 886.2M
下载赛尔号星球大战百度版本下载v5.9 安卓版
动作闯关 582.8M
下载航海王启航指趣版下载v24.0 安卓服
卡牌对战 990.9M
下载想不想修真指趣版下载v3.8.0 安卓最新版本
角色扮演 208.0M
下载梦幻逍遥飞仙篇手游下载v3.0.5 安卓版
角色扮演 187M
下载极品芝麻官齐齐乐客户端下载v3.7 安卓官方版
经营养成 337.3M
下载魔界军团重制版手游下载v1.2.1 安卓版
动作闯关 169.1M
下载奥特曼王者传奇国际服下载v1.14 安卓版
卡牌对战 454M
下载乐高无限小米版下载v1.99.602.27230 安卓版
下载
荣耀大天使手游小米版下载v1.10.52 安卓最新版
下载
梦幻家装手游最新版下载v1.1 安卓版
下载
长安幻世绘oppo版本下载v1.1.14.0 安卓正版
下载
机甲大作战h5最新版下载v701 安卓版
下载
青鸾繁华录4399官方版下载v9.7.4 安卓版
下载
想不想修真起点版本下载v3.8.0 安卓版
下载
零界之痕taptap版下载v1.112452.9886 安卓版
下载