Jarviz为JAR文件提供检查和洞察

Jarviz:Java JAR文件检查与洞察工具

Jarviz 是一个新的Java JAR文件检查和洞察工具,旨在帮助开发者识别JAR文件中的不同字节码版本,并查询其属性、服务等信息。该工具通过提供用户友好的命令行界面(CLI),简化了Java应用程序及其依赖库的版本管理问题。

背景与需求

Maven Central上有517,231个独特的工件,而OpenJDK社区每六个月发布一次新的Java版本,每个长期支持(LTS)版本至少支持两年。Java应用程序可能依赖多个库,而这些库又可能依赖其他库,导致管理这些依赖关系变得复杂。Jarviz通过检查JAR文件及其依赖关系,帮助开发者更好地管理这些复杂性。

主要功能

Jarviz提供了以下功能:

  1. 检查特定字节码版本:通过命令行查看JAR文件中使用特定字节码版本的类。例如,检查Java 11的字节码版本53:

    $ jarviz bytecode show --gav com.fasterxml.jackson.core:jackson-core:2.14.1 --bytecode-version 53 --details
  2. 查看所有字节码版本:列出JAR文件中所有字节码版本:

    $ jarviz bytecode show --gav com.fasterxml.jackson.core:jackson-core:2.14.1

项目背景与灵感

Jarviz的创建者Andres Almiray在InfoQ采访中提到,项目的灵感来源于他在编写CLI工具和库时遇到的二进制兼容性问题。例如,Maven插件可能将字节码基线设置为Java 8(字节码52),这意味着其依赖项不能超过这个版本。Jarviz通过检查JAR文件,确保字节码版本符合预期。

Java社区的需求

Almiray认为Java社区需要更多类似Jarviz的工具。他希望通过GraalVM Native Image等技术,能够创建更多的命令行工具,简化JVM生态系统的开发。此外,使用jlink打包这些工具也是一个可行的选择。

未来计划

Jarviz的未来计划包括:

  1. 支持多资源JAR和Java模块:特别是针对Java 17及以上版本的多资源JAR和模块功能。
  2. 增强报告格式:目前报告以纯文本格式输出,未来可能支持JSON、XML、YAML、Markdown表格等格式。
  3. 更多执行选项:除了现有的交付方式(如通用ZIP/TAR文件、单JAR文件、包含Java运行时的独立包),Jarviz还计划提供GraalVM Native Image生成的本地可执行文件。

高级功能

Jarviz还提供了高级功能,例如:

  • 检查或查询MANIFEST.MF文件中的属性。
  • 查看JAR文件依赖的服务,而无需解压文件。

总结

Jarviz是一个强大的工具,帮助开发者管理Java应用程序的依赖关系和字节码版本。通过其用户友好的CLI和丰富的功能,Jarviz为Java开发者提供了更高效的方式来处理复杂的依赖问题。未来,Jarviz还将继续扩展其功能,支持更多的Java版本和报告格式,进一步简化Java开发流程。

阅读 47
0 条评论