2011-12-28 29 views
5

Ho un paio di AppleScript che voglio eseguire da Java. Ho diverse opzioni, tra cui: Il modo migliore per eseguire AppleScript da Java

  • esecuzione del AppleScript come una stringa utilizzando l'AppleScript ScriptEngine (usando ((new ScriptEngineManager()).getEngineByName("AppleScript")).eval(scriptString)))
  • Salvare l'AppleScript come applicazione e l'esecuzione l'applicazione da Java (usando Desktop.getDesktop().open("name.app"))
  • Quei due sembravano la le migliori opzioni per me e mi chiedevo

  • C'è un modo migliore?
  • Se! (1.) Quale di questi due modi è il migliore? (Speedwise)
  • Se! (1.) Ci sono modi per migliorare i miei metodi?
  • risposta

    1

    Non sono certa che andare con 2, che sembra un grosso martello.

    L'altra soluzione vecchio stile era eseguire il comando 'osascript'.

    Per quanto ne so l'utilizzo del supporto del motore di script è il metodo preferito.

    1

    La prima opzione suona bene per me, ma se per qualche motivo si desidera eseguire come uno script esterno, si potrebbe prendere in considerazione l'esecuzione di un osascript allo stesso modo si dovrebbe eseguire uno script di shell.

    1

    Direi che l'opzione 1 potrebbe essere la soluzione migliore, a causa di come funziona Applescript.

    Esistono due tipi di oggetto Applescript: testo semplice in formato applescript, quindi compilato in formato applescript. AppliedScript conforme è stato tradotto (essenzialmente) in bytecode dal compilatore Applescript.

    Quindi, se la tua applicazione lo consente, puoi prendere in considerazione la compilazione di tutti i tuoi Applescript una volta, quindi chiamarli in un secondo momento. Questo ti farà risparmiare un po 'di tempo (secondi?).

    (sto solo indovinando qui che, oltre al comando eval, la classe Java ha un modo per compilare solo Applescript.)

    Durante la fase di compilazione, Applescript cerca anche di identificare tutte le applicazioni i usi di script. Credo che sia durante questa fase in cui Applescript potrebbe dire: "Mi dispiace, non riesco a trovare SurfWriter, per favore indicami l'app". Questo tipo di esperienza utente è una di quelle cose che l'utente vuole fare il meno possibile;)