2011-12-28 12 views
5

Tengo un par de AppleScripts que quiero ejecutar desde Java. Tengo varias opciones, entre ellas: La mejor manera de ejecutar AppleScript desde Java

  • Ejecución del AppleScript como una cadena utilizando el AppleScript ScriptEngine (usando ((new ScriptEngineManager()).getEngineByName("AppleScript")).eval(scriptString)))
  • Salvar el AppleScript como una aplicación y ejecución de la aplicación de Java (usando Desktop.getDesktop().open("name.app"))
  • Los dos parecían la Las mejores opciones para mí y me preguntaba

  • ¿Hay una manera mejor?
  • If! (1.) ¿Cuál de estas dos formas es la mejor? (Speedwise)
  • If! (1.) ¿Hay formas de mejorar mis métodos?
  • Respuesta

    1

    No estoy seguro de que vaya con 2, parece un martillo muy grande.

    La otra solución de estilo antiguo era ejecutar el comando 'osascript'.

    Por lo que sé, utilizar el script es el método preferido.

    1

    Su primera opción me suena bien, pero si por algún motivo desea ejecutarla como un script externo, podría considerar ejecutar un osascript de la misma manera que ejecutaría un script de shell.

    1

    Supongo que la opción 1 podría ser su mejor opción, debido a cómo funciona Applescript.

    Hay dos tipos de Applescript: texto plano Applescript, compilado Applescript. Applescript cumplido ha sido traducido (esencialmente) en bytecode por el compilador Applescript.

    Por lo tanto, si su aplicación lo permite, puede considerar compilar todas sus secuencias de comandos una vez, y luego llamarlas más tarde. Esto te ahorrará algo de tiempo (¿segundos?).

    (Sólo estoy adivinando que, además del comando eval, la clase Java tiene una manera de simplemente compilar Applescript.)

    Durante la etapa de compilación, Applescript también trata de identificar todas las aplicaciones de las script usa. Creo que es durante esta fase en la que AppleScript podría decir: "Lo siento, no puedo encontrar SurfWriter, por favor dirígeme a la aplicación". Este tipo de experiencia de usuario es una de esas cosas que el usuario quiere hacer lo menos posible;)

    Cuestiones relacionadas