Java 基础篇(二)
蛾儿雪柳黄金缕,笑语盈盈暗香去。众里寻他千百度,蓦然回首,那人却在,灯火阑珊处。
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 基础篇(二)相关推荐
- Java基础篇二 视频来源:https://www.bilibili.com/video/BV12J41137hu?p=33spm_id_from=pageDriver
一.Java流程控制 1.scanner 二.Java方法详解 三.类和对象 1.类和对象的关系 2.构造函数:(1).使用new关键字必须使用构造器,否则会报错;new一个对象本质是在调用构造器 ( ...
- 【程序员养成之路】Java基础篇 8-流进流出的IO流(二)
以下内容若有误,欢迎私信我或在下方留言,谢谢^_− 目录 IO流(二) 1.特殊操作流 1.1 标准流 1.2 打印流 1.3 对象序列化流 1.4 Properties 拓展1:比较字节流和字节缓冲 ...
- Java基础篇(二)
Java基础篇(二) 1.编写第一个应用程序 第一个应用程序 创建以Java结尾的源文件:如First,java 编写第一个程序 (public) class World { public stati ...
- 你所需要的java基础篇深入解析大汇总
java基础篇深入解析大总结 java基础(一) 深入解析基本类型 java基础(二) 自增自减与贪心规则 java基础(三) 加强型for循环与Iterator java基础(四) java运算顺序 ...
- 【转】java提高篇(二)-----理解java的三大特性之继承
[转]java提高篇(二)-----理解java的三大特性之继承 原文地址:http://www.cnblogs.com/chenssy/p/3354884.html 在<Think in ja ...
- Java基础篇4——数组
Java基础篇4--数组 1.数组的概念 当需要在Java程序中记录单个数据内容时,则声明一个变量即可 当需要在Java程序中记录多个类型相同的数据内容时,则声明一个一维数 组即可,一维数组本质上就是 ...
- 菜鸟学习笔记:Java基础篇6(数组、字符串)
菜鸟学习笔记:Java常用类(数组.字符串) 数组 概述 数组的定义 二维数组 数组查找和排序 查找 排序 数组运用--字符串 不可变字符序列(String) 可变字符序列(StringBuilder ...
- 菜鸟学习笔记:Java基础篇2(变量、运算符、流程控制语句、方法)
菜鸟学习笔记:Java基础篇2 变量 基本概念 变量作用域 final关键字 运算符 算术运算符 比较运算符 逻辑运算符 位运算符 赋值运算符 条件运算符 运算符优先级 Java三种流程控制语句 顺序 ...
- 《Java 后端面试经》Java 基础篇
<Java 后端面试经>专栏文章索引: <Java 后端面试经>Java 基础篇 <Java 后端面试经>Java EE 篇 <Java 后端面试经>数 ...
- Java基础篇--继承(inherit),多态(Polymorphism)
Java基础篇--继承(inherit),多态(Polymorphism) 1. 继承概述 1.1 什么是继承 1.2 为什么要使用继承 1.3 继承的特点 1.4 继承的优点 2. 组合设计模式 2 ...
最新文章
- CPU 内部结构解析
- uboot---linux
- 【软考-软件设计师】总线结构
- nginx 加路由时报错_Nginx自定义模块编写:根据post参数路由到不同服务器
- 和硕裁员4.5万真相调查:工人入不敷出无奈走人
- Android位置服务介绍,并介绍如何通过LocationManager对象获取位置信息
- stream流_Stream流的这些操作,你得知道,对你工作有很大帮助
- itext 7 设置页面大小_indesign页面设置技巧教程【indesign页面大小设置教程】
- 数据挖掘、数据分析、人工智能及机器学习课程资源
- 基于opencv,C++实现中值滤波器
- iTextSharp 添加图片
- 绘画入门新手要学的绘画基础有哪些
- 基于idea-SSM的在线投稿审稿系统-稿件管理-作者管理-稿件审核(javaweb-php-asp.netC#-j2ee)
- DSA签名简介及对其的攻击方式
- 贝聊系统架构服务化之路
- 5个超好用的在线抠图网站,告别繁琐的PS,快马住!
- 计算机如何识别这是一个键盘,键盘两个键同时按下时计算机如何识别被按下的是哪个键...
- 说文解字----矩阵分析(一)矩阵中的空间与秩
- left join on详解
- javascript实现下拉条联动_js实现下拉框联动