【发布时间】:2011-09-03 21:08:10
【问题描述】:
我现在已经看到几个项目在实际配置依赖于仅在运行时可用的东西时结束。
配置 Java 程序的典型方法是根据某些特定于应用程序的规则读取一个或多个属性文件,然后根据它们的值采取行动。有时这会发生故障,您需要在配置中使用实际的程序逻辑,然后可以用标志指示并将代码添加到您的应用程序,然后处理该标志。
我想知道小型 Lisp 配置阅读器模块是否是更好的选择,其中要读取的文件不是属性文件,而是 Lisp 程序,然后评估该程序以创建代表配置的最终数据结构。然后,运行时库中的最小函数集将允许字符串操作,甚至可能调用 JVM。想想“根据当前主机名构造一个 URL”。
我不对带有花里胡哨的完整 Lisp 引擎感兴趣,而只是为此目的的一个小型库,即使没有包含 Lisp 引擎的大 jar,也可以将其封装在小程序中。 p>
那么这样的库存在吗?
- 体积小
- 只需要读取文件 + eval 以及从 Java 主程序读取结果数据结构的能力
- 一个小型 Lisp 运行时库
- 速度不太重要。
- 积极维护。
建议?
编辑 2012-01-20:我最初发现所有候选人都不受欢迎,但决定将其用作与 the 1998 jscheme 1.4 release 一起的 Maven 练习。项目https://github.com/ravn/jscheme-1998
Edit 2012-12-11: 结果发现,在 Scheme 中解释的程序和宿主 Java 程序之间的 集成 层比我最初认为的更重要,我需要在一个项目能够在运行时为类提供带有 JAX-WS 注释的类,我不能用 JScheme 做,但我可以用 Groovy 做。允许在库中使用代码 sn-ps 的小型配置库的想法仍然有效,但我最终需要更多才能使其有用。
【问题讨论】:
-
您是否想过将JavaScript 与JSON 结合使用?这会给你脚本和binding JSON 到 Java 类型会相对容易。 如果您不知道目标 JRE,请注意有 pitfalls。
-
@McDowell,我认为 JavaScript 在许多支持 JSR-233 的 JVM 中默认提供,但正如您所说,它不是普遍可用的,所以我需要随身携带。我相信一个小的 Lisp 评估器应该更小。
-
@McDowell 我的目标 JVM 已经包含了一个 JavaScript 引擎,所以这不再是问题了。然而,我现在有另一份工作:)