Java入门
这个的内容记录的比较乱,后续可能会整理
JAVA程序运行机制
编译型
- 有一个负责翻译的程序来对我们的源代码进行转换,生成相对应的可执行代码。
- 这 个过程说得专业一点,就称为编译(Compile),而负责编译的程序自然就称为编译器(Compiler)。
- 就类似于把一本中文书直接翻译成英文版进行出售。
解释型
- 打个比方:假如你打算阅读一本外文书,而你不知道这门外语,那么你可以找一 名翻译,给他足够的时间让他从头到尾把整本书翻译好,然后把书的母语版交给你阅读(编译型);
- 或 者,你也立刻让这名翻译辅助你阅读,让他一句一句给你翻译,如果你想往回看某个章节,他也得重新给你翻译。(解释型)
二者差异
-
编译型与解释型,两者各有利弊。前者由于程序执行速度快,同等条件下对系统要求较低,因此像开 发操作系统、大型应用程序、数据库系统等时都采用它
-
而一些网页脚本、服务器脚本及辅助开发接口这样的对速度要求不高、对不同系统平台间的兼容性有一定要求的程序则通常使用解释性语言
Java
- Java语言虽然比较接近解释型语言的特征,但在执行之前已经预先进行一次预编译,生成的代码是介 于机器码和Java源代码之间的中介代码,运行的时候则由JVM(Java的虚拟机平台,可视为解释器)解 释执行。它既保留了源代码的高抽象、可移植的特点,又已经完成了对源代码的大部分预编译工作,所以执行起来比“纯解释型”程序要快许多。
- 第一步:编译
- 第二步:运行
- 利用虚拟机(解释器,java)解释执行class字节码文件。
JDK 和 JRE 和 JVM
JDK
Java 2 SDK (Development Kit)包含:JRE的超集,包含编译器和调试器等用于程序开发的文件
JRE
Java Runtime Environment (JRE) 包含:Java虚拟机、库函数、运行Java应用程序和Applet所必须文件
Java运行环境的三项主要功能:
- 加载代码:由class loader 完成;
- 校验代码:由bytecode verififier 完成;
- 执行代码:由 runtime interpreter完成。
区别和联系:
sdk(也就是jdk)是jre的超集,是在jre的基础上增加了编译器及其他一些开发工具。
jre就是java运行时环境,包括了jvm和其它一些java核心api,任何一台电脑,只有安装了jre才可以运行java程序.
如果只是要运行JAVA程序,之需要JRE就可以。 JRE通常非常小,也包含了JVM.如果要开发JAVA程序,就需要安装JDK。
初识JVM (JAVA Virtual Machine)
JVM是一种规范,可以使用软件来实现,也可以使用硬件来实现,就是一个虚拟的用于执行bytecodes
字节码的计算机。他也定义了指令集、寄存器集、结构栈、垃圾收集堆、内存区域
JVM负责将java字节码解释运行,边解释边运行,这样,速度就会受到一定的影响。JAVA提供了另一种
解释运行的方法JIT(just in time),可以一次解释完,再运行特定平台上的机器码,高级的JIT可以只能
分析热点代码,并将这些代码转成本地机器码,并将结果缓存起来,下次直接从内存中调用,这样就大
大提高了执行JAVA代码的效率。这样就实现了跨平台、可移植的功能。
-
JVM是指在一台计算机上由软件或硬件模拟的计算机;它类似一个小巧而高效的CPU
-
byte-code代码是与平台无关的是虚拟机的机器指令。
-
java字节代码运行的两种方式
- 方式interpreter(解释)
- Just-in-time(即时编译):由代码生成器将字节代码转换成本机的机器代码,然后可以以较高速度执行。
JAVA的跨平台实现的核心是不同平台使用不同的虚拟机
不同的操作系统有不同的虚拟机。Java 虚拟机机制屏蔽了底层运行平台的差别,实现了“一次编译,随处
运行”。
浙公网安备 33010602011771号