JDK,JRE和JVM三者的关系以及java的运行机制,环境变量,三大版本,特点

JDK,JRE和JVM

1.JVM
Java Virtual Machine是Java虚拟机,Java程序需要运行在虚拟机上,不同的平台有自己的虚拟机,因此Java语言可以实现跨平台。
所谓跨平台性,是指java语言编写的程序,一次编译后,可以在多个系统平台上运行。
实现原理:Java源代码经过虚拟机编译器编译后产生的文件(即扩展为.class的文件)又叫字节码文件,字节码不面向任何特定的处理器,只面向虚拟机。Java程序是通过java虚拟机在系统平台上运行的,只要该系统可以安装相应的java虚拟机,该系统就可以运行java程

下面是jdk的几种基本组件

命令名 作用
javac 编译器把源文件转化成字节码文件
jar 打包工具将相关类文件打包成一个.jar文件
javadoc 文档生成器从源码注释要提取文档
jdb 查错工具,对编译器返回的代码错误进行调试
java 解释器,运行字节码文件
appletviewer 小程序浏览器一种执行HTML文件的java小程序浏览器

java运行时不用加后边的.class扩展名。javac编译时可用javac+-d<指定生成文件的目录名>+文件名来编译文件,这样可以把指定生成的文件放在指定目录里。文档注释可以被javadoc处理建立一个外部说明性文件,文档注释比较特别用/** */
2.JRE
Java Runtime Environment包括Java虚拟机和Java程序所需的核心类库等。核心类库主要是java.lang包:包含了运行Java程序必不可少的系统类,如基本数据类型、基本数学函数、字符串处理、线程、异常处理类等,系统缺省加载这个包
如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可。
3.JDK
Java Development Kit是提供给Java开发人员使用的,其中包含了Java的开发工具,也包括了JRE。所以安装了JDK,就无需再单独安装JRE了。其中的开发工具:编译工具(javac.exe),打包工具(jar.exe)等
在这里插入图片描述

java环境变量

我们都知道在运行我们的java程序都要先配置环境变量,但是为什么要配置?
(1)JAVA_HOME环境变量:它指向jdk的安装目录,Eclipse/NetBeans/Tomcat等软件就是通过搜索JAVA_HOME变量来找到并使用安装好的jdk,因为安装好的jdk里边有编译运行的java工具
(2) PATH环境变量:作用是指定命令搜索路径,在shell下面执行命令时,它会到PATH变量所指定的路径中查找看是否能找到相应的命令程序。我们需要把 jdk安装目录下的bin目录增加到现有的PATH变量中,bin目录中包含经常要用到的可执行文件如javac/java/javadoc等待,设置好 PATH变量后,就可以在任何目录下执行javac/java等工具了。
(3) CLASSPATH环境变量:作用是指定类搜索路径,要使用已经编写好的类,前提当然是能够找到它们了,JVM就是通过CLASSPTH来寻找类的。我们 需要把jdk安装目录下的lib子目录中的dt.jar和tools.jar设置到CLASSPATH中,当然,当前目录“.”也必须加入到该变量中。
CLASSPATH环境变量不需要配置是因为在java1.5之后,把当前目录(运行 java .class 时所在目录)当做了classpath路径,而编译后的.class文件和.java文件在同一目录下,所以不需要配置

java运行机制

java中引入了虚拟机的概念,即在机器和编译程序之间加入了一层抽象的虚拟机器。这台虚拟的机器在任何平台上都提供给编译程序一个的共同的接口。编译程序只需要面向虚拟机生成虚拟机能够理解的代码,然后由解释器来将虚拟机代码转换为特定系统的机器码执行。在Java中,这种供虚拟机理解的代码叫做字节码(即扩展为.class的文件),它不面向任何特定的处理器,只面向虚拟机。每一种平台的解释器是不同的,但是实现的虚拟机是相同的。Java源程序经过编译器编译后变成字节码,字节码由虚拟机解释执行,虚拟机将每一条要执行的字节码送给解释器,解释器将其翻译成特定机器上的机器码,然后在特定的机器上运行,这就是上面提到的Java的特点的编译与解释并存的解释。
即:
Java源代码——>编译器——>jvm可执行的Java字节码(即虚拟指令)——>jvm——>jvm中解释器(边解释边执行)——>机器可执行的二进制机器码——>程序运行

Java语言有哪些特点

(1)简单易学(Java语言的语法与C语言和C++语言很接近)
(2)面向对象(封装,继承,多态)
(3)平台无关性(Java虚拟机实现平台无关性)
(4)支持网络编程并且很方便(Java语言诞生本身就是为简化网络编程设计的)
(5)支持多线程(多线程机制使应用程序在同一时间并行执行多项任)
(6)健壮性(Java语言的强类型机制、异常处理、垃圾的自动收集等)
(7)安全性

java三大版本

(1)Java SE(J2SE,Java 2 Platform Standard Edition,标准版)
Java SE 以前称为 J2SE。它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的 Java 应用程序。Java SE 包含了支持 Java Web 服务开发的类,并为Java EE和Java ME提供基础。
(2)Java EE(J2EE,Java 2 Platform Enterprise Edition,企业版)
Java EE 以前称为 J2EE。企业版本帮助开发和部署可移植、健壮、可伸缩且安全的服务器端Java 应用程序。Java EE 是在 Java SE 的基础上构建的,它提供 Web 服务、组件模型、管理和通信 API,可以用来实现企业级的面向服务体系结构(service-oriented architecture,SOA)和 Web2.0应用程序。2018年2月,Eclipse 宣布正式将 JavaEE 更名为 JakartaEE
(3)Java ME(J2ME,Java 2 Platform Micro Edition,微型版)
Java ME 以前称为 J2ME。Java ME 为在移动设备和嵌入式设备(比如手机、PDA、电视机顶盒和打印机)上运行的应用程序提供一个健壮且灵活的环境。Java ME 包括灵活的用户界面、健壮的安全模型、许多内置的网络协议以及对可以动态下载的连网和离线应用程序的丰富支持。基于 Java ME 规范的应用程序只需编写一次,就可以用于许多设备,而且可以利用每个设备的本机功能。
在这里插入图片描述

发布了37 篇原创文章 · 获赞 52 · 访问量 1812

猜你喜欢

转载自blog.csdn.net/qq_45737068/article/details/105186908