第一章 走进java

java技术体系包括:

  java程序设计语言;

  各种硬件平台上的java虚拟机实现;

  Class文件格式;

  Java类库API;

  来自商业机构和开源社区的地三方java类库;

 

JDK(是支持Java开发的最小环境) =  java程序设计语言 + java虚拟机 + Java类库;

JRE(是支持java运行的标准环境)= java类库API中的Java SE API 子集 + Java虚拟机

 

即时编译(JIT): 通常情况下,Java程序最初都是被编译为字节码,通过解释器进行解释执行,解释执行能够获得更好的启动时间。某些被频繁执行的方法或者代码块,会被JVM认定为“热点代码”。在运行时JVM会把这些热点代码编译成与本地平台相关的机器码,并且进行各种层次的优化,以提高执行效率。完成这个任务的编译器称为即时编译器(JIT编译器).

字节码:是一种包含执行程序、由一序列 op 代码/数据对 组成的二进制文件。字节码是一种中间码,它比机器码更抽象,需要转译后才能成为机器码的中间代码。

字节码主要为了实现特定软件运行和软件环境、与硬件环境无关。字节码的实现方式是通过编译器和虚拟机器。编译器将源码编译成字节码,特定平台上的虚拟机器将字节码转译为可以直接执行的指令。字节码的典型应用为Java bytecode。字节码在运行时通过JVM(JAVA虚拟机)做一次转换生成机器指令,因此能够更好的跨平台运行。字节码是一种中间状态(中间码)的二进制代码(文件)。需要直译器转译后才能成为机器码。

机器码:机器码(machine code),学名机器语言指令,有时也被称为原生码(Native Code),是电脑的CPU可直接解读的数据。

机器码就是计算机可以直接执行,并且执行速度最快的代码。

编译模式: 而译执行不加筛选的将全部代码进行编译机器码不论其执行频率是否有编译价值,在程序响应时间的限制下,编译器没法采用编译耗时较高的优化技术(因为JIT的编译是首次运行或启动的时候进行的!),所以,在纯编译执行模式下的java程序执行效率跟C/C++也是具有较大差距的。

解释模式:  对于解释执行,不经过jit直接由解释器解释执行所有字节码,执行效率不高

-------------------------------------------------------------------------我是不华丽的分割线-------------------------------------------------------------------------

实战:自己编译JDK

OpenJDK VS OracleJDK:  OpenJDK是开源的,Oracle JDK是官方的.

首先, 下载源码: 

  • https://hg.openjdk.java.net/jdk/jdk12。
  • 点击左边菜单的“Browse”。
  • 点击左边的zip, 开始下载当前版本打包好的源码,本地直接解压。
posted @ 2020-09-08 21:54  刘大飞  阅读(134)  评论(0编辑  收藏  举报