2019年11月29日
摘要: 前端编译器,把java文件变成class文件字节码,sun的javac,Eclipse JDT中的编译插件ECJ。 JIT,just it time Hotswap的c1,c2把字节码转换成机器码,及时编译器。 AOT编译器:GCJ,JET把java文件变成机器码,静态提前编译器。 虚拟机团队把设计 阅读全文
posted @ 2019-11-29 17:57 清浊 阅读(612) 评论(0) 推荐(0) 编辑
  2019年11月27日
摘要: 通过java动态生成一个代理类的代码如下 package aop.proxyutil;import javax.tools.JavaCompiler;import javax.tools.StandardJavaFileManager;import javax.tools.ToolProvider; 阅读全文
posted @ 2019-11-27 16:14 清浊 阅读(272) 评论(0) 推荐(0) 编辑
摘要: OSGI灵活的类加载器架构,它制定了一个基于java语言的动态模块化规范。它的每一个模块都是以jar的格式进行封装(称为bundle)。一个bundle可以申明它所依赖的package,通过import导入,也可以导出发布 package.OSGI,Bunlde之间的依赖关系从传统的上层依赖于底层转 阅读全文
posted @ 2019-11-27 12:56 清浊 阅读(185) 评论(0) 推荐(0) 编辑
摘要: class文件格式与执行引擎这部分,用户程序可以影响的不多,class文件格式,以及如何存储,类型何时加载,何时连接以及虚拟机如何执行字节码指令等都由虚拟机直接控制的行为。能通过程序控制的只有字节码的生成和类加载器这两部分功能。 1、案例一:tomcat正统的类加载器架构 web服务器都有如下类加载 阅读全文
posted @ 2019-11-27 09:57 清浊 阅读(199) 评论(0) 推荐(0) 编辑
  2019年11月26日
摘要: 1、解释执行 编译过程如下 2、基于栈的指令集和基于寄存器的指令集 java编译器输出的指令流,基本是一种基于栈的指令集架构,指令流中的大部分指令都是零地址,依赖于操作数工作。与之相对的是基于寄存器的指令集,也就是目前pc支持的指令集。两者的不同,举例如下: 1+1基于栈的指令集iconst_1,i 阅读全文
posted @ 2019-11-26 09:44 清浊 阅读(262) 评论(0) 推荐(0) 编辑
  2019年11月24日
摘要: Finding enough time in the week to both carveout meaningful home experiences and alsocomplete high-priority work assignments seems to leaveboth domain 阅读全文
posted @ 2019-11-24 21:33 清浊 阅读(406) 评论(0) 推荐(0) 编辑
摘要: 词法名词变复数动词变第三人称辅音+y-》y变i+es形容词变比较级和最高级序数词和基数词互换主语从句-句子放在主语的位置做主语he is right What you said is right动词过去式一定是谓语,所以有谓语就是一定是一个句子。rigth是表语,表达对主语或者宾语的补充宾语从句,整 阅读全文
posted @ 2019-11-24 20:45 清浊 阅读(767) 评论(0) 推荐(0) 编辑
摘要: 方法调用不等于方法执行,方法调用阶段的唯一任务就是确定被调用的方法的版本。class文件编译期间不包含传统程序的连接过程,因此方法不是实际内存运行的入口地址,这个特性给java带来了动态扩展的能力,也使java的方法调用过程变得更加复杂,需要在类加载期间甚至运行期间才能确定目标方法的引用。 1、解析 阅读全文
posted @ 2019-11-24 11:32 清浊 阅读(327) 评论(0) 推荐(0) 编辑
摘要: 在不同的java虚拟机里面,执行引擎在执行java代码时可能会解释执行(通过解释器进行执行)也可能会编译执行(通过即时编译器产生本地代码进行执行),也可能两者兼备,甚至还可能包含几个级别不同的编译器执行引擎。 栈帧是虚拟机进行方法调用和方法运行的数据结构,是虚拟机运行时虚拟机栈的栈元素,存储了方法的 阅读全文
posted @ 2019-11-24 07:34 清浊 阅读(313) 评论(0) 推荐(0) 编辑
  2019年11月23日
摘要: 1、虚拟机将类加载阶段通过一个类的限定名来获取描述该类的二进制文件流的动作放到java虚拟机以外,以便让应用程序决定去如何获取所需的类,实现这个动作的类被称为类加载器。对于任意一个类需要有它的类加载器和这个类本身一同确立其在java虚拟机中的唯一性,每一个类加载器都有一个独立的类名称空间,两个类相等 阅读全文
posted @ 2019-11-23 23:37 清浊 阅读(263) 评论(0) 推荐(0) 编辑