从Java执行AppleScript的最佳方法

问题描述:

我有几个AppleScript,我想从Java运行。我有几个选项,包括: 从Java执行AppleScript的最佳方法

  • 运行的AppleScript作为使用AppleScript的ScriptEngine的字符串(使用((new ScriptEngineManager()).getEngineByName("AppleScript")).eval(scriptString))
  • 保存的AppleScript为应用程序和运行从Java应用程序(使用Desktop.getDesktop().open("name.app")
  • 这两个似乎是最好的选择给我,我想知道

  • 有没有更好的方法?
  • If!(1)这两种方式哪一种最好? (Speedwise)
  • If!(1。)有没有办法改进我的方法?
  • 不知道我会选择2,这看起来像一个非常大的锤子。

    另一种旧式的解决方案是执行'osascript'命令。

    据我所知使用脚本引擎支持是首选的方法。

    您的第一个选择听起来很对我,但如果由于某种原因想要将其作为外部脚本运行,您可以考虑像运行shell脚本一样运行osascript。

    我猜想选项1可能是你最好的选择,因为Applescript的工作原理。

    有两种类型的Applescript:纯文本Applescript,然后编译Applescript。遵循的Applescript已被AppleScript编译器翻译成(基本上)字节码。因此,如果你的应用程序允许,你可以考虑编译所有你的Applescripts 一次,然后再调用它们。这会为你节省一些时间(秒?)。

    (我只是猜测这里,除了eval命令,你的Java类有一个办法只有编译AppleScript的。)

    编译过程中,还了Applescript试图找出所有的应用程序脚本使用。我相信正是在这个阶段,Applescript可能会说,“我很抱歉,我找不到SurfWriter,请将我指向应用程序”。这种用户体验是用户希望尽可能少做的事情之一;)