java language specification Java SE 8 Edition 中文版(第一章)

这几天在看Java虚拟机规范,发现java编程语言规范目前还没有中文版,试着翻译一下,如果错误 欢迎批评指正。我会持续更新(beijin9152@163.com 转载请注明出处。谢谢)。

第一章 概述

java 是一种通用,并发,基于类且面向对象的编程语言。它设计的力求简单使得编程者可以清楚编写。java语言借鉴了c和c++但也有很大的区别,省略了cc++中一些复杂的概念并借鉴了其他语言的一些想法。java是为生产而设计的语言而不是为了研究,C. A. R. Hoare在他设计语言论文中建议避免使用新的、未经验证的特性出现在java语言中。

java语言是静态类型的健壮的语言,本规范严格区分编译期错误和运行期错误,编译期一般发生在把源代码编译为机器码的过程中,运行期包括加载和链接类文件到程序动态优化及实际执行期间。

java编程语言属于高级编程语言,因此一些机器码错做是不允许的。包括动态的内存管理、垃圾回收避免内存创建引发的安全问题(像c中free或c++中的delete)。高性能的垃圾回收机制可以支撑一些系统应用而不需要停止程序。程序中不包括任何非安全的构造,如数组操作检查,因为这种不安全的构造可能会引发一些不可预知的错误。

java源码一般编译为指令集和二进制文件。具体参考《java 虚拟机规范 javaSE 第八版》

1.1 规范组织结构

第二章 描述了语法及java语言语法中的符号等。

第三章 描述了java语言基于c c++的语法结构。java是基于Unicode编码的。只能在支持ASC||码的机器上编写Unicode字符。

第四章 描述了类型,值,变量。类型分为基本类型和引用类型。

基本类型在所有的机器和实现中都一致,包括2的补码,单精度双精度 IEEE 754标准浮点数,boolean 类型,Unicode的char类型,基本类型的值不共享状态。

引用类型包括类类型、接口类型和数组类型。引用类型是通过类或者数组动态创建实现的。可以有多个引用指向一个对象,所有对象(包括数组)支持Object类的方法。因为所有类继承自Object。预定义的String类支持Unicode字符串。有用于把基本类型值封装为对象的类。通常包装和解包装是编译器自动执行的(包装又称装箱,解包又称为拆箱)。类和接口可以声明为泛型的,也就是说他们可以作为其他引用类型的参数,之后就可以通过这种特定类型进行调用。

变量是类型化的存储位置,基本类型的变量存储的是基本类型的值。类类型可以存储空引用或者指向这个类或者该类的子类。接口类型可以存储空引用或者实现该接口的实例。数组类型可以存储空引用或者任何指向实例或数组的引用。

……

1.2 示例程序

给出的示例程序大多数都是像下面代码一样是可执行的

