• java虚拟机(JVM)


    java虚拟机

    虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java虚拟机屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。

    其实刚入门java的时候还并不理解这种机制,随着学完JAVA SEJAVA EE的过渡时,才理解到JVM的一些特性。

    刚入门java的时候都是从java se学起的

    1.2.1 Java语言的三种技术架构
    J2EE(Java 2 Platform Enterprise Edition)企业版
    是为开发企业环境下的应用程序提供的一套解决方案。 该技术体系中包含的技术如Servlet Jsp等,主要针对于Web应用程序开发。 J2SE(Java 2 Platform Standard Edition)标准版
    是为开发普通桌面和商务应用程序提供的解决方案。 该技术体系是其他两者的基础,可以完成一些桌面应用程序的开发。 比如Java版的扫雷。 J2ME(Java 2 Platform Micro Edition)小型版
    是为开发电子消费产品和嵌入式设备提供的解决方案。 该技术体系主要应用于小型电子消费类产品,如手机中的应用程序等。
    Java5.0版本后,更名为JAVAEE JAVASE JAVAME

    Java语言的特点:跨平台性

    什么是跨平台性?
    通过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_HOME=F:\jdk1.6.0_01
    • path=%JAVA_HOME%\bin;%path%
    • %path%:动态获取path环境变量的值。
    • %JAVA_HOME%:动态获取名称为JAVA_HOME环境变量的值。

    Java程序开发体验–Hello World

    1. 将Java代码编写到扩展名为.java的文件中。 2. 通过javac命令对该java文件进行编译。 3. 通过java命令对生成的class文件进行运行。 具体操作流程可参阅:Hello World流程图.doc
      在这里插入图片描述

    Java程序开发体验–编写

    步骤一:编写
    • 选择最简单的编辑器记事本。
    • 敲入代码 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 classpath=c:\

    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具有良好的可移植性。
    在这里插入图片描述

  • 相关阅读:
    第五课补充01——持久化
    第六课补充01——主从复制原理,哨兵机制
    第五课作业——持久化
    矢量图网站
    WPF中获取控件之间的相对位置
    如何使用Prism框架的EventAggregator在模块间进行通信
    WPF中XAML中使用String.Format格式化字符串示例
    Win32 API中的user32.dll中的ShowWindow方法参数整理
    C# XML序列化帮助类代码
    建议2:使用默认转型方法
  • 原文地址:https://www.cnblogs.com/xdr630/p/15255141.html
Copyright © 2020-2023  润新知