我希望这不是SO的主题(我在SO和programmers.stackexchange之间犹豫不决)但据我所知,这是一个“实用,可回答的问题,编程专业独有的“所以它符合FAQ。
为了运行哪个版本的Clojure(JVM上的Clojure,这个问题不是关于ClojureScript),你需要哪个版本的JVM?
此处的页面:http://clojure.org/getting_started说明:
Clojure仅需要Java 1.5或更高版本
但情况总是如此吗?
那么像Leiningen这样的Clojure生态系统呢?
基本上我想知道我是否可以指望Clojure能够开发一个应该在系统上运行的桌面应用程序,包括OS X系统,它们永远不会获得Java 6或更新版本的Java(例如,在一些OS X版本上Apple声称没有JVM 6会看到它的亮点。
答案 0 :(得分: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类)。
由于Leiningen为您提供类似maven的依赖解析,如果您测试所有库和您选择的Clojure版本对Java 1.5并且它们有效,那么您可以坚持使用这组版本化依赖项,只要您想保留应用运行。此时您唯一的风险是非核心库的某些错误修复版本可能不再是Java 1.5兼容的。这种风险与您需要使用的非核心Clojure库的数量成正比。
答案 1 :(得分:3)
如果您对使用的库有选择性,那么定位Java 1.5肯定是可行的。
注意:我个人将我的所有应用程序/库编写为目标Java 1.6,因为我认为这是一个合理的最小值,并且绝大多数基于Java的系统都是1.6或更高。我愿意忍受一些被困在1.5的用户的潜在损失。此外,即使未来版本的Clojure放弃了1.5,我预计它将长期继续支持Java 1.6。
答案 2 :(得分:0)
值得注意的是,在Clojure 1.6中,他们将Java的版本提升到1.6:
Clojure 1.6 Release Notes 包括这张票: CLJ-1268: Require Java 1.6 as minimum for Clojure
所以," 否"是原始海报问题的答案,但是[Clojure只需要Java 1.5或更高版本]总是会出现这种情况吗?"