代码改变世界

文章分类 -  JAVA(转)

Java字节码(.class文件)格式详解(一)

2011-09-14 23:16 by Rollen Holt, 4528 阅读, 收藏, 编辑
摘要: 转自:http://www.blogjava.net/DLevin/archive/2011/09/05/358033.html小介:去年在读《深入解析JVM》的时候写的,记得当时还想着用自己的代码解析字节码的,最后只完成了一部分。现在都不知道还有没有保留着,貌似Apache有现成的BCEL工程可以做这件事。当时也只是为了学习。这份资料主要参考《深入解析JVM》和《Java虚拟机规范》貌似是1.2版本的,整理出来的。里面包含了一些自己的理解和用实际代码的测试。有兴趣的童鞋可以研究研究。嘿嘿。要有错误也希望能为小弟指点出来,感激不尽。:)1.总体格式Class File formattypede 阅读全文

Java虚拟机内部体系结构(摘记,待完善):)

2011-09-14 23:15 by Rollen Holt, 355 阅读, 收藏, 编辑
摘要: 转自:http://www.blogjava.net/DLevin/archive/2011/09/05/358032.htmlJava虚拟机体内部系结构包括class文件、类装载子系统、运行时数据区、之行引擎、本地方法调用结构,其中运行时数据区包括方法区、堆、Java栈、程序计数器、本地方法栈等。具体结构如下图所示(摘自Inside Java Virtual Machine):1.class文件在Java中,所有源文件都编译成二进制的字节码,然后由虚拟机装载运行。一般这样的字节码是以class文件的形式存在。在运行时,由ClassLoader类(System ClassLoader or U 阅读全文

Java字节码(.class文件)的代码解析

2011-09-14 23:13 by Rollen Holt, 2539 阅读, 收藏, 编辑
摘要: 转自:http://www.blogjava.net/DLevin/archive/2011/09/13/358498.htmlJava二进制指令代码以以下格式紧凑排列(opcode占一个字节):opcode operand*除了tableswitch和lookupswitch两条指令中间存在填充字节以外,其他指令都没有填充字节,即使在两条指令之间也没有。因而在读取指令的时候,要根据指令的定义读取。通过对上面Java指令集的分析可以知道,Java指令集中很大一部分没有操作数,因而对这部分指令,只需要读取一个字节的操作码,将操作码映射成助记符即可。而对其他带操作数的指令,则需要根据不同类型分析( 阅读全文

Java二进制指令代码解析

2011-09-14 23:12 by Rollen Holt, 2283 阅读, 收藏, 编辑
摘要: 转自:http://www.blogjava.net/DLevin/archive/2011/09/13/358497.htmlJava二进制指令代码解析Java源码在运行之前都要编译成为字节码格式(如.class文件),然后由ClassLoader将字节码载入运行。在字节码文件中,指令代码只是其中的一部分,里面还记录了字节码文件的编译版本、常量池、访问权限、所有成员变量和成员方法等信息(详见Java字节码格式详解)。本文主要简单介绍不同Java指令的功能以及在代码中如何解析二进制指令。Java指令是基于栈的体系结构,大部分的指令默认的操作数在栈中。映像中ARM是基于寄存器的操作指令,而x86 阅读全文

Java进阶书籍推荐

2011-09-14 12:39 by Rollen Holt, 671 阅读, 收藏, 编辑
摘要: 转载自:http://hi.baidu.com/colorfulsky_08/blog/item/e335281f7efc20f0e1fe0bd2.html一、Java编程入门类对于没有Java编程经验的程序员要入门,随便读什么入门书籍都一样,这个阶段需要你快速的掌握Java基础语法和基本用法,宗旨就是“囫囵吞枣不求甚解”,先对Java熟悉起来再说。用很短的时间快速过一遍Java语法,连懵带猜多写写代码,要“知其然”。1、《Java编程思想》在有了一定的Java编程经验之后,你需要“知其所以然”了。这个时候《Java编程思想》是一本让你知其所以然的好书,它对于基本的面向对象知识有比较清楚的交待 阅读全文

规划Java技术体系

2011-08-20 00:01 by Rollen Holt, 2210 阅读, 收藏, 编辑
摘要: 为了系统地学习Java技术,本文将制定一套完整的Java技术学习路线。AD:Java技术路线图提示:前文对Java技术做了框架性的分析,包括Java SE、JavaEE和Java ME,让读者了解了Java由哪些技术组成。为了系统地学习这些技术,本文将制定一套完整的Java技术学习路线。从前文中我们已经了解到,Java SE中包含了Java的基础技术,Java EE中包含了网络应用开发的各种技术,Java ME中包含了移动设备应用开发的各种技术,且Java SE是Java EE和Java ME的基础,所以对于Java技术的学习,有两条学习路线:Java SE→Java EE:主要进行网络应用开 阅读全文

