JAVA语言的跨平台性和JDK,JRE与JVM
Java虚拟机--JVM
~JVM:java虚拟机简称JVM是运行所有java程序的假想计算机,是java程序的运行环境,是java最具有吸引力的特性之一,我们编写的java代码,都运行在JVM之上
~跨平台:任何软件的运行都必须要运行在操作系统之上,而我们用java编写的软件可以运行在任何操作系统上,这个特性成为java语言的跨平台特性,该特性是由JVM实现的,我们编写的程序运行在JVM之上,而JVM运行在操作系统上

java的虚拟机本身不具备跨平台功能的,每个操作系统下都有=不同版本的虚拟机
JRE是啥
先说JRE,在我们装JDK的时候,经常会发现即安装了JDK也安装了JRE,也不知道他们有什么区别。
JRE(Java Runtime Environment)是JAVA运行时环境,它是运行已编译Java程序所需的所有内容的集合,包括Java虚拟机(JVM),Java核心类库和一些基础的构件。
有些人认为如果是运行,那JVM不就够了吗,其实还不够,因为在解释class文件时,JVM需要调用解释所需要的类库 lib。jre的安装目录下,里面有两个文件夹bin和lib,笼统的分析下,这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib合起来就称为jre。
jre里有运行.class的java.exe文件,至于虚拟机则是jre安装目录/bin/server目录下的jvm.dll文件

