Java回溯编译器
frgaal 是一个面向 Java 的 retrofit compiler,目标是把较新的 Java 语言特性编译成可在旧运行时运行的 class 文件。正文示例展示了在源码中使用 var、文本块、instanceof 模式匹配、switch expression、record 等现代语法,并将目标设置为 Java 8 运行时。这类工具的核心价值在于:不必全面升级生产 JVM,也能在源码层面获得较新的语言表达能力。
功能上,frgaal 在 target 8 或更高时支持 Java 8 语言特性,并额外支持 Java 10 到 Java 21 的多项语法,包括 var、switch expressions、text blocks、record classes、sealed classes、pattern matching for switch、record patterns、unnamed local variables and patterns 等。它可通过 Maven、Gradle 和命令行接入:Maven 侧使用 maven-compiler-plugin 并指定 compilerId 为 frgaal;Gradle 侧使用 org.frgaal.compiler 插件;命令行则通过 java -jar compiler.jar 调用,主入口为 org.frgaal.Main。依赖可从 Maven Central 获取,降低了安装门槛。
正文未出现商业定价或付费计划。项目许可证为 GPLv2+CPE,属于开源工具。自托管方面,frgaal 可在本地以 jar 方式运行,也可执行 build.sh 从源码构建,产物位于 dist/compiler-*.jar。它并非 SaaS 产品,因此不存在典型的云端账号、调用量或席位收费模型。
优点是定位明确:让旧 JVM 项目使用现代 Java 语法,并使编译器版本不再强依赖本机 JDK 的 javac,有助于可重复构建。对 records、sealed classes 等需要运行时支持的能力,它还会生成符合 Multi-Release JAR 结构的多版本 class 文件。限制也需要重视:module-info.java 不能以 target 8 编译;sealed classes 只有在 Java 17 或更新运行时才会强制执行;record classes 在 target 16 以下无法获得完整标准库支持,部分序列化库可能无法识别为 record。
frgaal 适合维护 Java 8/旧 JVM 兼容性的库作者、企业遗留系统团队,以及希望在不升级运行时的前提下使用新语法的 Java 开发者。不太适合需要完整 Java 新平台 API 与运行时语义的项目。正文未提供中国网络访问、镜像或支付信息;作为开源 jar 与 Maven/Gradle 依赖,实际访问主要取决于 frgaal.org、Maven Central、Gradle Plugin Portal 等网络可达性,本文按未知处理。可替代方案包括 javac、Eclipse Compiler for Java、ECJ、Retrolambda、Jabel 等。
本测评基于公开资料整理,不构成购买建议,请以 frgaal.org 官网实际信息为准。
开源Java工具,可在旧环境用新语法。
评分明细(分布与用户短评)接入中。当前展示 TG4G 综合评分,数据源自公开测评与用户反馈。