Clojure只依赖于Java 1.5?

时间:2013-03-10 11:55:27

标签: macos clojure jvm version

我希望这不是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会看到它的亮点。

3 个答案:

答案 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肯定是可行的

  • 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。

答案 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或更高版本]总是会出现这种情况吗?"