我们有一个基于java的重量级项目,需要一个交互式脚本解释器。经过大量的研究,我们最终得到了Jython,其中一个原因是客户团队已经拥有大量的python专业知识,而且用他们已经知道的语言给他们一个api更容易。
好吧,一开始这很好,但事实证明是一个问题 - 有普通的(即:非管理员)用户锁定的部署环境。这些普通用户无权在其计算机的本地驱动器上进行任何编写。此外,他们的$ Home(在Windows上)通常是在高延迟网络上(通常是100ms +),最重要的是,可写文件夹本身的大小通常低于10mb。是的,那是兆字节。
鉴于这些限制,看起来Jython可能不符合要求。我们需要能够在不访问低延迟磁盘缓存的情况下运行,即使这意味着速度很小。在通过Google和论坛进行搜索之后,Jython似乎没有办法实现这一目标。
有几个明显的解决方法:
所以这是我的请求 - 有没有人知道一个java脚本解释器,它具有交互模式,不一定需要磁盘缓存?它不一定需要使用python语法,如果有办法让其他人(即:javaLUA,Groovy等)这样做,我会对它开放。
答案 0 :(得分:2)
您可以设置
python.cachedir.skip=true
你必须检查你的进口,但是......
http://wiki.python.org/jython/PackageScanning
http://ghattus.com/2009/09/no-wlst-cachedir-with-python-cachedir-skip.html
答案 1 :(得分:1)
Groovy不像Jython那样使用缓存目录。 Groovy编译为实际的Java类文件(在内存中,而不是在使用脚本时在磁盘上)。我对Jython的理解是它缓存了Java包和类似的东西。 Groovy使用相同的包结构,不需要这样的缓存。
答案 2 :(得分:0)
我不知道缓存要求,抱歉。我甚至不知道解释性Java环境需要这样的东西。好的,我很容易在本地使用1 TB磁盘并且完全可以访问。
虽然我不能代表缓存问题,但我建议您尝试Clojure。它是一种相对较小的语言,具有出色的Java互操作性,如果它比其他语言更少地咀嚼这种神秘的缓存,我也不会感到惊讶。
最大的缺点是Clojure是一个Lisp衍生产品,与Java,Python以及客户可能知道的任何其他语言有很大不同。除非其中一些人在旁边开发emacs扩展名:)
答案 3 :(得分:0)
我无法肯定地告诉你,但我可以给你一些建议。
java有一个可插入的脚本框架,您可以在其中插入任何脚本语言 - 用户可以选择自己的语言。如果您还没有找到,我建议您搜索它。
由于框架是在一个地方实现的,我想知道它是否支持缓存......如果是这样,你应该能够拦截调用并实现自己的基于ram的缓存(因为所有源代码都应该可用)。
我也会研究BeanShell。就简单,松散的脚本语言而言,它非常好。它很轻巧,可能更容易修改。
最后,您可以联系各个团队并提供赞助重新路由磁盘访问的交换机。您正在使用该产品,支持团队应该是您更喜欢做的事情。