class Test {publicstaticvoidmain(String[] args) {for(inti =0; i < args.length; i++)        System.out.print(i ==0? args[i] :" "+ args[i]);        System.out.println();        }

在安装了OracleJDK的机器上,存储在Test.java的类可以使用下面的命令来编译和运行

javac Test.java

JavaTest Hello, world.

输出结果为:

Hello, world

1.3 约定

本规范中所提到的类和接口来自java API。即使我们使用N来代替类或接口,也是来自包java.lang 。

非标准的信息 说明规范的信息用小号缩进排版

如:

这是非标准信息,提供常识 原理 建议 示例 等。

java语言中的类型一般依赖于符号替换,如[F1:=T1,…,Fn:=Tn] Fi代表Ti,1<=i<=n.

1.4 预定义类与接口

如前文所述,本规范经常引用Java SE中的一些api类,特别是和java密切相关的一些类包括Object,Class,ClassLoader,String,Thread及在java.lang.reflect包中的类和接口等。本规范约束这些类和接口,但没有提供完整的使用说明,读者最好参考java se的API文档。

因此,本规范并没有提及任何反射相关的内容。许多语言结构有类似的核心反射API(java.lang.reflect)和语言模型API(javax.lang.model)。但这里并不讨论这些。如我们说到创建对象的方法时一般不包括通过反射创建的对象,即使本规范未提到读者也应该明白这些机制。

1.5 反馈

本规范中如果有技术上的错误或者描述不清楚的欢迎读者发送邮件到 jls-jvms-spec-comments@openjdk.java.NET

有关java javac的编译行为的问题,特别是本规范中它的一致性等问题可以发送到:compiler-dev@openjdk.java.Net

1.6 参考

(这部分就不翻译了)

[1]: Apple Computer. Dylan Reference Manual. Apple Computer Inc., Cupertino, California. September29, 1995.

[2]: Bobrow, Daniel G., Linda G. DeMichiel, Richard P. Gabriel, Sonya E. Keene, Gregor Kiczales, and David A. Moon. Common Lisp Object System Specification, X3J13 Document

88-002R, June 1988; appears as Chapter 28 of Steele, Guy. Common Lisp: The Language, 2nd ed. Digital Press, 1990, ISBN 1-55558-041-6, 770-864.

[3]: Ellis, Margaret A., and Bjarne Stroustrup. The Annotated C++ Reference Manual. Addison-

Wesley, Reading, Massachusetts, 1990, reprinted with corrections October 1992, ISBN0-201-514591.

[4]: Goldberg, Adele and Robson, David. Smalltalk-80: The Language. Addison-Wesley, Reading,

Massachusetts, 1989, ISBN 0-201-13688-0.

[5]: Harbison, Samuel. Modula-3. Prentice Hall, Englewood Cliffs, New Jersey, 1992, ISBN0-13-596396.

[6]: Hoare, C. A. R. Hints on Programming Language Design. Stanford University Computer

Science Department Technical Report No. CS-73-403, December 1973. Reprinted in

SIGACT/SIGPLAN Symposium on Principles of Programming Languages. Association

for Computing Machinery, New York, October 1973.

[7]: IEEE Standard for Binary Floating-Point Arithmetic. ANSI/IEEE Std. 754-1985. Available

from Global Engineering Documents, 15 Inverness Way East, Englewood, Colorado

80112-5704 USA; 800-854-7179.

[8]: Kernighan, Brian W., and Dennis M. Ritchie. The C Programming Language, 2nd ed. Prentice

Hall, Englewood Cliffs, New Jersey, 1988, ISBN 0-13-110362-8.

[9]: Madsen, Ole Lehrmann, Birger Møller-Pedersen, and Kristen Nygaard. Object-Oriented

Programming in the Beta Programming Language. Addison-Wesley, Reading,

Massachusetts, 1993, ISBN 0-201-62430-3.

[10]: Mitchell, James G., William Maybury, and Richard Sweet. The Mesa Programming Language,

Version 5.0. Xerox PARC, Palo Alto, California, CSL 79-3, April 1979.

[11]: Stroustrup, Bjarne. The C++ Progamming Language, 2nd ed. Addison-Wesley, Reading,

Massachusetts, 1991, reprinted with corrections January 1994, ISBN 0-201-53992-6.

[12]: Unicode Consortium, The. The Unicode Standard, Version 6.2.0. Mountain View, California,

2012, ISBN 978-1-936213-07-8.

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

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,572评论 18 399
  • 小编费力收集:给你想要的面试集合 1.C++或Java中的异常处理机制的简单原理和应用。 当JAVA程序违反了JA...
    八爷君阅读 4,573评论 1 114
  • 1、面向对象的特征有哪些方面 1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标...
    michaelgong阅读 809评论 0 1
  • 管理最怕的是被平庸的员工绑架! 而优秀的员工主动流失! 好的管理,不要害怕员工离开; 负面的员工不换掉,弊大于利;...
    故事学者阅读 1,262评论 0 0
  • 谁在那吞吐着黑暗 莫名的感觉到心伤 一个人躲在角落里 惊魂未定的彷徨 我不想声张,也不想反抗 可我自己也阻止不了这...
    爱唱歌的猫阅读 339评论 0 0