广告
返回顶部
首页 > 资讯 > 精选 >Java class文件格式总结_动力节点Java学院整理
  • 880
分享到

Java class文件格式总结_动力节点Java学院整理

javaclass文件格式 2023-05-31 12:05:32 880人浏览 泡泡鱼
摘要

我们都知道JVM能够识别的只有class格式的文件, 而源文件只是我们人能识别的, 不能被JVM识别。 那我们要在更深的层次上理解Java语言, 理解JVM, 只懂源文件是不够的, 因为虚拟机的很多的行为, 是在class文件中定义的, 而

我们都知道JVM能够识别的只有class格式的文件, 而源文件只是我们人能识别的, 不能被JVM识别。 那我们要在更深的层次上理解Java语言, 理解JVM, 只懂源文件是不够的, 因为虚拟机的很多的行为, 是在class文件中定义的, 而我们要理解JVM的行为, 就必须也学会JVM能理解的“语言”, 那就是class文件格式 。 就像我们想要深入的了解一个外国人, 只站在自己的角度上是不可能了解他的, 只有你学会了他的语言, 才能对他更了解, 因为只有你理解了他说的话, 才能知道他做的事, 进而了解他的行事方式和性格特点。 当然, 也有另外一个方式可以让你了解外国人, 那就是让他学会中国话, 你们用中文交流。 但是在Java的世界里, 这是不可能的, 因为你不可能让JVM识别源文件, 所以, 只能你去学习JVM能理解的语言 ---- class文件。 

理解了class文件的格式, 不仅对理解JVM的行为有指导性的意义, 它还能让我们对Java代码有更加清晰深刻的认识, 毕竟class文件是由我们写的java代码“翻译”过来的。 明白了class文件的格式, 你就能知道方法是如何表示的, 字段是如何表示的, 继承是如何表示的 , 方法体是如何表示的, 等等。 所有源文件中的东西, 都会在class文件中有相应的描述形式。 这样会让我们在写代码时做到胸有成竹。 当代码出了问题时, 也能更快的找出原因所在,因为我们可以把源码生成的class文件反编译出来, 看看它内部是如何实现的。 毕竟原理明白了, 源代码只是表象罢了。

此外, class文件不只是可以由Java代码生成。 其他很多基于JVM的语言, 也是生成标准的class文件, 然后被虚拟机执行。 如我最近正在学习的Scala语言, 它就是基于虚拟机的。  scalac编译器可以将scala代码编译成class文件。 这样的话, 了解class文件格式, 可以对学习其他基于JVM的语言起到很好的作用, 你会发现, 如果你对class文件和JVM足够了解的话, 学习这些语言会感到非常轻松。 class文件是JVM的一个接口, 不管你源文件中写的是什么代码, 不管是java还是scala, 只要通过一定的方式, 让你写的代码可以转化成格式正确的class文件, 那么JVM就能替你执行。 如果你足够牛, 完全可以自己创建一门语言, 实现一个针对这个语言的编译器, 将之编译成class, 那么虚拟机也能执行, 并且Scala,Groovy等语言的设计者已经在这么干了。  

--结束END--

本文标题: Java class文件格式总结_动力节点Java学院整理

