重读《深入理解Java虚拟机》三、Java虚拟机执行的数据入口(类文件结构)
1、Java如何实现平台无关系
Java要实现平台无关系就需要在Java代码和本地机器之间引入一个中间层,实现Java代码和本地机器的解耦,而这个中间层就是字节码。字节码独立于本地机器,以实现代码的可移植性。Java代
码通过编译器编译成字节码,字节码又通过虚拟机编译为当前本地机器可识别的本地机器代码并执行。
2、如何表示类和接口信息(Class文件的结构)
虚拟机要做到语言无关性,就需要同一个字节码结构,实现字节码与特定语言的解耦。
(1)类和接口所具有信息
1)类和接口的名称、访问修饰符、包名(名称空间)即类和接口的完全限定名称
2)类和接口内声明的的变量、方法和属性
3)字段的信息有:字段的作用域、是否为静态、是否为常量、是否为volidate关键字修饰、字段的数据类型、字段的名称等
4)方法和属性的信息有:方法的名称,方法的访问修饰符,方法的返回类型,方法的参数,方法是否为静态方法等
Class文件要对应一个类或者接口,就一定是包含上述类和接口的所有信息的。
(2)Class文件的数据类型
无符号数:用来描述数字、索引引用、数量值、UTF-8字符串值
表:用于表示具有层次关系的复合结构的数据
(3)Class文件如何存储类和接口的信息
重读《深入理解Java虚拟机》三、Java虚拟机执行的数据入口(类文件结构)的更多相关文章
- Java虚拟机三 Java堆和栈
Java堆是和Java应用程序关系最为紧密的内存空间,几乎所有的对象都存放在堆中.并且堆是完全自动化管理的. 根据垃圾回收机制的不同,Java堆有可能有不同的结构.最为常见的一种就是将整个Java堆分 ...
- java基础(三)-----java的三大特性之多态
面向对象编程有三大特性:封装.继承.多态. 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据.对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法. 继承 ...
- Java进阶(三)Java安全通信:HTTPS与SSL
通过一个系统,接触到了Java安全机制,故作一小节,供朋友们参考学习. 1. HTTPS概念 1)简介 HTTPS(全称:Hypertext Transfer Protocol over Secure ...
- Effective Java 第三版——42.lambda表达式优于匿名类
Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...
- java学习(三) java 中 mongodb的各种操作
一. 常用查询: 1. 查询一条数据:(多用于保存时判断db中是否已有当前数据,这里 is 精确匹配,模糊匹配 使用 regex...) public PageUrl getByUrl(String ...
- 深入了解Java虚拟机(3)类文件结构
虚拟机执行子系统 一.类文件结构 1.魔数和class版本 1.magic-魔数:0xCAFEBABE:4字节 2.minor_version:次版本,丶之后的数字:2字节 3.major_versi ...
- java 多线程三
java 多线程一 java 多线程二 java 多线程三 java 多线程四 注意到 java 多线程一 中 MyThread2 运行结果出现0.-1,那是因为在操作共享数据时没有加锁导致. 加锁的 ...
- 【java基础】java中String的注意点
[java的内存模型] 一.Java内存模型 按照官方的说法:Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配. JVM主要管理两种类型内存:堆和非堆,堆内存(Hea ...
- Java SE之Java中堆内存和栈内存[转/摘]
[转/摘]1-3Java中堆内存和栈内存 注解:内存(Memory)即 内存储器,主存,其作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器(辅存)交换的数据. Java中把内存分为两种:栈 ...
随机推荐
- vue:过滤器
一.过滤器 过滤器是vue中的一个特性,作用是用于对文本进行格式化的作用. 注意:在vue 1.0中有内置的过滤器,在2.0中去掉了内置过滤器,只有自定义过滤器 二.使用位置 过滤器只能应用在两个地方 ...
- 【webssh】网页上的SSH终端
[webssh] ——记两天来比较痛苦的历程 广义上来说,webssh泛指一种技术可以在网页上实现一个SSH终端.从而无需Xshell之类的模拟终端工具进行SSH连接,将SSH这一比较低层的操作也从C ...
- 短信文本查找之 MATCH 与 LIKE
最近发现原生短信应用的搜索功能的搜索结果十分不准确,所以就开始追踪代码: 关于android searchview的使用这里就不描述了,简单说一下,android的searchVIew是支持autoc ...
- python一天一题(3)
#--coding=utf8-- from selenium import webdriver import time import logging import os.path ''' 搜索取搜索的 ...
- PHP最全笔记(一)(值得收藏,不时翻看一下)
PHP笔记来啦~绝对干货! 以下为我以前学PHP时做的笔记,时不时的也会添加一些基础知识点进去,有时还翻出来查查. //语法错误(syntax error)在语法分析阶段,源代码并未被执行,故不会有任 ...
- 创建sequence和触发器出现权限不足
解决方式: 已sysdba登陆后,进行授权 grant create any sequence to [用户]创建sequence权限不足解决方法 grant create trigger to [用 ...
- 转:Python语言编程学习资料(电子书+视频教程)下载汇总
开发工具: Python语言集成开发环境 Wingware WingIDE Professional v3.2.12 Python语言集成开发环境 Wingware WingIDE Professio ...
- Sysfs文件系统接口调试
首先需要初始化操作: s32 gtp_sysfs_init(void) { s32 ret ; debug_kobj = kobject_create_and_add("gtp", ...
- git合并分支上指定的commit
merge 能够胜任平常大部分的合并需求.但也会遇到某些特殊的情况,例如正在开发一个新的功能,线上说有一个紧急的bug要修复.bug修好了但并不像把仍在开发的新功能代码也提交到线上去.这时候也许想要一 ...
- java保存动态代理生成的类的class文件
启动时加: -Dsun.misc.ProxyGenerator.saveGeneratedFiles=true