说了那么多,大家可能晕晕的,我自己也晕晕的。下面我们来动动手吧!

注意:我们在每一章都有一个实战环节,大家在阅读一些基本知识的时候可以同时参考实战,带着实际应用的需要去学习基本知识是一件很愉快的事情。
实战前的开发包和工具准备:
□ 从http://java.sun.com/javase/downloads/widget/jdk6.jsp​下载Sun的JDK。具体安装过程比较简单,请自行解决。
□ 弄个文本编辑器来编写Java代码,或者下载Java的IDE,推荐从http://www.eclipse.org/downloads/​下载Eclipse IDE for Java Developers。安装过程简单,请自行解决。
□ 从http://www.cs.ioc.ee/~ando/jbe​下载Java字节码编辑工具JBE。
□ 从http://www.codeblocks.org/downloads/binaries​下载codeblocks-*mingw-setup.exe作为C/C++开发工具,其中自带了Mingw的GCC编译工具。如果你有Visual Studio那就不用下了。
用JBE修改Java字节码
如下图,我们把左边的Class1代码编译后的.class文件修改成右边源代码的输出结果(用AOP的说法就是拦击方法run,在run运行之前做件事情):
先把源文件编译,用JBE打开编译后的Class1.class文件,找到Methods-run-[0]Code,如下图:
把run方法的字节码修改为下图内容,保存:
OK,我们的任务完成了。
-----------------------------------------------------------------------
借题发挥:我们经常会遇到需要搞明白编译后的Java字节码具体干什么但又没有源文件,我们有两种选择:
□ 阅读字节码,阅读懂的前提条件是了解Java字节码类文件格式​和JVM指令集​。
□ 用Java字节码反编译器,即让编译器帮你做了读懂字节码的工作。推荐一个命令行反编译器JAD(http://www.varaneckas.com/jad​)。

《Java平台体系》——第二章 JVM——实战:用JBE修改Java字节码相关推荐

  1. 【JVM】第二章 JVM类加载、JVM对象

    第二章 JVM类加载.JVM对象 文章目录 第二章 JVM类加载.JVM对象 一.JVM类加载 1.介绍 2.类加载器 3.类加载机制 4.类加载过程 二.JVM对象 1.对象的内存布局 2.对象的访 ...

  2. 尚硅谷Java入门视频教程第二章——Java基本语法

    尚硅谷Java入门视频教程第二章 第一章复习 课后习题 Java语言概述 第2章:Java基本语法 2.1 关键字和保留字 2.2 标识符(Identifier) 2.3 变量 2.3.1 变量基本概 ...

  3. 语言求余和乘除优先级_愉快地学Java语言:第二章基本程序设计 第2讲

    导读 本文适合Java入门,不太适合Java中高级软件工程师. 本文以<Java程序设计基础篇>第10版为蓝本,采用不断提出问题,然后解答问题的方式来讲述. 本篇文章只是这个系列中的一篇, ...

  4. JAVA 虚拟机深入研究(二)——JVM虚拟机发展以及一些Java的新东西

    内容目录: JAVA 虚拟机深入研究(一)--关于Java的一些历史 JAVA 虚拟机深入研究(二)--JVM虚拟机发展以及一些Java的新东西 这是第二篇,我们来说说有关虚拟机的发展. 一说到虚拟机 ...

  5. 第二章 Caché JSON 创建和修改动态实体

    文章目录 第二章 Caché JSON 创建和修改动态实体 使用JSON文字构造器 使用动态表达式和点语法 使用点语法创建动态对象属性 使用点语法创建动态数组元素 使用 %Set(), %Get(), ...

  6. 用JBE修改Java字节码

    2019独角兽企业重金招聘Python工程师标准>>> 用JBE修改Java字节码 注意:我们在每一章都有一个实战环节,大家在阅读一些基本知识的时候可以同时参考实战,带着实际应用的需 ...

  7. JVM系列(十七):字节码指令集

    1.概述 属于基本的执行指令 由操作码(1个字节)和操作数组成 1.1.执行模型 执行模型如下伪代码 1.2.字节码和数据类型 大多数指令都包含了操作所对应的数据类型信息,比如iload从局部变量表中 ...

  8. Java基础入门第二章

    大二学的java,一个假期过去,学的差不多都忘光了,在这里再重学一遍,也算不上重学吧,相当于复习吧.第一章讲的是jdk及开发工具的安装,这里就不多赘述了,废话不多说,我们直接从第二章开始. 2.1Ja ...

  9. 【JAVA SE】第二章 Java语法基础、数据类型、基本类型的字面值、基本类型的类型转换和运算规则

    第二章 Java语法基础.数据类型.基本类型的字面值.基本类型的类型转换.运算规则和标识符命名风格 文章目录 第二章 Java语法基础.数据类型.基本类型的字面值.基本类型的类型转换.运算规则和标识符 ...

最新文章

  1. 修复错误配置fstab文件导致系统无法正常启动
  2. attention retain_Attention-Aware Compositional Network
  3. python 打开文件,读取文件内容
  4. java.lang.String小测试
  5. 远程终端管理和检测系统
  6. Android之error: ‘const struct JNINativeInterface‘ has no member named ‘callVoidMethod‘
  7. python移位操作困惑
  8. Redhat的Linux产品版本AS/ES/WS的联系与区别
  9. Linux crontab 定时任务命令详解
  10. 【Linux】【Commands】文本查看类
  11. 边缘计算崛起!施耐德联手华胜天成打造胶囊数据中心,真正端到端交付
  12. java xml 单标签,如何修改java中的xml标签特定值?
  13. 浅谈MySQL索引背后的数据结构及算法【转】
  14. [渝粤教育] 西安交通大学 光通信器件及系统 参考 资料
  15. windows 2003下配置IIS6为iis5方式的隔离模式运行
  16. Nginx 多重判断
  17. 7个碎片的excel重组实验
  18. 《R语言初学指南》一1.4 实际案例
  19. 验证服务器的通用性,通用VNFM部署的可行性分析与验证
  20. HTML网页设计:七、表格

热门文章

  1. 计算机输入设备的作用,认识计算机输入设备—键盘
  2. 外发光材质Shader
  3. 程序员晒出从毕业到工作5年照片,抱怨头发掉光了,网友:很真实
  4. excel单元格斜线_最实用的8个Excel操作技巧,1分钟学会!
  5. 一行代码,将2D转3D图表!
  6. 巴拿赫空间基本理论及其应用
  7. 机器学习实战(三)——决策树
  8. 时间戳转换成YY-MM-DD HH:MM:SS格式
  9. FLASH大厅安装错误3070修复解决方案
  10. PICO 开发者管理平台