java环境变量配置

2011-05-29 00:42 by Rollen Holt, 203 阅读, 收藏, 编辑
摘要: 原文:http://blog.csdn.net/huanghm88/archive/2009/03/07/3965218.aspxwindows xp下配置JDK环境变量: 1.安装JDK,安装过程中可以自定义安装目录等信息,例如我们选择安装目录为D:\java\jdk1.5.0_08; 2.安装完成后,右击“我的电脑”,点击“属性”; 3.选择“高级”选项卡,点击“环境变量”; 4.在“系统变量”中,设置3项属性,JAVA_HOME,PATH,CLASSPATH(大小写无所谓),若已存在则点击“编辑”,不存在则点击“新建”; 5.JAVA_HOME指明JDK安装路径,就是刚才安装时所选择的路 阅读全文

支持查找功能的分数类 7(有几个函数很有用)

2011-05-02 23:35 by Rollen Holt, 609 阅读, 收藏, 编辑
摘要: 1 //测试类 2 //范例1-3 支持查找功能的分数类 7 3 //∷相关函数:compareTo函数 4 5 public class Exec2 { 6 public static void main(String[] args) { 7 // 创建两个分数类变量 8 Fraction fraction1 = new Fraction(0.25); 9 Fraction fraction2 = new Fraction(2, 8); 10 11 // 分数相加 12 Fraction fraction3 = fraction1.add(fraction2); 13 System.out. 阅读全文

java中super的两种用法

2011-05-01 18:45 by Rollen Holt, 112652 阅读, 收藏, 编辑
摘要: 通过用static来定义方法或成员,为我们编程提供了某种便利,从某种程度上可以说它类似于C语言中的全局函数和全局变量。但是,并不是说有了这种便利,你便可以随处使用,如果那样的话,你便需要认真考虑一下自己是否在用面向对象的思想编程,自己的程序是否是面向对象的。好了,现在开始讨论this&super这两个关键字的意义和用法。在Java中,this通常指当前对象,super则指父类的。当你想要引用当前对象的某种东西,比如当前对象的某个方法,或当前对象的某个成员,你便可以利用this来实现这个目的,当然,this的另一个用途是调用当前对象的另一个构造函数,这些马上就要讨论。如果你想引用父类的某 阅读全文

类Properties

2011-05-01 11:30 by Rollen Holt, 3171 阅读, 收藏, 编辑
摘要: extends Hashtable<Object,Object>Properties 类表示了一个持久的属性集。Properties 可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串。 一个属性列表可包含另一个属性列表作为它的“默认值”;如果未能在原有的属性列表中搜索到属性键,则搜索第二个属性列表。 因为 Properties 继承于 Hashtable,所以可对 Properties 对象应用 put 和 putAll 方法。但不建议使用这两个方法,因为它们允许调用者插入其键或值不是 String 的项。相反,应该使用 setProperty 方法。如果在“不安 阅读全文

类 StringTokenizer

2011-05-01 11:21 by Rollen Holt, 11336 阅读, 收藏, 编辑
摘要: java.util 类 StringTokenizerjava.lang.Object java.util.StringTokenizer所有已实现的接口: Enumeration<Object> public class StringTokenizerextends Objectimplements Enumeration<Object>string tokenizer 类允许应用程序将字符串分解为标记。tokenization 方法比 StreamTokenizer 类所使用的方法更简单。StringTokenizer 方法不区分标识符、数和带引号的字符串,它们也不 阅读全文

Hashtable

2011-05-01 11:09 by Rollen Holt, 1196 阅读, 收藏, 编辑
摘要: java.util 类 Hashtable<K,V>java.lang.Object java.util.Dictionary<K,V> java.util.Hashtable<K,V>所有已实现的接口: Serializable, Cloneable, Map<K,V> 直接已知子类: Properties, UIDefaults public class Hashtable<K,V>extends Dictionary<K,V>implements Map<K,V>, Cloneable, Serializ 阅读全文

Java关键字final、static使用总结

2011-04-28 00:43 by Rollen Holt, 272 阅读, 收藏, 编辑
摘要: Java关键字final、static使用总结常看很多入门鸟们在final 和static运用上感到迷茫,现总结一下final和static的运用方法,希望对大家有帮助。一、final根据程序上下文环境,Java关键字final有“无法改变”或者“终态”的含义,它可以修饰非抽象类、非抽象类成员方法和变量。final类不能被继承,没有子类,final类中的方法默认是final的。final方法不能被子类的方法覆盖,但可以被继承。final成员变量表示常量,只能被赋值一次,赋值后值不再改变。final不能用于修饰构造方法。注意:父类的private成员方法是不能被子类方法覆盖的,因此private 阅读全文