但是,它不能用于创建新程序。它只包括了运行的能力,不具备开发的能力,它无法将java文件编译成.class字节码文件,但是它可以直接跑.class字节码文件,你在其他电脑上编译好java程序,拿到仅有JRE环境的电脑也可以正常使用
JDK是啥
JDK(Java Development Kit)是Java的开发工具包,它不仅提供了Java程序运行所需的JRE,还提供了一系列的编译,运行等工具,如javac,java,javaw等。通过这里,我们可以明白三个J的包括关系了:JDK》JRE》JVM,所以我们在安装JDK时,通常不需要考虑JRE,JVM之类的,只要你安装好了JDK,其他两个就都有了。
简单列举一下JDK包括的一些开发工具:
javac – 编译器,将源程序转成字节码。
jar – 打包工具,将相关的类文件打包成一个文件。
javadoc – 文档生成器,从源码注释中提取文档。
jdb – debugger,查错工具。
java – 运行编译后的java程序(.class后缀的)。
appletviewer:小程序浏览器,一种执行HTML文件上的Java小程序的Java浏览器。
Javah:产生可以调用Java过程的C过程,或建立能被Java程序调用的C过程的头文件。
Javap:Java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义。
Jconsole: Java进行系统调试和监控的工具。
有时候还会有人提到SDK,SDK(Software Development Kit )是指软件开发包,它不仅限于JAVA,很多软件也有自己的SDK,更像一个统称,是专门给第三方开发者提供的软件开发工具集合。
所以SDK实际上和JDK没啥直接联系,SDK比较抽象,JDK则是具体指Java开发工具包,它们两都不是一个次元的,硬要说的话,JDK可以被描述成Java开发的SDK
JAVA语言的跨平台性和JDK,JRE与JVM的更多相关文章
- Java语言的跨平台性
2.1 Java虚拟机 -- JVM JVM:Java虚拟机,简称JVM,是运行所有java程序的假想计算机,是java程序的运行环境,是java最具吸引力的特性之一,我们编写的java代码都运行在J ...
- 1、Java语言概述与开发环境——JDK JRE JVM理解
一.理解概念: 1.JDK(Java Development Kit Java开发工具包) JDK是提供给Java开发人员使用的,其中包含Java的开发工具,也包括JRE,所以安装了JDK,就不用单独 ...
- Difference between JDK, JRE and JVM
With Java programming language, the three terms i.e. JDK, JRE and JVM will always be there to unders ...
- Java基础知识 ——JDK,JRE和JVM
1.开发简单的Java程序过程: 名词解释: JDK:JDK是 Java 语言的软件开发工具包,主要用于移动设备.嵌入式设备上的java应用程序.JDK是整个java开发的核心,它包含了JAVA的运行 ...
- java的特点跨平台原理以及JDK的安装
终于开始了期待已久的java,了解java首先要了解下计算机语言的发展历史 机器语言--->汇编语言--->--->高级语言(面向过程的语言和面向对象的语言) 机器语言 每一个计算机 ...
- java学习之Java中JDK,JRE和JVM之间的关系(转载)
最近要重新抓一下java,大量扫技术文档,保存下来供自己查阅.以下转载自http://www.cnblogs.com/xiaofeixiang/p/4085159.html 初学JAVA很容易被其中的 ...
- Java中JDK,JRE和JVM之间的关系
初学JAVA很容易被其中的很多概念弄的傻傻分不清楚,首先从概念上理解一下吧,JDK(Java Development Kit)简单理解就是Java开发工具包,JRE(Java Runtime Envi ...
- java什么是跨平台性?原理是什么?
所谓跨平台性,是指java语言编写的程序,一次编译后,可以在多个系统平台上运行. 实现原理:Java程序是通过java虚拟机在系统平台上运行的,只要该系统可以安装相应的java虚拟机,该系统就可以运行 ...
- Java中JDK,JRE和JVM之间的关系-(转载)
初学JAVA很容易被其中的很多概念弄的傻傻分不清楚,首先从概念上理解一下吧,JDK(Java Development Kit)简单理解就是Java开发工具包,JRE(Java Runtime Envi ...
随机推荐
- UML 类之间的关系
统一建模语言(Unified Modeling Language,UML) 作用:对软件系统进行说明 如果说软件系统是一本小说的话,那么 UML 就是将小说动漫化. 也许你看过这本小说,但是时间一长, ...
- Redis 缓存穿透、缓存击穿、缓存雪崩的解决方案
一.缓存雪崩 缓存雪崩表示:指缓存同一时间大面积失效或缓存重启又或者第一次启用缓存的情况下,导致请求跳过缓存直接请求数据库,造成数据库短时间内承受大量请求而崩掉. 解决方案: 方案一 缓存数据的过期时 ...
- 基于DSP_CPLD_aP8942A_LM1791的语音控制
语音驱动程序 drv_voice.c 语音服务程序 srv_voice.c 1.先运行初始化函数,主要是设置初始音量,并建立一个软件定时器来,以10ms的周期来调用语音播放函数. 1 void s ...
- Ubuntu 16.4安装1050ti显卡驱动问题及解决
不得不说,ubuntu上安装nvidia驱动坑是真的多!!! 本来在之前已经安装好了,从 显卡驱动到cuda再到cudnn去不没问题,就已一次推送而来的显卡驱动更新,把我的环境全部弄坏,为了吸取教训, ...
- 华硕主板安装Ubuntu双系统无法启动解决办法
问题描述: 在安装完Ubuntu后,开机后没有启动项可以选择,而是直接进入win10系统. 解决办法: 开机进入bios,选择 高级模式 (Advance model),进入 启动(boot)选项卡, ...
- Golang 实现 Redis(10): 本地原子性事务
为了支持多个命令的原子性执行 Redis 提供了事务机制. Redis 官方文档中称事务带有以下两个重要的保证: 事务是一个单独的隔离操作:事务中的所有命令都会序列化.按顺序地执行.事务在执行的过程中 ...
- java基础4.20
1.是否可以从一个static方法内部发出对非static方法的调用? 不可以.因为非static方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方法调用,而static方法调用时 ...
- Linux vs Unix - Linux与Unix到底有什么不同?
来自:Linux迷链接:https://www.linuxmi.com/linux-vs-unix.html Linux和Unix这两个术语可以互换地用来指同一操作系统.这在很大程度上是由于他们惊人的 ...
- Android开发的开始
Android 软件 手机软件哦,目前只有一层外壳,进一步功能等待开发. 下载地址
- Java 17中对switch的模式匹配增强
还记得Java 16中的instanceof增强 吗? 通过下面这个例子再回忆一下: Map<String, Object> data = new HashMap<>(); d ...