OpenJDK提案将提供Java类文件API

36,540

前言

根据 Java 社区的一项提议,Java 将获得一个用于处理 Java 类文件的API

目的

Classfile API提案的草案显示,该提案旨在提供一个用于解析、生成和转换Java类文件的API,最初将作为 JDKASM的内部替代品,之后再作为公共API开放。根据计划,ASM最终将被完全从JDK中删除。

详细内容

Classfile API提案内容指出:类文件生成、解析和检测在Java生态系统中无处不在;许多工具和库需要能够处理类文件,并且框架通常会执行on-the-fly bytecode instrumentationtransformationgenerationJDK应该为读取、写入和转换Java类文件提供准确、完整、最新、高性能的API

API的设计目标和原则是让所有类文件实体(例如方法和字段)由不可变对象表示,由用户驱动的导航也是一个目标。

激发对Java类文件库的调用的因素包括:

  • JDK 整合。 JDK本身在处理类文件方面很重要。JDK使用ASM存在固有的延迟。
  • 框架和运行 JDK 之间的版本偏差。 处理类文件的应用程序和框架通常捆绑一个类文件库,例如ASM。但是由于新的类文件功能可以出现在任何JDK版本中,应用程序和框架更频繁地遇到比它们捆绑的库更新的类文件,从而导致运行时错误。开发人员需要一个与运行JDK保持同步的类文件库。
  • JVM 进化。Java早期相比,JVM和类文件格式现在的发展速度要快得多。虽然有些演变很简单,但有些演变更复杂,例如 Project Valhalla 带来了新的字节码、字段描述符和验证规则。在某些时候,改进现有库以支持这些新功能可能会代价很大或很复杂。
  • 语言改进。 自从编写ASM以来,该语言已经有了很大的改进。

计划要求最初将ASM替换为JDK的运行时依赖项,而不会造成不可接受的性能损失。另一个目标是替换编译器和 JDK 工具使用的内部类读取器库。最终,一系列框架和应用程序应该能够使用该库作为 ASM、cglib和其他字节码库的替代品。

更多信息,请参考:www.infoworld.com/article/366…