真正的Java学习从入门到精通

2011-04-27 17:43 by Rollen Holt, 728 阅读, 收藏, 编辑
摘要: 原文链接:http://www.java-cn.com/club/?uid-23812-action-viewspace-itemid-1819一、工具篇JDK (Java Development Kit)JDK是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具和Java基础的类库(rt.jar)。不论什么Java应用服务器实质都是内置了某个版本的JDK。因此掌握JDK是学好Java的第一步。最主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了自己的JDK,例如IBM公司开发的JDK,BEA公司的Jro 阅读全文

代码点和代码单元

2011-04-09 23:12 by Rollen Holt, 420 阅读, 收藏, 编辑
摘要: 代码点&代码单元字符视图要了解字符集标准,必须能区分三种不同的字符视图: 字符集(字符的抽象列表)。 作为带标量值的“代码点”的字符。 作为编码数据的字符。 字符集(字符的抽象列表)字符集是各种文字(包括拉丁文、西里尔文、中文、朝鲜语、日语、希伯来语和阿拉伯语)中所包含的字符的一个抽象列表,由一百多万个字符组成。字符集还包括其他符号,例如音符。Unicode 和 GB18030 标准都具有字符集。当某个标准添加了新字符时,为了保持对等,另一个标准也将添加这些字符。作为带标量值的“代码点”的字符注意 这第二个字符视图只适用于 Unicode,而不适用于 GB18030。字符集中的每个字符 阅读全文

子类与父类之间的调用关系

2011-04-09 18:00 by Rollen Holt, 1911 阅读, 收藏, 编辑
摘要: 1 1,现在有下面这个程序: 2 3 class Base { 4 public Base() { 5 System.out.println("Base"); 6 } 7 } 8 9 public class In extends Base {10 public static void main(String argv[]){ 11 In in=new In(); 12 } 13 }14 15 输出结果:Base16 17 2,如果把Base类的构造函数改成一个普通的类的话,如下:18 19 class Base { 20 public void Base() { 21 S 阅读全文

JDK 7 的官方网站 jdk7.java.net

2011-04-09 13:40 by Rollen Holt, 462 阅读, 收藏, 编辑
摘要: JDK 7 的官方首页来了,是 Java.net 的一个子域名。在这个网站中你可以下载最新的 JDK 7 的开发者预览版,查看 JDK 7 的 API 文档等。 访问http://jdk7.java.net/ 阅读全文

垃圾收集解析

2011-04-05 11:38 by Rollen Holt, 356 阅读, 收藏, 编辑
摘要: 垃圾收集器是Java语言区别于其他程序设计语言的一大特色。它把程序员从手工回收内存空间的繁重工作中解脱了出来。 我们知道,许多程序设计语言都允许在程序运行期动态地分配内存空间。分配内存的方式多种多样,取决于该种语言的语法结构。但不论是哪一种语言的内存分配方式,最后都要返回所分配的内存块的起始地址,即返回一个指针到内存块的首地址。 当已经分配的内存空间不再需要时,换句话说当指向该内存块的句柄超出了... 阅读全文

java 学习笔记《1》

2011-04-04 23:28 by Rollen Holt, 500 阅读, 收藏, 编辑
摘要: 1.除了标准输出串流out之外,Java程式在执行之后,还会开启标准输入串流in与标准错误输出串流err。对于in来说,它对应至键盘或其它的输入来源,准备接受使用者或其它来源的输入。而对于err,它会将指定的字串输出至显示装置或其它指定的装置,与标准输出串流out不同的是,它会立即显示指定的(错误)讯息给使用者知道,例如即使您指定程式将结果重新导向至档案,err输出串流的讯息并不会被重新导向,而仍会显示在指定的显示装置上,下面这个例子给您一个简单的测试方式: HelloWorld.java文件 1: public class HelloWorld { 2: public stat... 阅读全文

java帮助文档 JDK帮助文档(chm版) (所有版本提供下载)

2011-03-27 11:27 by Rollen Holt, 16085 阅读, 收藏, 编辑
摘要: JDK帮助文档(chm版) (所有版本提供下载)2008年7月9日 — admin所有文档收集来自互联网,只供学习使用。J2SE 6 documentation点击下载54 MbJ2SE 5.0 Documentation点击下载41 MbJ2SE 1.4.2 Documentation点击下载34 MbJDK 1.3.1 Documentation点击下载23 MbJDK 1.1.8 Documentation点击下载2.6 MbThe Java Tutorial (Nov 10, 2006 edition)点击下载11.6 MbJava Enterprise Edition 5 API D 阅读全文