Java JDK
Java JDK是什么 Oracle官网
The JDK is a development environment for building applications, applets, and components using the Java programming language.
The JDK includes tools useful for developing and testing programs written in the Java programming language and running on the Java platform.
翻译
JDK是使用Java编程语言构建应用程序,小程序和组件的开发环境。
JDK包括用于开发和测试以Java编程语言编写并在Java平台上运行的程序的工具。
Java JDK历史版本和特性
- 1996年 SUN JDK 1.0 Classic VM
- 纯解释运行,使用外挂进行JIT
- 1997年 JDK1.1 发布
- AWT、内部类、JDBC、RMI、反射
- 1998年 JDK1.2 Solaris Exact VM
- JIT 解释器混合
- Accurate Memory Management 精确内存管理,数据类型敏感
- 提升的GC性能
- Java 2J2SE J2EE J2ME
- Swing Collections
- 2000年 JDK 1.3 Hotspot (默认虚拟机)发布
- JavaSound
- 2002年 JDK 1.4 Classic VM退出历史舞台
- Assert
- 正则表达式
- NIO
- IPV6
- 日志API
- 加密类库
- 2004年发布 JDK1.5 即 JDK5 、J2SE 5 、Java 5
- 泛型
- 注解
- 装箱
- 枚举
- 可变长的参数
- Foreach循环
- 2006年 JDK1.6 JDK6
- 脚本语言支持
- Java编译器 API
- JDBC 4.0
- 2011年 JDK7发布
- 延误项目推出到JDK8
- G1
- 动态语言增强
- 64位系统中的压缩指针
- NIO 2.0
- switch语句块中允许以字符串作为分支条件
- 在创建泛型对象时应用类型推断
- 在一个语句块中捕获多种异常
- 支持动态语言
- 2014年 JDK8发布
- Lambda表达式
- 语法增强 Java类型注解
- Pipelines和Streams
- Date和Time API
- Default方法
- Type注解
- Nashhorn JavaScript引擎
- 并发计数器
- Parallel操作
- 移除PermGen Error
- TLS SNI
- 2017年9月 JDK9(General Availability)
- 模块化
- Jigsaw
- XXXX JDK10 (展望 )
引用Stephen Colebourne的话
希望Java 10来的能够比Java 9快,而且我希望它的更改能够少一些。在未来的版本中,不只是Java 10,能够有数据类的扩展,包括现在用于POJO / bean的用例,这对Java来说将是非常有用的开发。
JVM规范和Java规范
Java语言规范
- 语法
- 变量
- 类型
- 文法
JVM规范
- Class文件类型
- 运行时数据
- 帧栈
- 虚拟机的启动
- 虚拟机的指令集
Java语言的重点
标识符命名规则
Identifier: IdentifierChars but not a Keyword or BooleanLiteral or NullLiteral.
IdentifierChars: JavaLetter IdentifierChars JavaLetterOrDigit.
JavaLetter: Any Unicode character that is a Java letter (see below).
JavaLetterOrDigit: Any Unicode character that is a Java letter-or-digit (see below).
翻译
标识符:标识符字符,但不是关键字或布尔字面值或空字面值。
标识符字符串:Java字母标识符字符Java字母或数字。
Java字母:任何Unicode字符,均为Java字母(见下文)。
Java字母或数字:任何Unicode字符是Java字母或数字(见下文)。
问题:类名或方法名是否可以使用中文呢?
原始数据类型
下划线_是方便观察数字
int
1 12 0372 0xDada_Cafe 2017 0x00_FF_00_FF
long
5l 0523L 0x250000L 2_147_483_648L 0xC0B0L
float
3e1f 6.f .3f 0f 3.14f 6.022137e+23f
double
1e1 2. .3 0.0 3.14 1e-9d 1e137
byte
取值范围:-128~127
short
取值范围为-32768~32767
boolean
true false
char
a b A B
操作运算符
+= -= *= /= &= |= ^= %= <<= >>= >>>=
JVM规范重点
Class 文件格式转载JVM Class图文解析
returnAddres
堆
栈
方法区
参考书籍:
《java虚拟机规范》