`java.lang.Instrument包`是在JDK5引入的,程序员通过修改方法的字节码实现动态修改类代码。这通常是在类的main方法调用之前进行预处理的操作,通过java指定该类的代理类来实现。 (1) 代理 (agent) 是在你的mai...
分类:
编程语言 时间:
2014-12-30 23:48:36
阅读次数:
540
第一讲 反射应用场景&特点1、反射定义动态的获取指定类以及动态的调用类中的内容。给程序使用者提供了一个可以自己定制功能的接口,提高了程序的扩展性。2、实现方式通过配置文件的方式,程序使用者在配置文件中设置自定义的类名,程序内部调用该配置文件,获取该类的字节码文件及类对象,进而调用类中的成员方法和成员...
分类:
编程语言 时间:
2014-12-29 21:19:17
阅读次数:
317
反射: 什么是反射? 剖析Java类中的各个组成部分映射成一个个java对象 为什么用反射? 多用于框架和组件,写出复用性高的通用程序 1.Class类. Class代表的就是我们的字节码文件. 三种方式. 1.类名.class ...
分类:
其他好文 时间:
2014-12-29 13:33:23
阅读次数:
144
常见java问题
什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?
Java虚拟机是一个可以执行Java字节码的虚拟机进程。Java源文件被编译成能被Java虚拟机执行的字节码文件。
Java被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。Java虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其他特性。
JDK和JR...
分类:
编程语言 时间:
2014-12-28 15:37:20
阅读次数:
311
第10章 早期(编译期)优化javac编译过程: 1、解析与填充符号表过程 词法、语法分析 将源代码的字条流转变为标记(Token)集合。如“int a = b + 2”这名代码包含了6个标记,分别是int a = b + 2 填充符号表 2、注解处理器 3、语义分析与字节码生成 标注检...
分类:
编程语言 时间:
2014-12-27 16:06:38
阅读次数:
154
为什么选择Scala?
表达能力
函数是一等公民闭包
简洁
类型推断函数创建的文法支持
Java
可重用java库可重用java工具没有性能惩罚
Scala如何工作?
编译成Java字节码
可在任何标准JVM上运行
甚至是在一些不规范的JVM上,如Dalvik
Scala编译器是Java编译器的作者写的
...
分类:
其他好文 时间:
2014-12-26 18:42:19
阅读次数:
310
JAVA运行时数据区域 1、程序计数器:当前线程所执行的字节码的行号指示器。一个处理器只会执行一条线程中的指令,为了线程切换后能回复到正确的执行位置,所以每条线程都需要一个独立的计数器。各条线程之间互不影响,独立存储,属于‘线程私有’内存。 2、java虚拟机栈:描述的是JAVA方法执行的内存模型....
分类:
其他好文 时间:
2014-12-25 18:19:59
阅读次数:
170
第8章 虚拟机字节码执行引擎8.2 运行时栈帧结构 栈帧(Stack Frame)是用于支持虚拟机进行方法调用和方法执行的数据结构。 每一个栈帧包括了局部变量表、操作数栈、动态连接、方法返回地址和一些额外的附加信息。 在活动线程中,只有位于栈顶的栈帧才是有效的,称为当前栈帧 Current S...
分类:
编程语言 时间:
2014-12-23 22:31:15
阅读次数:
225
一、编译和运行Java程序必须经过两个步骤:1、将源文件编译成字节码;2、解释执行平台无关的字节码程序。二、问题以上两个步骤分别需要使用javac和java两个命令(javac命令对java源文件进行编译生成class文件,java命令对生成的class文件进行运行),如果我们直接在cmd命令行窗..
分类:
编程语言 时间:
2014-12-23 19:41:38
阅读次数:
152
1.java跨平台原因java字节码文件能够在不同的系统上运行是依赖java虚拟机,但是java虚拟机是不跨平台的原理:java编辑--->java编译--->java运行-------编写代码--编译成字节码文件--在虚拟机运行2.安装jdk通过环境变量配置好JAVA路径指向java bin文件然...
分类:
编程语言 时间:
2014-12-23 09:01:32
阅读次数:
214