java虚拟机(JVM)

📅 2026/7/28 19:15:08
java虚拟机(JVM)
java虚拟机虚拟机是一种抽象化的计算机通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机有自己完善的硬体架构如处理器、堆栈、寄存器等还具有相应的指令系统。Java虚拟机屏蔽了与具体操作系统平台相关的信息使得Java程序只需生成在Java虚拟机上运行的目标代码字节码就可以在多种平台上不加修改地运行。其实刚入门java的时候还并不理解这种机制随着学完JAVA SE到JAVA EE的过渡时才理解到JVM的一些特性。刚入门java的时候都是从java se学起的1.2.1 Java语言的三种技术架构J2EE(Java 2 Platform Enterprise Edition)企业版是为开发企业环境下的应用程序提供的一套解决方案。 该技术体系中包含的技术如Servlet Jsp等主要针对于Web应用程序开发。 J2SEJava 2 Platform Standard Edition标准版是为开发普通桌面和商务应用程序提供的解决方案。 该技术体系是其他两者的基础可以完成一些桌面应用程序的开发。 比如Java版的扫雷。 J2ME(Java 2 Platform Micro Edition)小型版是为开发电子消费产品和嵌入式设备提供的解决方案。 该技术体系主要应用于小型电子消费类产品如手机中的应用程序等。Java5.0版本后更名为JAVAEE JAVASE JAVAMEJava语言的特点跨平台性什么是跨平台性通过Java语言编写的应用程序在不同的系统平台上都可 以运行。原理是什么只要在需要运行java应用程序的操作系统上 先安装一个Java虚拟机(JVM Java Virtual Machine)即可 。由JVM来负责Java程序在该系统中的运行。Java语言的特点跨平台性(图解)因为有了JVM所以同一个Java程序在三个不同的操作系统中都 可以执行。这样就实现了 Java程序的跨平台性。也称为Java具有 良好的可移植性。什么是JRE,JDK?JRE(Java Runtime Environment Java运行环境) 包括Java虚拟机(JVM Java Virtual Machine)和Java程序所需的核心类 库等如果想要运行一个开发好的 Java程序计算机中只需要安装JRE 即可。 JDK(Java Development Kit Java开发工具包) JDK是提供给Java开发人员使用的其中包含了java的开发工具也包 括了 JRE。所以安装了JDK就不用在单独安装JRE了。 其中的开发工具编译工具(javac.exe) 打包工具(jar.exe)等简单而言使用JDK开发完成的java程序交给JRE去运行。安装JDK傻瓜式安装下一步即可。建议安装路径不要有中文或者特殊符号 如空格等。当提示安装JRE时可以选择不安装。配置环境变量path(1)在dos命令行中敲入javac出现错误提示。错误原理当前执行的程序在当前目录下如果不存在windows系统 会在系统中已有的一个名为path的环境变量指定的目录中查找。如果 还没有找到就出现以上的错误提示。所以进入到jdk安装路径\bin目录下执行javac。看到javac参数提示信息。配置环境变量path(2)每次执行java的工具都要进入到bin目录下是非常麻烦的。可不可以在任何目录下都可以执行java的工具呢根据windows系统在查找可执行程序的原理 可以将 java工具所在路径定义到path环境变量 中让系统帮我们去找运行执行的程序。配置环境变量path(3)我的电脑–属性–高级–环境变量编辑path环境变量在变量值开始处加上java工具所 在目录后面用 “ ; ”和其他值分隔开即可。打开DOS命令行任意目录下敲入javac。如果出现javac 的参数信息配置成功。这种配置方式一劳永逸。配置环境变量path(4)临时配置方式通过dos命令中set命令完成• set 用于查看本机的所有环境变量的信息。• set 变量名查看具体一个环境变量的值。• set 变量名清空一个环境变量的值。 • set 变量名具体值给指定变量定义具体值。想要在原有环境变量值基础上添加新值呢• 首先通过%变量名%操作符获取到原有环境变量的值。• 然后加上新值后在定义给该变量名即可• 举例给path环境变量加入新值• set path新值;%path%注意这种配置方式只在当前dos窗口有效。窗口关闭配置消失。配置技巧为了不因为jdk的目录或者目录名称的改变而不断更改path的 值而导致对 path变量值的误操作可以通过以下技巧完成。• 新创建一个环境变量JAVA_HOME 记录住jdk的目录。• 在path中通过%%动态的获取JAVA_HOME的值即可。• JAVA_HOMEF:\jdk1.6.0_01• path%JAVA_HOME%\bin;%path%• %path%动态获取path环境变量的值。• %JAVA_HOME%动态获取名称为JAVA_HOME环境变量的值。Java程序开发体验–Hello World将Java代码编写到扩展名为.java的文件中。 2. 通过javac命令对该java文件进行编译。 3. 通过java命令对生成的class文件进行运行。 具体操作流程可参阅Hello World流程图.docJava程序开发体验–编写步骤一编写• 选择最简单的编辑器记事本。• 敲入代码 class Demo {}• 将文件保存成Demo.java这个文件是存放java代 码的文件称为源文件。Java程序开发体验–编译步骤二编译• 有了java源文件将其编译成JVM可以识别的文件。• 在该源文件目录下通过javac编译工具对Demo.java文 件进行编译。• 如果程序没有错误没有任何提示但在当前目录下会 出现一个 Demo.class文件该文件称为字节码文件也 是可以执行的 java的程序。Java程序开发体验–运行步骤三运行 • 有了可执行的java程序(Demo.class字节码文件) • 通过运行工具java.exe对字节码文件进行执行。 • 出现提示缺少一个名称为main的方法。因为一个程序的执行需要一个起始点或者入口所以在Demo类中的加 入public static void main(String[] args){} • 对修改后的Demo.java源文件需要重新编译生成新的class文件后在 进行执行。 • 发现没有编译失败但也没有任何效果因为并没有告诉JVM要帮我们 做什么事情也就是没有可以具体执行的语句。 • 想要和JVM来个互动只要在main方法中加入一句 • System.out.println(“hello java”);在重新编译运行即可。配置classpath(1)既然class文件(字节码文件)是java的运行文件可不可以实现 在任意目录下都可以执行某一目录下的 class文件呢根据path环境变量的原理可以定义一个名为classpath环境变 量将要运行的 class文件所在目录定义在该变量中。例set classpathc:\classpath变量值是java类文件的目录path变量是windows程序文件的目录配置classpath(2)JVM查找类文件的顺序 • 如果没有配置classpath环境变量JVM只在当前目录下查找要运 行的类文件。 • 如果配置了classpath环境JVM会先在classpath环境变量值的 目录中查找要运行的类文件。 • 值的结尾处如果加上分号那么JVM在classpath目录下没有 找到要指定的类文件会在当前目录下在查找一次。 • 值的结尾出如果没有分号那么JVM在classpath目录下没有 找到要指定的类文件不会在当前目录下查找即使当前目 录下有也不会运行。 • 建议配置classpath环境变量时值的结尾处不要加分 号如果需要访问当前目录可以用 “.”表示。创建问题及解决方法源文件名不存在或者写错或者当前路径错误。类文件名写错或者类文件不在当前路径下或者不再classpath指 定路径下。创建问题及解决方法编译失败注意错误出现的行数在到源代码中指定位置排错。JVM还得从安装JDK开始JDK(java Development Kit)中包括 jre(java runtime environment)jre中又包含JVM所以在Windows上安装JDK时就会代表着JVM也会一起安装在Windows上。java之所以跨平台性就是因为多了个JVM机制JVM是底层的工具。JVM在不同平台上主要指操作系统都是不一样的所以在其他的操作系统上JVM都是充当其可移植性的底层工具而已。因为有了JVM所以同一个java程序在三个不同的操作系统Windows Linux MacOS中都可以执行。这样就实行了java程序的跨平台性。也称为java具有良好的可移植性。