6

我希望这对 SO 来说不是题外话(我在 SO 和programmers.stackexchange 之间犹豫不决),但据我所知,这是一个“编程行业独有的实用、可回答的问题”,因此它符合常见问题解答。

您需要哪个版本的 JVM 才能运行哪个版本的 Clojure(Clojure on the JVM,这个问题与 ClojureScript 无关)?

此处的页面:http: //clojure.org/getting_started指出:

Clojure 只需要 Java 1.5 或更高版本

但这种情况总是会发生吗?

那么像 Leiningen 这样的 Clojure 生态系统呢?

基本上我想知道我是否可以指望 Clojure 能够开发一个桌面应用程序,该应用程序应该在系统上运行,包括 OS X 系统,这些系统永远不会获得 Java 6 或更新的 Java 版本(例如一些 OS X 版本 Apple 表示没有 JVM 6 会出现)。

4

3 回答 3

5

我不在 Clojure/核心团队,所以我没有内部信息,但这是我处理这种情况的方法。

使用最新版本的 Clojure(撰写本文时为 1.5)并针对 Java 1.5 进行测试,以了解您需要做的事情以及您需要使用并坚持使用的任何 Clojure 库。如果 Clojure 1.5 与 Java 1.5 兼容,那么它将始终如此,因为该版本是不可变的。

不会假设 1.5 之后的所有 Clojure 版本都将与 Java 1.5 兼容,而且您绝对不能假设 Clojure 库会兼容。例如,我刚刚发布了一个需要 Java 1.7 的 Clojure 库(因为它使用了 Java 1.7 中引入的 java.util.concurrent 类)。

如果您针对 Java 1.5 测试所有库和您选择的 Clojure 版本并且它们可以工作,Leiningen 会为您提供类似 maven 的依赖解决方案,那么只要您想保持应用程序运行,您就可以坚持使用该组版本化依赖项。那时您唯一的风险是非核心库的某些错误修复版本可能不再与 Java 1.5 兼容。这种风险与您需要使用多少非核心 Clojure 库成正比。

于 2013-03-10T16:34:32.793 回答
3

如果您对使用的库有选择性,那么以 Java 1.5 为目标当然是可行的。

  • Clojure 对其 Java 版本要求非常保守——因此仅依赖于 1.5 版本。
  • 许多库仅依赖于 Clojure 本身,因此在 1.5 JVM 上运行得非常愉快
  • 一些库需要 >1.5,这些往往是更高级的库,需要与特定 Java 功能(例如更新的并发代码)进行互操作。

注意:我个人编写的所有应用程序/库都针对 Java 1.6,因为我认为这是一个合理的最小值,并且绝大多数基于 Java 的系统都在 1.6 或更高版本。我愿意忍受一些卡在 1.5 上的用户的潜在损失。此外,即使 Clojure 的未来版本确实放弃了 1.5,我预计它将在很长一段时间内继续支持 Java 1.6。

于 2013-03-11T05:05:04.107 回答
0

值得注意的是,在 Clojure 1.6 中,他们将 Java 的版本提升到了 1.6:

Clojure 1.6 发行说明 包括此票证: CLJ-1268 :Clojure 至少需要 Java 1.6

因此,“”是对原始发帖人问题“但是 [Clojure 仅需要 Java 1.5 或更高版本] 总是如此吗?”的答案?

于 2015-10-01T04:49:04.117 回答