作品简介

全书逻辑上分为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 小结
展开全部