Java字节码中对应的JDK版本】的更多相关文章

Java class vs. JDK version mapping Java SE 9 = 53,Java SE 8 = 52,Java SE 7 = 51,Java SE 6.0 = 50,Java SE 5.0 = 49,JDK 1.4 = 48,JDK 1.3 = 47,JDK 1.2 = 46,JDK 1.1 = 45…
invokestatic,用于static修饰的方法.任何时候调用的时候只需要类名+方法名即可,无需new.JVM直接将其映射到方法区,执行速度极快.当该方法需要参数的时候,invokestatic会使用命令将参数从栈中弹出,传递给invokestatic. invokevirtual,用于public和protected修饰而没有static修饰的方法.在invokevirtual之前,总会有两条命令,astore(从栈中弹出对象引用,然后将其存到相应位置的局部变量中) & aload(将对象…
JVM 内部原理(六)- Java 字节码基础之一 介绍 版本:Java SE 7 为什么需要了解 Java 字节码? 无论你是一名 Java 开发者.架构师.CxO 还是智能手机的普通用户,Java 字节码都在你面前,它是 Java 虚拟机的基础. 总监.管理者和非技术人员可以放轻松点:他们所要知道的就是开发团队在正在进行下一版的开发,Java 字节码默默的在 JVM 平台上运行. 简单地说,Java 字节码是 Java 代码(如,class 文件)的中间表现形式,它在 JVM 内部执行,那么…
原文链接:http://www.blogjava.net/DLevin/archive/2011/09/05/358033.html 小介:去年在读<深入解析JVM>的时候写的,记得当时还想着用自己的代码解析字节码的,最后只完成了一部分.现在都不知道还有没有保留着,貌似Apache有现成的BCEL工程可以做这件事.当时也只是为了学习.这份资料主要参考<深入解析JVM>和<Java虚拟机规范>貌似是1.2版本的,整理出来的.里面包含了一些自己的理解和用实际代码的测试.有兴…
JVM 内部原理(七)- Java 字节码基础之二 介绍 版本:Java SE 7 为什么需要了解 Java 字节码? 无论你是一名 Java 开发者.架构师.CxO 还是智能手机的普通用户,Java 字节码都在你面前,它是 Java 虚拟机的基础. 总监.管理者和非技术人员可以放轻松点:他们所要知道的就是开发团队在正在进行下一版的开发,Java 字节码默默的在 JVM 平台上运行. 简单地说,Java 字节码是 Java 代码(如,class 文件)的中间表现形式,它在 JVM 内部执行,那么…
一.Java的class文件的内容 1.首先编写一个简单的代码 public class StringDemo { public static void main(String[] args) { String s=new String("hello world"); System.out.println(s); } } 2.运行程序编译成class文件,class文件的查看可以用Java class文件分析工具 -- Classpy 3.这种字节码文件我们肯定看不懂,所以我们可以通过…
背景 项目维护的时候版本混乱或者外出在现场项目排错的时候难免要比对两个jar/class/war文件的源代码. 通常情况下这个时候我们用jd-gui直接把文件拖进去比对,这种情况只适合单一文件的比对. 如果一个lib目录下有很多jar或者class文件要比对,这个时候工作量就比较大了. 笔者去年这个时候在网络上研究了一番,找到了一个可以批量反编译的中间件,后来写了一遍文章CFR - another java decompiler批量反编译jar文件. 这个可以批量反编译,具体移步看那篇文章.在以…
本文主要内容: ASM是什么 JVM指令 Java字节码文件 ASM编程模型 ASM示例 参考资料汇总 JVM详细指令 ASM是什么 ASM是一个Java字节码操纵框架,它能被用来动态生成类或者增强既有类的功能.ASM可以直接产生二进制class文件,也可以在类被加载入Java虚拟机之前动态改变类行为.Java class被存储在严格格式定义的.class文件里,这些类文件拥有足够的元数据来解析类中的所有元素:类名称.方法.属性以及 Java 字节码(指令).ASM从类文件中读入信息后,能够改变…
很多时候,我们都是从代码层面去学习如何编程,却很少去看看一个个 Java 代码背后到底是什么.今天就让我们从一个最简单的 Hello World 开始看一看 Java 的类文件结构. 在开始之前,我们先写一个最简单的入门 Hello World. public class Demo{ public static void main(String args[]){ System.out.println("Hello World."); } } 接着在命令行运行javac Demo.jav…
JVM 字节码(三)异常在字节码中的处理(catch 和 throws) 在 ClassFile 中到底是如何处理异常的呢? 一.代码块异常 catch catch 中的异常代码块在异常是如何处理的呢?还记得在 Code 属性中有如下的结构吗?这代码的是一个异常表信息. Code_attribute { ... u2 exception_table_length; { u2 start_pc; u2 end_pc; u2 handler_pc; u2 catch_type; } exceptio…