
GraalVM与Java静态编译:原理与应用
¥53.40
作品简介
全书逻辑上分为3篇。
1.第1篇首先概要介绍Java编译器的演进过程,然后介绍Java静态编译的基本原理、总体能力和发展前景
2.第2篇详细介绍GraalVM如何实现Java的静态编译,着重介绍是如何支持现有Java特性。
3.第3篇主要关注GraalVM的实践应用。静态编译目前还未能达到开箱即用的状态,这一部分会介绍如何将传统Java应用编译为二进制可执行文件或静态库文件。
通过阅读本书,读者可以了解和掌握目前新的Java静态编译技术的原理、特性和优缺点,能够判断评估自己的业务是否适用于静态编译、是否值得投入资源对现有业务进行静态化改造。
林子熠,博士,阿里巴巴集团技术专家,曾任华为技术有限公司高级软件开发工程师。
专注于Java静态编译方向,主要负责Java静态编译技术在阿里巴巴生态中的应用,并以落地实践中发现的问题为切入点,向GraalVM社区贡献了多项重要特性,是GraalVM社区建设的积极参与者;曾作为核心人员,负责将华为方舟编译器前端的Java字节码和Art Dex字节码转换为方舟中间语言的开发工作;曾受邀作为上海JUG2019报告嘉宾和北京QCon2020报告嘉宾,介绍GraalVM静态编译技术;曾在编译器领域国际顶级学术会议CGO2021的Graal专项论坛中报告对Java序列化特性的静态编译支持实现。
作品目录
推荐语
作者简介
序
前言
第一部分 从解释执行到静态编译:Java的编译发展之路
第1章 Java静态编译技术的诞生
1.1 Java程序的运行生命周期
1.2 冷启动问题
1.3 初识Java静态编译技术
1.4 小结
第2章 Java静态编译的业界实现
2.1 Oracle GraalVM
2.2 华为方舟编译器
2.3 小结
第3章 GraalVM整体结构
3.1 子项目与组件
3.2 GraalVM编译系统工具mx
3.3 在IDE中打开GraalVM
3.4 小结
第4章 从Java程序到本地代码:静态编译应用流程
4.1 获取GraalVM JDK
4.2 从源码编译
4.3 获取依赖库
4.4 预执行目标应用程序
4.5 静态编译目标应用程序
4.6 静态编译Java程序实例
4.7 小结
第二部分 静态编译实现原理
第5章 Substrate VM静态编译框架
5.1 静态编译启动器
5.2 静态编译实现流程
5.3 Substrate VM运行时支持
5.4 小结
第6章 Feature机制
6.1 Feature机制概览
6.2 Feature管理
6.3 Feature影响编译流程
6.4 GraalFeature实现静态编译优化
6.5 Feature接口函数
6.6 小结
第7章 编译时替换机制
7.1 替换机制在Substrate VM中的应用
7.2 基于注解的替换
7.3 实现原理
7.4 小结
第8章 类提前初始化优化
8.1 Java中的类初始化
8.2 编译时的类初始化
8.3 优化实现原理
8.4 手动设置类初始化时机
8.5 小结
第9章 反射的实现与优化
9.1 反射在传统Java中的实现
9.2 基于配置的支持
9.3 Substrate VM的反射实现
9.4 其他类似动态特性的支持
9.5 小结
第10章 序列化
10.1 序列化特性的JDK原生实现
10.2 静态编译的序列化实现
10.3 局限性
10.4 小结
第11章 跨语言编程:用Java语言编写共享库
11.1 样例项目cinterfacetutorial
11.2 共享库的Java实现源码解析
11.3 静态编译JNI共享库
11.4 小结
第12章 CLibrary机制
12.1 isolate
12.2 WordBase接口系统
12.3 注解系统
12.4 正确释放内存
12.5 小结
第三部分 静态编译实战
第13章 静态编译Serverless应用到阿里云函数计算平台
13.1 阿里云函数计算平台
13.2 静态编译基于Micronaut的Spring-Boot示例项目
13.3 部署到阿里云
13.4 性能比较
13.5 小结
第14章 native-image-agent的实现
14.1 native-image-agent与JVMTI
14.2 实现静态编译的JVMTI Agent
14.3 native-image-agent的可用选项
14.4 小结
第15章 调试
15.1 编译debug版本的native image
15.2 使用GDB调试native image
15.3 小结