【问题标题】:JVM Gotchas, especially for ClojureJVM 陷阱,尤其是 Clojure
【发布时间】:2014-09-19 21:27:32
【问题描述】:

我记得我曾经在一家无法在 OpenJDK JVM 上运行他们的 JVM 软件的公司工作。他们不得不使用 Oracle JVM。 (完全披露:他们是用 groovy/grails 编写的。)

但是我查看了很多其他 JVM 应用程序,它们似乎在两个 JVM 上都可以正常工作。 OpenJDK JVM 似乎是一个可靠的实现。

作为 Clojure 爱好者,我希望能够为这两种 JVM 编写代码。

所以,具体来说:

  1. 有哪些常见的“陷阱”,如果您针对的是一个 JVM,那么在为不同的 JVM 编写代码时必须小心?
  2. 是否存在任何特定于语言的缺陷,尤其是在 clojure 方面?
  3. 在编写 clojure 应用程序时,针对两个 JVM 是否存在任何常见的陷阱?

【问题讨论】:

  • 虽然一个完全有效的问题可能会引发一些有意义的讨论,但我不确定它是否适合 SO
  • 同意@rmlan。试试 Clojure 邮件列表 groups.google.com/forum/#!forum/clojure 或 freenode.net 上的#clojure irc 频道
  • 我必须同意——这太宽泛了,不适合在这里,尽管这是一个有趣的话题。
  • 只要您使用公共 API 并且不生成字节码,一切都应该没问题。问题是,在许多情况下这还不够。因此,如果您转向非公开 API 并使用例如 Unsafe 或 sun.reflect.MagicAccessorImpl 之类的东西,您可能已经遇到了麻烦。不仅因为另一个 JVM 可能不提供它们,还因为实现可能不同。当谈到字节码时,我肯定知道 OpenJDK 和 OracleJDK 通常至少有一点不同,那就是格式错误的泛型。 Oracle 倾向于忽略它们,OpenJDK 倾向于抛出 NPE。

标签: clojure jvm


【解决方案1】:

我不知道 Clojure 的不同 JDK 之间存在任何重大问题。我们在多个 JDK 版本和提供程序上进行矩阵测试构建 - 有关当前列表,请参阅 http://build.clojure.org/job/clojure-test-matrix/

【讨论】:

  • 这个链接真的很有帮助!它并没有涵盖所有内容,但很高兴能够看到它在尝试。这个答案可能和其他答案一样好!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多