2011-12-28 21 views
5

Tôi có một vài AppleScripts mà tôi muốn chạy từ Java. Tôi có một vài lựa chọn bao gồm: Cách tốt nhất để thực thi AppleScript từ Java

  • Chạy AppleScript như là một chuỗi bằng cách sử dụng AppleScript ScriptEngine (sử dụng ((new ScriptEngineManager()).getEngineByName("AppleScript")).eval(scriptString)))
  • Cứu AppleScript như một ứng dụng và chạy các ứng dụng từ Java (sử dụng Desktop.getDesktop().open("name.app"))
  • Hai dường như các lựa chọn tốt nhất cho tôi và tôi đã tự hỏi

  • Có cách nào tốt hơn không?
  • Nếu! (1.) Cách nào trong hai cách này là tốt nhất? (Speedwise)
  • Nếu! (1.) Có cách nào để cải thiện phương pháp của tôi không?
  • Trả lời

    1

    Không chắc chắn tôi sẽ đi với 2, mà có vẻ như một cái búa rất lớn.

    Giải pháp kiểu cũ khác là lệnh exec 'osascript'.

    Theo như tôi biết, việc sử dụng hỗ trợ công cụ tập lệnh là phương thức ưu tiên.

    1

    Tùy chọn đầu tiên của bạn có vẻ phù hợp với tôi, nhưng nếu vì lý do nào đó bạn muốn chạy tập lệnh này dưới dạng tập lệnh bên ngoài, bạn có thể xem xét chạy một osascript giống như cách bạn chạy tập lệnh shell.

    1

    Tôi đoán rằng tùy chọn 1 có thể là đặt cược tốt nhất của bạn, vì cách thức hoạt động của Applescript.

    Có hai loại Applescript: Applescript văn bản thuần túy, sau đó được biên dịch Bản tóm tắt. Tuân thủ bản tóm tắt đã được dịch (về cơ bản) thành bytecode bởi trình biên tập của Applescript.

    Vì vậy, nếu ứng dụng của bạn cho phép, bạn có thể xem xét biên dịch tất cả các bản đăng ký của bạn sau khi, sau đó gọi cho chúng sau. Điều này sẽ giúp bạn tiết kiệm thời gian (giây?).

    (Tôi chỉ đoán ở đây rằng, ngoài các lệnh eval, lớp Java của bạn có một cách để chỉ biên dịch AppleScript.)

    Trong giai đoạn biên soạn, AppleScript cũng cố gắng để xác định tất cả các ứng dụng của kịch bản sử dụng. Tôi tin rằng đó là trong giai đoạn này, nơi Applescript có thể nói, "Tôi xin lỗi, tôi không thể tìm thấy SurfWriter, xin vui lòng chỉ cho tôi vào ứng dụng". Loại trải nghiệm người dùng này là một trong những điều mà người dùng muốn làm càng ít càng tốt;)