走进java
概述
优点
用户量大
一次编写,到处运行
- 程序员只需要用JDK提供的接口,不必关心硬件如何如何
安全的内存管理机制
- 看过C++那丑陋的指针和引用就能明白这点
热点代码检测和运行时编译及优化
- 越跑越快
各种库
java技术体系
组成
根据功能划分
java语言
各种硬件平台上的JVM
Class文件
第三方java类库
- 商业机构
- 开源社区
java API 类库
根据服务领域划分
Java Card
- java程序运行在小内存设备的平台
Java ME
含义
- micro edition
特点
- 对java API有所精简
- 加入了对移动终端的支持
曾用名
- J2ME
Java SE
含义
- standard edition
特点
- 支持面向桌面级应用的java平台
- 完整的java核心API
曾用名
- J2SE
Java EE
含义
- enterprise edition
特点
- 支持使用多层架构的企业应用
- 对Java SE API做了扩充
曾用名
- J2EE
JDK VS JRE
JDK
Java Development Kit
- 开发java程序
JRE
Java Runtime Environment
- 运行java程序
java发展史
James Gosling
Oak
JDK 1.0
Write Once,Run anywhere
JVM
Applet
- 可以包含在HTML里的一个小程序
AWT
- 类似swing、javafx这种吧,idk
JDK 1.1
JDBC
- 程序员用java访问数据库只需要关心JDBC提供的接口,实现类由具体的数据库驱动提供
JavaBeans
RMI
- Remote Method Invocation
Inner class
- 没用过,感觉不常用,好奇怪
Reflection
JDK 1.1发布了9个版本
JDK 1.2
java技术体系被拆分
J2SE
Java 2 Platform,Standard Edition
- 面向桌面级应用
J2EE
Java 2 Platform,Enterprise Edition
- 面向企业级开发
J2ME
- Java 2 Platform,Micro Edition
strictfp关键字
Collections类
HotSpot虚拟机发布
- 后来成了JDK的默认虚拟机
JDK 1.3
- 一些闻所未闻看不懂的新特性
JDK 1.4
走向成熟的版本
正则表达式
异常链
- 你抛我,我抛他,形成永动
NIO
日志类
XML解析器
.NET Framework发布
- 强势竞争
JDK 1.5
自动装箱
- 把基本类型转换为包装类型
泛型
动态注解
枚举
可变长参数
foreach
改进了JMM
- Java Memory Model
JDK 1.6
全新的命名方式
对虚拟机内部做了很多改进
- 锁与同步
- 垃圾收集
- 类加载
Sun被Oracle收购
展望Java的未来
模块化
混合语言
- 催生了许多新语言
- 许多老古董也有了jvm特供版
多核并行
- Fork/Join
丰富语法
- 比如函数式编程
64位虚拟机
- 现在可能已经过渡完成了,毕竟我看的是9年前出版的书,那时候java8还没发布呢
自己编译JDK
获取JDK原码
- OPENJDK之类的
构建编译环境
- 说出来你可能不信,JDK使用C++编译器编译的(部分),所以要选个IDE的话,VS是不错的选择
- 当然很多代码还是用java写的,所以还需要一个已经编译好的JDKhhh
OPEN JDK也不是100%开源的,有些依赖项是闭包的,得手动下载那些个依赖项才好JDK plug
开始编译
细节一大堆
- tlds
