蛾儿雪柳黄金缕,笑语盈盈暗香去。众里寻他千百度,蓦然回首,那人却在,灯火阑珊处。

1、JDK、JRE和JVM的区别

1.1、JDK

JDK(Java SE Development Kit),Java标准的开发包,提供了编译、运行Java程序所需要的各种工具和资源,包括了Java编译器、Java运行环境、以及常用的Java类库等。

1.2、JRE

JRE(Java Runtime Environment),Java运行时的环境,用于解释执行Java的字节码文件。普通用户只需要安装JRE来运行Java程序即可,而作为一名合格的程序员必须安装JDK来编译、调试程序。

1.3、JVM

JVM(Java Virtual Mechinal),Java虚拟机是JRE的一部分,它是整个Java实现跨平台的核心,负责解释执行字节码文件,是可运行Java字节码文件的虚拟计算机。所有平台上的JVM向编译器提供相同的接口,而编译器只需要面向虚拟机,生成虚拟机能识别的代码,然后由虚拟机来解释执行。

当使用Java编译器编译Java程序时,生成的是与平台无关的字节码,这些字节码只面向JVM,也就是说JVM是运行Java字节码的虚拟机。

不同平台的JVM是不同的,但是他们都提供了相同的接口。JVM是Java程序跨平台的关键部分,只是为不同平台实现了相同的虚拟机,编译后的Java字节码就可以在该平台上运行了。

为什么要采用字节码:在Java中,JVM可以理解的代码就叫做字节码(即Java源代码经过虚拟机编译器编译后扩展名为.class的文件),它不面向任何特定的处理器,只面向虚拟机。Java语言通过字节码的方式,在一定程度上解决了传统解析型语言执行效率低的问题,同时又保留了解析型语言的可移植的特点。所以Java程序运行时比较高效,而且,由于字节码并不针对一种特定的机器,因此,Java程序无须重新编译便可在多种不同操作系统的计算机上运行。

什么是跨平台:所谓的跨平台是指Java语言编写的程序,一次编译后,可以在多个系统平台上运行。实现原理:Java程序时通过Java虚拟机在系统上运行的,只要该系统可以安装相应的Java虚拟机,该系统就可以运行Java程序。

Java程序从源代码到运行的三步

1、Java文件(源代码)在JDK中的javac编译

2、class文件(JVM可理解的Java字节码)JVM

3、机器可执行的2进制机器码

1.4、总结

1、JDK用于开发,JRE用于运行Java程序;如果只运行Java程序,可以只安装JRE,无需安装JDK。

2、JFK包含JRE,JDK和JRE都含有JVM。

3、JVM是Java编程语言的核心并且具有平台独立性。

Java 基础篇(二)相关推荐

  1. Java基础篇二 视频来源:https://www.bilibili.com/video/BV12J41137hu?p=33spm_id_from=pageDriver

    一.Java流程控制 1.scanner 二.Java方法详解 三.类和对象 1.类和对象的关系 2.构造函数:(1).使用new关键字必须使用构造器,否则会报错;new一个对象本质是在调用构造器 ( ...

  2. 【程序员养成之路】Java基础篇 8-流进流出的IO流(二)

    以下内容若有误,欢迎私信我或在下方留言,谢谢^_− 目录 IO流(二) 1.特殊操作流 1.1 标准流 1.2 打印流 1.3 对象序列化流 1.4 Properties 拓展1:比较字节流和字节缓冲 ...

  3. Java基础篇(二)

    Java基础篇(二) 1.编写第一个应用程序 第一个应用程序 创建以Java结尾的源文件:如First,java 编写第一个程序 (public) class World { public stati ...

  4. 你所需要的java基础篇深入解析大汇总

    java基础篇深入解析大总结 java基础(一) 深入解析基本类型 java基础(二) 自增自减与贪心规则 java基础(三) 加强型for循环与Iterator java基础(四) java运算顺序 ...

  5. 【转】java提高篇(二)-----理解java的三大特性之继承

    [转]java提高篇(二)-----理解java的三大特性之继承 原文地址:http://www.cnblogs.com/chenssy/p/3354884.html 在<Think in ja ...

  6. Java基础篇4——数组

    Java基础篇4--数组 1.数组的概念 当需要在Java程序中记录单个数据内容时,则声明一个变量即可 当需要在Java程序中记录多个类型相同的数据内容时,则声明一个一维数 组即可,一维数组本质上就是 ...

  7. 菜鸟学习笔记:Java基础篇6(数组、字符串)

    菜鸟学习笔记:Java常用类(数组.字符串) 数组 概述 数组的定义 二维数组 数组查找和排序 查找 排序 数组运用--字符串 不可变字符序列(String) 可变字符序列(StringBuilder ...

  8. 菜鸟学习笔记:Java基础篇2(变量、运算符、流程控制语句、方法)

    菜鸟学习笔记:Java基础篇2 变量 基本概念 变量作用域 final关键字 运算符 算术运算符 比较运算符 逻辑运算符 位运算符 赋值运算符 条件运算符 运算符优先级 Java三种流程控制语句 顺序 ...

  9. 《Java 后端面试经》Java 基础篇

    <Java 后端面试经>专栏文章索引: <Java 后端面试经>Java 基础篇 <Java 后端面试经>Java EE 篇 <Java 后端面试经>数 ...

  10. Java基础篇--继承(inherit),多态(Polymorphism)

    Java基础篇--继承(inherit),多态(Polymorphism) 1. 继承概述 1.1 什么是继承 1.2 为什么要使用继承 1.3 继承的特点 1.4 继承的优点 2. 组合设计模式 2 ...

最新文章

  1. CPU 内部结构解析
  2. uboot---linux
  3. 【软考-软件设计师】总线结构
  4. nginx 加路由时报错_Nginx自定义模块编写:根据post参数路由到不同服务器
  5. 和硕裁员4.5万真相调查:工人入不敷出无奈走人
  6. Android位置服务介绍,并介绍如何通过LocationManager对象获取位置信息
  7. stream流_Stream流的这些操作,你得知道,对你工作有很大帮助
  8. itext 7 设置页面大小_indesign页面设置技巧教程【indesign页面大小设置教程】
  9. 数据挖掘、数据分析、人工智能及机器学习课程资源
  10. 基于opencv,C++实现中值滤波器
  11. iTextSharp 添加图片
  12. 绘画入门新手要学的绘画基础有哪些
  13. 基于idea-SSM的在线投稿审稿系统-稿件管理-作者管理-稿件审核(javaweb-php-asp.netC#-j2ee)
  14. DSA签名简介及对其的攻击方式
  15. 贝聊系统架构服务化之路
  16. 5个超好用的在线抠图网站,告别繁琐的PS,快马住!
  17. 计算机如何识别这是一个键盘,键盘两个键同时按下时计算机如何识别被按下的是哪个键...
  18. 说文解字----矩阵分析(一)矩阵中的空间与秩
  19. left join on详解
  20. javascript实现下拉条联动_js实现下拉框联动

热门文章

  1. EPC总承包的概念理解
  2. connertone怎么远程连接服务器,离形得似_互联网艺术与化身网络建设.pdf
  3. 先有鸡还是先有鸡蛋?计算机语言发展史给出的答案
  4. c# winfrom GDI+ DrawString怎么画不同颜色的字
  5. AWS学习第四篇之 DynamoDB笔记
  6. Shiro入门—认证
  7. Gradle与插件版本的对应关系
  8. GMM高斯混合模型及EM算法(matlab实现)
  9. Tracker--追踪者
  10. python 对7位数彩票的获奖判断