从Java执行AppleScript的最佳方式

时间:2011-12-28 11:57:23

标签: java macos applescript execution-time

我想从Java运行一些AppleScripts。我有几个选择,包括:

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

  • 有更好的方法吗?
  • 如果!(1。)这两种方式中哪一种最好? (Speedwise)
  • 如果!(1。)有没有办法改进我的方法?
  • 3 个答案:

    答案 0 :(得分:1)

    不确定我会选择2,这似乎是一个非常大的锤子。

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

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

    答案 1 :(得分:1)

    你的第一个选项对我来说听起来很合适,但如果由于某种原因你想把它作为外部脚本运行,你可以考虑像运行shell脚本一样运行osascript。

    答案 2 :(得分:1)

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

    有两种类型的Applescript:纯文本Applescript,然后编译Applescript。已编译的Applescript已被Applescript编译器(基本上)翻译成字节码。

    因此,如果您的应用程序允许,您可以考虑编译所有的Applescripts 一次,然后再调用它们。这会节省你一些时间(秒?)。

    (我只是在猜测,除了eval命令外,您的Java类还可以编译Applescript。)

    在编译阶段,Applescript还会尝试识别脚本使用的所有应用程序。我相信在这个阶段,Applescript可能会说,“对不起,我找不到SurfWriter,请指出我的应用程序”。这种用户体验是用户想要尽可能少做的事情之一;)