本文链接: https://www.lsjlt.com/news/225474.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java class文件格式总结_动力节点Java学院整理
    我们都知道JVM能够识别的只有class格式的文件, 而源文件只是我们人能识别的, 不能被JVM识别。 那我们要在更深的层次上理解Java语言, 理解JVM, 只懂源文件是不够的, 因为虚拟机的很多的行为, 是在class文件中定义的, 而...
    99+
    2023-05-31
    java class 文件格式
  • 深入理解Java class文件格式_动力节点Java学院整理
    Class文件在Java体系结构中的位置和作用对于理解JVM和深入理解Java语言, 学习并了解class文件的格式都是必须要掌握的功课。 原因很简单, JVM不会理解我们写的Java源文件, 我们必须把Java源文件编译成class文件,...
    99+
    2023-05-31
    java class文件格式 ava
  • Java class文件格式之常量池_动力节点Java学院整理
    常量池中各数据项类型详解常量池中的数据项是通过索引来引用的, 常量池中的各个数据项之间也会相互引用。在这11中常量池数据项类型中, 有两种比较基础, 之所以说它们基础, 是因为这两种类型的数据项会被其他类型的数据项引用。 这两种数据类型就是...
    99+
    2023-05-31
    java class 文件格式
  • Java FileDescriptor总结_动力节点Java学院整理
    FileDescriptor 介绍FileDescriptor 是“文件描述符”。FileDescriptor 可以被用来表示开放文件、开放套接字等。以FileDescriptor表示文件来说:当FileDescriptor表示某文件时,我...
    99+
    2023-05-31
    java filedescriptor ava
  • Java class文件格式之属性详解_动力节点java学院整理
    Code属性code属性是方法的一个最重要的属性。 因为它里面存放的是方法的字节码指令, 除此之外还存放了和操作数栈,局部变量相关的信息。 所有不是抽象的方法, 都必须在method_info中的attributes中有一个Code属性。下...
    99+
    2023-05-31
    java class 文件格式
  • Java class文件格式之特殊字符串_动力节点Java学院整理
    class文件中的特殊字符串首先说明一下, 所谓的特殊字符串出现在class文件中的常量池中,本着循序渐进和减少跨度的原则, 首先把class文件中的特殊字符串做一个详细的介绍, 然后再回过头来继续讲解常量池。 现在我们将重点放在...
    99+
    2023-05-31
    java class 文件格式
  • Java class文件格式之数据类型(二)_动力节点Java学院整理
    常量池中各数据项类型详解(续)(8) CONSTANT_Class_info常量池中的一个CONSTANT_Class_info, 可以看做是CONSTANT_Class数据类型的一个实例。 他是对类或者接口的符号引用。 它描述的...
    99+
    2023-05-31
    java class 文件格式
  • Java多态(动力节点Java学院整理)
    什么是多态 面向对象的三大特性:封装、继承、多态。从一定角度来看,封装和继承几乎都是为多态而准备的。这是我们最后一个概念,也是最重要的知识点。 多态的定义:指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象...
    99+
    2023-05-31
    java 多态 ava
  • Java死锁_动力节点Java学院整理
    死锁是两个甚至多个线程被永久阻塞时的一种运行局面,这种局面的生成伴随着至少两个线程和两个或者多个资源。在这里我已写好一个简单的程序,它将会引起死锁方案然后我们就会明白如何分析它。Java死锁范例ThreadDeadlock.javapack...
    99+
    2023-05-31
    java 死锁 ava
  • Java适配器模式_动力节点Java学院整理
    一.概念适配器模式将一个接口转换成客户希望的另外一个接口。它使得原来由于接口不兼容而不能在一起工作的那些类可以一起工作。二.UML ...
    99+
    2023-05-31
    java 适配器模式 ava
  • Java Set简介_动力节点Java学院整理
    1. 概述           Java 中的Set和正好和数学上直观的集(set)的概念是相同的。Set最大的特性就是不允许在其中存放的元素是重复的...
    99+
    2023-05-31
    java set ava
  • Java Map简介_动力节点Java学院整理
    Map简介将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。此接口取代 Dictionary 类,后者完全是一个抽象类,而不是一个接口。 Map 接口提供三种collection 视图,允许以键集、值集或键-值映射关...
    99+
    2023-05-31
    java map ava
  • Java 线程池_动力节点Java学院整理
    线程池系统启动一个新线程的成本是比较高的,因为它涉及到与操作系统的交互。在这种情况下,使用线程池可以很好的提供性能,尤其是当程序中需要创建大量生存期很短暂的线程时,更应该考虑使用线程池。与数据库连接池类似的是,线程池在系统启动时即创建大量空...
    99+
    2023-05-31
    java 线程池 ava
  • Java链接redis_动力节点Java学院整理
    要在Java程序中使用使用操作Redis,需要确保有Redis的Java驱动程序和Java设置在机器上。现在,让我们来看看如何设置Redis的Java驱动程序。 需要下载jedis.jar。请一定要下载它的最新版本。 需要包括jedis...
    99+
    2023-05-31
    java redis 链接
  • Java内部类_动力节点Java学院整理
    内部类是指在一个外部类的内部再定义一个类。类名不需要和文件夹相同。内部类可以是静态static的,也可用public,default,protected和private修饰。(而外部顶级类即类名和文件名相同的只能使用public和defau...
    99+
    2023-05-31
    java 内部类 ava
  • 建造者模式_动力节点Java学院整理
    定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。类型:创建类模式类图:四个要素 产品类:一般是一个较为复杂的对象,也就是说创建对象的过程比较复杂,一般会有比较多的代码量。在本类图中,产品类是...
    99+
    2023-05-30
    建造者模式 ava
  • redis快照模式_动力节点Java学院整理
    我们知道redis是带有持久化这个能力了,那到底持久化成到哪里,持久化成啥样呢???这篇我们一起来寻求答案。 一、快照模式   或许在用Redis之初的时候,就听说过redis有两种持久化模式,第一种是SN...
    99+
    2022-06-04
    快照 节点 模式
  • redis简介_动力节点Java学院整理
    Redis是一个开源的,先进的 key-value 存储可用于构建高性能,可扩展的 Web 应用程序的解决方案。Redis官方网网站是:http://www.redis.io/,如下: Redis 有三个...
    99+
    2022-06-04
    节点 动力 简介
  • redis事务_动力节点Java学院整理
    我们都知道redis追求的是简单,快速,高效,在这种情况下也就拒绝了支持window平台,学sqlserver的时候,我们知道事务还算是个比较复杂的东西,所以这要是照搬到redis中去,理所当然redis就...
    99+
    2022-06-04
    节点 事务 动力
  • JDBC简介_动力节点Java学院整理
    前言:什么是JDBC维基百科的简介:  Java 数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。J...
    99+
    2023-05-31
    jdbc 简介 ava
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作