JVM规格说明(Java8)-第一章:简介

一点点历史

Java是一门通用的,支持并发且面相对象的编程语言。它的语法和 C、C++ 有些类似,但是它舍弃了 C/C++ 中许多复杂、难以理解且不安全的特性。最初,Java平台是为了解决那些面向网络用户的应用程序构建问题。它旨在支持多种主机架构,并允许软件组件的安全交付。为了满足这些需求,编译后的代码必须能通过网络传输,并能保证在任意的客户机上安全的运行。

随着万维网(World Wide Web)的普及,Java 的这些属性变得更加有趣。网络浏览器使成千上万的人能便捷的访问各种丰富多彩的媒体内容。无论你使用的是什么机器,什么操作系统,是快速网络还是慢速的调制解调器(slow modem),WWW能保证每个人获取到的信息是一样的。

网络爱好者很快发现HTML的格式支持的内容太有限了。HTML的扩展,例如表单,仅仅是强调了这些限制,当人们发现所有浏览器都无法同时包含用户想要的所有特性。扩展性变成了唯一的出路。

HotJava(一种浏览器)因为使用了Java平台,可以在HTML页面中嵌入可执行程序。程序和HTML页面一起下载到客户的浏览器中,再被浏览器解析之前,程序会仔细地检查环境,确保安全。就像 HTML页面一样,编译后的程序是网络,宿主机无关的。同一个程序,无论它是通过什么途径下载,也无论它是在什么样的机器上被加载运行,它们的行为总是一致的。

一个结合了Java平台的Web浏览器不再局限于一组功能。用户在浏览动态内容的网页时,Java平台可以确保他们的机器不会被破坏。开发者只需要把程序编译一次,就能在所有提供了Java运行环境的机器上执行。


Java 虚拟机(JVM)

JVM是Java平台的基础。它从技术角度上使Java程序能够跨硬件,跨操作系统执行。编译后的代码产物会很小,并且它能保证用户不被恶意程序所影响。

JVM是一个抽象的计算机器。就像一个真正的计算机一样,它有指令集并且可以在运行时操控不通的内存空间。在虚拟机上来实现一个编程语言是很常见的事;最有名的虚拟机可能就是 UCSD Pascal 的 P-Code 了。

JVM的第一款原型是由 Sun公司实现,emulated the Java Virtual Machine instruction set in software hosted by a handheld device that resembled a contemporary Personal Digital Assistant (PDA). Oracle当前的实现可以在手机,桌面电脑与服务器中模拟JVM,but the Java Virtual Machine does not assume any particular implementation technology, host hardware, or host operating system. It is not inherently interpreted, but can just as well be implemented by compiling its instruction set to that of a silicon CPU. It may also be implemented in microcode or directly in silicon.

JVM不关心Java语言的细节,它只关心一个特定的二进制格式,class 文件。一个 class 文件包含了JVM的指令(或者字节码),一个符号表和其它的一些辅助信息。

因为安全考虑,JVM对class文件的语法与结构有着严格的约束。但是,只要能被编译为一个有效的class文件,任何编程语言都可以在JVM上运行。由于JVM的通用与跨平台的特性,开发者可以基于JVM来实现自己的编程语言。

这里对JVM的所有说明与JAVA(SE8版本)平台兼容,并支持在Java语言规范(SE 8版本)中的编程语言。


文档结构

  • 第二章会对JVM架构做一个整体介绍
  • 第三章会为大家介绍由Java语言编写的代码如何汇编成JVM的指令集
  • 第四章定义了被编译后的类与接口 -- 即class 文件的格式--一种硬件与平台无关的二进制格式
  • 第五章定义了JVM如何启动,加载,链接和如何对类和接口进行初始化
  • 第六章定义了JVM的指令集,指令会以操作码助记符的字母顺序排序
  • 第七章会列出JVM操作码助记符的表格并以操作码的值来作为索引

在第二版的JVM规范第二章中,概述了Java编程语言,该语言支持JVM规范,但其本身并不是规范。在Java(SE8版本)的JVM规范中,读者可以参考Java(SE8版本)的语言规范,来学习如何书写Java代码。References of the form: (JLS §x.y) indicate where this is necessary.

在第二版JVM规范第八章中详细说明了JVM线程与共享主内存(shared main memory)交互的底层操作。而在JAVA(SE8版本)的JVM规范中,读者可以参考Java(SE8版本)语言规范的第十七章,了解有关线程和锁的信息。第17章会对 JSR133专家组制定的Java内存模型和线程规范进行阐述。


一点点约定

本规范引用了来自 JavaSE平台API的类和接口。在所有使用了(除了在例子中声明的那些),标记 N的地方,the intended reference is to the class or interface named N in the package java.lang. 除了java.lang以外,从其它包引用的类或者接口,会使用全限定名。

每当我们使用名为java的子包下的类或者接口的引用时,那么我们会默认其是由 bootstrap 类加载器来确定的。

在本规范中,某些特殊字体所代表的含义如下(见注1):

  • 固定宽度的字体用于JVM数据类型、Exception、errors、类文件结构、Prolog code和Java代码块。
  • 斜体代表 JVM 汇编语言中的操作码和操作数,as well as items in the Java Virtual Machine's run-time data areas.同时也用于介绍新的特性或者表示强调。

用来额外阐述本规范内容的非规范信息,会以较小的缩进文本给出。


如何联系我们

读者如发现本规范有技术上的错误或者含糊不清的地方,非常欢迎指出,邮件地址: jls-jvms-spec-comments@openjdk.java.net

如有关于 javac (Java语言指定的编译器) 如何生成和操作 class 文件的疑问,可发邮件至 compiler-dev@openjdk.java.net


译者注

  • 注1: 因为本文档是由Markdown编写的,所以关于字体格式及其代表的意义可能会有变动,暂时还没确定,这里翻译的是官网的设置。

原文地址

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342