我有一个简单的java应用程序,它获取jmx连接url、对象名称和属性名称作为输入和输出属性值。该应用程序每分钟运行数百次,并且有严格的运行时间限制。最近出现了许多极端情况(将毫秒转换为秒、折叠列表等),重新编译和重新分发该应用程序变得乏味。 因此,我决定改用某种支持 JMX 的脚本语言。
我尝试过 groovy、jython 和 clojure,发现它们的初始化时间很长(groovy/clojure/jython 约为 0.9/1.2/3.5)。
有没有更快的初始化速度,或者有没有办法减少这些语言的初始化时间而不从java加载它们?
最佳答案
现在,jark似乎是一个不错的解决方案。
编写一个 Clojure 脚本,例如
(ns jarkserver)
(require '[clojure.tools.nrepl :as nrepl])
(defn -main
[& args]
(nrepl/start-server 9000)
(.join (Thread/currentThread)))
开始于:
lein run -m jarkserver
然后启动 REPL:
jark repl
或者运行你的 clojure 脚本:
jark <path_to_clojure_script>
或者只是内联执行一些 clojure 代码:
jark -e "(+ 1 1)"
编辑: 启动 Jark 服务器的更简单方法是:
jark -cp lib/*:lib/dev/*:* -p 9000 server start
关于optimization - 具有快速初始化功能的 JVM 脚本语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12483578/