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 规范的应用程序只需编写一次,就可以用于许多设备,而且可以利用每个设备的本机功能。

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

  1. jdk开发文档_【第9期】面试官:JDK、JRE、JVM 三者什么关系?

    这个题目在面试题中基本没怎么出现,但在笔试题中倒是经常见到.所以还是有必要拉出来溜溜~ JDK: java development kit, java开发工具包,用来开发Java程序的,针对java开 ...

  2. Java中JDK,JRE和JVM之间的关系

    初学JAVA很容易被其中的很多概念弄的傻傻分不清楚,首先从概念上理解一下吧,JDK(Java Development Kit)简单理解就是Java开发工具包,JRE(Java Runtime Envi ...

  3. JDK、JRE和JVM之间的关系

    作为一个Java开发者,只会用Java,却不知什么是JDK.JRE和JVM是什么,以及他们之间有什么联系.本文总结了JDK,JRE,JVM三者的关系与区别. JDK.JRE和JVM之间的关系 一.JD ...

  4. JDK,JRE以及JVM三者之间的关系

    JDK,JRE以及JVM三者之间的关系 JDK(Java Development Kit) Java开发工具包 JDK是整个Java的核心,包括了Java运行环境(Java Runtime Envir ...

  5. Java笔记-01(Java语言的特性、JDK、JRE、JVM三者之间的关系和Java重点术语)

    1.Java语言的特性 1.1.简单性在Java语言当中真正操作内存的是:JVM(Java虚拟机)所有的java程序都是运行在Java虚拟机当中的.而Java虚拟机执行过程中再去操作内存.对于C或者C ...

  6. Java 入门之1:浅谈Java的最基本概念及JDK、JRE、JVM之间的关系和区别

    目录 前言: 一句话介绍Java语言的故事 一句话概括Java的特性和优势 两句话阐述JAVA_HOME环境变量和classpath环境变量的作用是什么 简述JDK.JRE.JVM之间的关系 Java ...

  7. JDK、JRE、JVM三者分别表示什么?有何区别?

    程序员在使用Java开发程序之前都要配置Java开发环境,其中要做的第一件事就是JDK的安装和配置.本文简单地说一下JDK.JRE.JVM三者分别是什么,它们之间的关系又是怎么样的. 一.JDK.JR ...

  8. JDK, JRE 和JVM的区别

    2019独角兽企业重金招聘Python工程师标准>>> Java 开发工具包 (JDK) Java开发工具包是Java环境的核心组件,并提供编译.调试和运行一个Java程序所需的所有 ...

  9. java的运行机制与jdk和jre的区别

    java的运行机制 建立.java的源文件 Javac编译器将源文件编译成.class文件 Java解释执行器通过效验部署Jvm jdk与jre的区别 jdk是开发者工具,包含Jre运行环境,工具包, ...

最新文章

  1. Python 技术篇 - 微信调用图灵机器人的api接口实现自动回复实例演示。图灵机器人的注册与使用
  2. android5.0(Lollipop) BLE Peripheral牛刀小试
  3. 【JavaScript】数组
  4. 服务器程序的Xamarin-Java.Interop体验(一)
  5. 洛谷P3405 [USACO16DEC]Cities and States省市
  6. WebService生成客户端代理的工具WSDL参数介绍
  7. MFC开发-垂直滚动条一直处于底部
  8. Python实战从入门到精通第十三讲——返回多个值的函数
  9. Linux下的进程内存结构
  10. zynq开发系列1:vivado和sdk联合使用串口打印helloworld
  11. 信息学奥赛一本通:题解目录 (〃‘▽‘〃)点个赞吧
  12. 88E1111 100BASE-T百兆工程(part1)
  13. 通过wal文件查看lsn和txid,lsn和txid对应关系
  14. CCF201809-3
  15. realsense 相机的部分信息获取
  16. 微信公众号视频录制开发 踩坑汇总
  17. 超实用后台UI模板有这些就够了!(三)
  18. 怎样大幅度地提升硬盘的速度
  19. 人机交互-7-交互需求定义
  20. 鸿蒙系统拟物化图标,疑Flyme8 UI曝光:极致拟物化设计引领icon风

热门文章

  1. Redux源码分析(一)
  2. Android自定义Dialog及与Activity的交互
  3. JavaScript学习(十)
  4. vue适配移动端px自动转化为rem
  5. 【字符比较】单字符比较值是否相等
  6. CentOS 7 下安装 mysql ,以及用到的命令
  7. Java后端,应该日常翻看的中文技术网站
  8. CSS中的a标签几个访问状态记录
  9. MyBatis知多少(6)表现层与业务逻辑层
  10. $#,$@,$0,$1,$2,$*,$$,$?,${}