有没有一种Java脚本语言可以在没有缓存的情况下工作?杰顿?棒极了?等

有没有一种Java脚本语言可以在没有缓存的情况下工作?杰顿?棒极了?等,java,scripting,groovy,jython,Java,Scripting,Groovy,Jython,我们有一个现有的基于java的重量级项目,需要一个交互式脚本解释器。经过大量的研究之后,我们最终找到了Jython,其中一个原因是客户团队已经拥有大量python专业知识,并且更容易向他们提供一种接近他们已知语言的api。 好的,一开始这很好,但后来发现了一个问题——有一些部署环境是为普通(即:非管理员)用户锁定的。这些普通用户无权在其机器的本地驱动器上的任何位置进行写入。此外,他们的$Home(在windows上)通常通过高延迟网络(通常为100ms+),最重要的是,可写文件夹本身的大小通

我们有一个现有的基于java的重量级项目,需要一个交互式脚本解释器。经过大量的研究之后,我们最终找到了Jython,其中一个原因是客户团队已经拥有大量python专业知识,并且更容易向他们提供一种接近他们已知语言的api。

好的,一开始这很好,但后来发现了一个问题——有一些部署环境是为普通(即:非管理员)用户锁定的。这些普通用户无权在其机器的本地驱动器上的任何位置进行写入。此外,他们的$Home(在windows上)通常通过高延迟网络(通常为100ms+),最重要的是,可写文件夹本身的大小通常低于10mb。是的,那是兆字节。

考虑到这些限制,看来Jython可能不符合要求。我们需要能够在不访问低延迟磁盘缓存的情况下运行,即使这意味着速度损失很小。经过谷歌和论坛的搜索,Jython似乎没有办法做到这一点。

有两个明显的解决办法:

  • 让客户打开他们的安全保护。不幸的是,这是一个庞大的官僚机构,试图证明更改企业范围的安全策略以为一个产品提供脚本并不是一个真正的选择。
  • 设置一个ramdisk并将脚本解释器的缓存放在那里。在windows上使用这种方法的问题是,它会对操作系统造成一定程度的干扰,无论我们的应用程序是否正在运行,这种干扰都会存在。(至少我了解这样做的技巧)
因此,我的请求是——有人知道java脚本解释器具有交互模式,并且不一定需要磁盘缓存吗?它不一定需要使用python语法,如果有办法让其他人(如javaLUA、Groovy等)这样做,我愿意接受。
Groovy使用缓存目录的方式与Jython不同。Groovy编译到实际的Java类文件(在内存中,而不是在使用脚本时在磁盘上)。我对Jython的理解是它缓存Java包之类的东西。Groovy使用相同的包结构,不需要这样的缓存。

对不起,我不知道缓存要求。我甚至不知道解释性Java环境需要这样的东西。好的,这对我来说很容易,因为我有一个1 TB的本地磁盘,并且完全可以访问

虽然我不能谈论缓存问题,但我建议尝试一下。它是一种相对较小的语言,具有出色的Java互操作性,如果它比其他语言更少地占用这种神秘的缓存,我也不会感到惊讶


最大的缺点是Clojure是一种Lisp派生语言,与Java、Python以及您的客户可能知道的任何其他语言都有很大的不同。除非他们中的一些人同时开发emacs扩展:)

我不能肯定地告诉你,但我可以给你一些建议

有一个可插入的java脚本框架,您可以插入任何脚本语言——用户可以选择自己的语言。如果你还没有找到这个,我建议你搜索一下

由于框架是在一个地方实现的,我想知道它是否支持缓存。。。如果是这样,您应该能够拦截调用并实现自己的基于ram的缓存(因为所有源代码都应该可用)

我也会调查BeanShell。就一种简单、松散的脚本语言而言,它相当不错。它是轻量级的,可能更容易修改

最后,您可能会联系不同的团队,并提议赞助一个重新路由磁盘访问的交换机。您正在使用产品,支持团队应该是您更愿意做的事情。

您可以设置

python.cachedir.skip=true
不过,您必须检查您的导入


谢谢你的建议!当这个项目的脚本引擎评估进行时,我签入了clojure。我觉得这很有趣,但我也发现,在生产环境中,提到Lisp似乎会引起大多数人相当消极的反应。获得认可变得更加困难。如果Clojure的网站上没有立即提到这一点,我们可能会愚弄人们一段时间检查支持JSR223的代码是一个好主意。对Sun代码的粗略检查似乎允许脚本引擎自由地做任何他们想做的事情,只要它们符合正确的接口。因此,我很难找到任何提到缓存处理的内容。他们可能会把它留给实现,尽管我可能弄错了。在独立的jar安装中,这总是设置为true(只是在完整的jar安装中没有)。这种方法的缺点是丢失了包扫描功能。在处理从文件加载的脚本时,这不是问题,但在交互式提示符下运行时会有点不方便;要浏览软件包,您必须自己搜索文件系统或记忆结构。如果可能的话,我想保留扫描。。。