根据Java社区正在进行的一项提议,Java将获得一个处理Java类文件的API。类文件 API 提案草案要求提供用于解析、生成和转换 Java 类文件的 API。这个类文件库最初将作为 ASM Java 字节码操作框架的内部替代品。最终,ASM 将从 JDK 中完全删除。
类文件 API提议指出,类文件生成、解析和插装在Java生态系统中无处不在,有许多工具和库需要处理类文件。框架经常执行动态字节码插装。该提案指出,JDK应该为读取、写入和转换Java类文件提供准确、完整、最新、高性能的API。
API的设计目标和原则包括用不可变对象表示所有的类文件实体,比如方法和字段。用户驱动的导航也是一个目标。激发对Java类文件库需求的因素包括:
l JDK 整合,JDK 本身在处理类文件方面很重要。JDK 使用 ASM 存在固有的延迟。
l 框架和运行JDK之间的版本偏差。处理类文件的应用程序和框架通常捆绑了一个类文件库,比如ASM。但是,因为新的类文件特性可以出现在JDK的任何版本中,所以应用程序和框架会更频繁地遇到比它们所捆绑的库更新的类文件,从而导致运行时错误,或者导致框架试图解析未来的类文件格式。开发人员想要一个运行JDK时保持最新的类文件库。
l JVM 和类文件格式现在比以前发展得更快。虽然有些演变很简单,但有些演变更复杂,例如 Project Valhalla 带来了新的字节码、字段描述符和验证规则。
l 自从ASM问世以来,这门语言已经有了很大的改进。
计划要求最初将 ASM 替换为 JDK 的运行时依赖项,而不会造成不可接受的性能损失。另一个目标是替换编译器和 JDK 工具使用的内部类读取器库。最终,一系列框架和应用程序应该能够使用该库作为 ASM、cglib 和其他字节码库的替代品。
发表评论 取消回复