Class文件结构由于本部分内容概念性知识过多显的过于繁琐,已经尽力精简,且有些细节仍未写到,所以最后以一个反编译文件为例进行文件结构分析。 文章目录Class文件结构一、Class文件结构魔数与Class文件的版本常量池访问标志索引、父索引与接口索引集合字段表集合方法表集合属性表集合 一、Class文件结构Class文件是一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑
转载 2024-01-16 23:05:38
28阅读
文件结构 一 概述 二 Class 文件结构总结 2.1 魔数(Magic Number) 2.2 Class 文件版本号(Minor&Major Version) 2.3 常量池(Constant Pool) 2.4 访问标志(Access Flags) 2.5 当前(This Class)、 ...
转载 2021-09-14 23:21:00
349阅读
2评论
 Class文件是以8位字节为基础单位的二进制流,各部分中间没有分隔符。遇到8位字节以上的空间数据项时,则会按照高位在前的方式分割成若干个8位字节进行存储。    Class文件采用类似C语言的伪结构体来存储,这种伪结构体只有两种数据类型:无符号数和表。无符号数以u1,u2,u4,u8四种,数字代表字节数。可以用来描述数字、索引引用、数量值或者按照UTF-8
转载 2023-08-14 18:28:52
59阅读
跟着书过了一遍把图画出来之后那时候叫一个豁然开朗
原创 2022-09-26 10:07:44
36阅读
一 概述在 Java 中,JVM 可以理解的代码就叫做字节码(即扩展名为 .class 的文件),它不面向任何特定的处理器,只面向虚拟机。Java 语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。所以 Java 程序运行时比较高效,而且,由于字节码并不针对一种特定的机器,因此,Java 程序无须重新编译便可在多种不同操作系统的计算机上运行
转载 2021-01-19 19:19:46
119阅读
阅读《深入理解java虚拟机》第六章心得。1.概述这里要说的是我们通过文本编辑器写好一个“a.java文件以后,是如何被虚拟机编译为字节码的,以及字节码的格式。不过先说一下关于java特性的问题。一般的语言,都是直接编译为本地机器语言的,所以一段代码为了运行在不同的环境下可能需要编译为不同的格式才能运行,最终的二进制格式必须是平台识别的。java的理念是“写出来的代码可以到处运行”,指的是代码只
原创 2022-11-11 11:58:56
77阅读
概述一次编写,处处运行(Write Once, Run Anywhere).各种平台的虚拟机与所
原创 2023-01-09 17:28:47
120阅读
我们都知道java实现跨平台靠的是虚拟机技术,将源文件编译成与操作系统无关的,只有虚拟机能识别并执行的字节码文件,由各个操作系统上的jvm来负责执行,屏蔽了底层具体的操作系统。这里我们就来认识一下这个只有jvm才认识的字节码文件的真实样子。为了节省空间,文件中没有任何分隔符,各个数据项都是一个挨着一个紧凑排列的,所以其中无论是顺序还是数量等都是严格规定的,哪个字节代表什么含义,长度是多少,先后顺
GitHub:https://github.com/wangzhiwubigdata/God-Of-BigData 关注公众号,内推,面试,资源下载,关注更多大数据技术~ 大数据成神之路~预计更新500+篇文章,已经更新50+篇~ 文件结构JVM 的“无关性”谈论 JVM 的无关性,主要有以下两个:平台无关...
转载 2021-06-10 23:12:28
79阅读
JVM 的“无关性”谈论 JVM 的无关性,主要有以下两个:平台无关性:任何操作系统都能运行 Java 代码 语言无关性: JVM 能运行除 Java 以外的其他代码Java 源代码首先需要使用 Javac 编译器编译成 .class 文件,然后由 JVM 执行 .class 文件,从而程序开始运行。JVM 只认识 .class 文件,它不关心是何种语言生成了 .class 文件,...
原创 2021-07-12 10:50:00
103阅读
一.简介实现语言无关性的基础仍然是虚拟机和字节码存储格式。Java虚拟机不和包括Java在内任何语言绑定,它只与Class文件这种特定的二进制文件格式所关联,Class文件中包含了Java虚拟机指令集和符号表以及若干其他辅助信息。Clojure(Lisp 语言的一种方言)、Groovy、Scala 等语言都是运行在 Java 虚拟机之上。下图展示了不同的语言被不同的编译器编译成.class文件最终运行在 Java 虚拟机之上。可以说.class文件是不同的语言在 Java 虚拟机之间的重要桥梁,同时
原创 2021-08-31 09:14:25
148阅读
文件
原创 2018-06-26 22:06:55
852阅读
根据Java虚拟机规范,文件由单个ClassFile结构组成:ClassFile { u4 magic; //Class ⽂件的标志 u2 minor_version;//Class 的⼩版本号 u2 major_version;//Class 的⼤版本号 u2 constant_pool_count;//常量池的数量 cp_info constant_pool[c
原创 2023-07-06 14:28:24
27阅读
GitHub:https://github.com/wangzhiwubigdata/God-Of-BigData 关注公众号,内推,面试,资源下载,关注更多大数据技术~ 大数据成神之路~预计更新500+篇文章,已经更新50+篇~ 文件结构JVM 的“无关性”谈论 JVM 的无关性,主要有以下两个:平台无关...
转载 2021-06-10 23:12:26
89阅读
前面的内容我们了解到jvm的内存结构。所有java文件必须经过“编译”转成class文件之后才会被jvm所识别和运用。那么我们开始了解一下文件也就是class文件结构。也就是我们写的java文件最终会被编译成什么样?那种格式?本文讲解内容借鉴了《Java 虚拟机规范(Java SE 7 版)》第四章。如果有兴趣可以自行观赏本书,对您以后的开发大有裨益。1、文件介绍每一个 Class 文件都对
转载 2023-07-19 13:26:39
44阅读
 其实在整理字段表和方法表的时候有点疑问,字段表不是也能用描述符描述方法吗(详见下面字段表的描述)?那么还需要方法表干什么呢?后来想了半天,我想到了一个可能的答案,不知道准不准确,先记下来,欢迎评论去留言补充。字段表存储的是中的字段,这些字段可能是一些成员变量,也可能是调用的某个其他的方法,那么这个方法是不是算作字段存储到字段表当中呢?可能是因为这样,暂时想不到其他的可能性了。而方
# 从JSON结构生成Java文件教程 ## 1. 整体流程 以下是从JSON结构生成Java文件的整体流程: ```mermaid gantt title 从JSON结构生成Java文件流程 section 创建Java文件 定义需求格式 :done, des1, 2022-01-01, 1d 生成Java文件
原创 2024-06-09 04:34:45
25阅读
平台无关性 Java是与平台无关的语言,这得益于Java源代码编译后生成的存储字节码的文件,即Clas
原创 2022-01-04 10:05:08
169阅读
本文部分摘自《深入理解 Java 虚拟机第三版》概述我们知道,Java 具有跨平台性,其实现基础就是虚拟机和字节码存储格式。Java 虚拟机不与 Java 语言绑定,只与 Class 文件所关联。Java 虚拟机作为一个通用的、与机器无关的执行平台,任何语言都可以将 Java 虚拟机作为它们的运行基础,以 Class 文件作为它们产品的交付媒介。Class 文件是一组以 8 个字节为基础单位的二进
转载 2021-01-22 20:45:46
139阅读
2评论
本文部分摘自《深入理解 Java 虚拟机第三版》 概述 我们知道,Java 具有跨平台性,其实现基础就是虚拟机和字节码存储格式。Java 虚拟机不与 Java 语言绑定,只与 Class 文件所关联。Java 虚拟机作为一个通用的、与机器无关的执行平台,任何语言都可以将 Java 虚拟机作为它们的运 ...
转载 2021-06-17 17:52:43
108阅读
  • 1
  • 2
  • 3
  • 4
  • 5