2011-12-28 4 views
5

У меня есть несколько AppleScripts, которые я хочу запустить с Java. У меня есть несколько вариантов, в том числе: Лучший способ выполнить AppleScript с Java

  • Запуск AppleScript в виде строки с помощью AppleScript ScriptEngine (с помощью ((new ScriptEngineManager()).getEngineByName("AppleScript")).eval(scriptString)))
  • Сохранение AppleScript в качестве приложения и запуска приложения с Java (с использованием Desktop.getDesktop().open("name.app"))
  • Те два казалось лучшие варианты для меня, и мне было интересно

  • Есть ли лучший способ?
  • Если! (1.) Какой из этих двух способов является лучшим? (Speedwise)
  • Если! (1.) Есть ли способы улучшить мои методы?
  • ответ

    1

    Не уверен, что я поеду с 2, это похоже на очень большой молот.

    Другим решением старого стиля была команда exec 'osascript'.

    Насколько я знаю, использование поддержки движка скрипта является предпочтительным методом.

    1

    Ваш первый вариант звучит прямо для меня, но если по какой-то причине вы хотите запустить его как внешний скрипт, вы можете рассмотреть возможность запуска osascript так же, как вы запускаете сценарий оболочки.

    1

    Я бы предположил, что вариант 1 может быть вашим лучшим выбором, из-за того, как работает Applescript.

    Существует два типа Applescript: обычный текст Applescript, затем скомпилированный Applescript. Соответствующий Applescript был переведен (по существу) на байт-код у Applescript-complier.

    Таким образом, если ваше приложение позволяет это, вы можете скомпилировать все ваши Applescripts один раз, а затем позвонить им позже. Это сэкономит вам некоторое время (секунды?).

    (я только предполагаю здесь, что, в дополнение к команде eval, ваш класс Java есть способ просто компилировать Applescript.)

    На стадии компиляции, Applescript также пытается определить все приложения на сценарий использует. Я считаю, что на этом этапе Applescript может сказать: «Извините, я не могу найти SurfWriter, пожалуйста, укажите мне приложение». Такой пользовательский интерфейс является одной из тех вещей, которые пользователь хочет сделать как можно меньше;)

    Смежные вопросы