Tôi muốn xây dựng một chương trình AIR AIR đặc biệt trong C dọc theo dòng java.exe.Làm thế nào tôi có thể tải thời gian chạy AIR như một thư viện được chia sẻ trong quá trình từ một chương trình C
Tôi đã xem các chương trình AIR đang chạy với trình xem quy trình và có thể định vị tệp DLL thời gian chạy AIR đang được sử dụng. Các chương trình AIR khác với Java ở chỗ chúng được cài đặt dưới dạng các tệp thực thi nền tảng cụ thể ràng buộc thời gian chạy AIR như một thư viện được chia sẻ trong quá trình khi chúng được khởi chạy (biểu tượng của chúng được người dùng nhấp đúp).
Vâng, tôi muốn tạo một trình khởi chạy AIR thay vì giống như java.exe.
java.exe được khởi chạy dưới dạng một quy trình nền tảng hệ điều hành liên kết với Java JVM runtime (JRE) như một thư viện được chia sẻ trong quá trình. Ứng dụng java sẽ được thực thi được chỉ định như là một đối số dòng lệnh cho java.exe. Khi java.exe đang chạy và JVM có đầy đủ chức năng, lớp ứng dụng java được chỉ định được nạp bởi trình nạp lớp JVM để thực thi. Ứng dụng Java được chỉ định đó sẽ tiếp quản, theo nghĩa "chiếm đoạt" quá trình của java.exe. Tất nhiên, ứng dụng java được chỉ định hiển thị trong bất kỳ danh sách quy trình nào là chương trình java.exe lưu trữ nó.
Tôi muốn thực hiện việc khởi chạy ứng dụng AIR như thế này. Tại sao? Vì vậy, tôi có thể khám phá cách để hack AIR và có lẽ khắc phục một số rất nhiều, nhiều thiếu sót của nó. Ví dụ, để bắt đầu tôi muốn mở rộng kinh nghiệm thời gian chạy AIR với một số API mới có sẵn cho ứng dụng AIR đang chạy.
đặt hàng đầu tiên của tôi về kinh doanh sẽ được:
- Thực hiện một giao diện liên kết của ActionScript3 C mà có thể so sánh để NET PInvoke
- Thêm một API cho quá trình tung ra rằng được so sánh với các API được tìm thấy trong Java SE để thực hiện việc này (Runtime.exec, ProcessBuilder, Process)
- Thêm hỗ trợ cho ứng dụng AIR tới có thể tương tác với stdin , stdout, stderr. Kỳ lạ thay, mặc dù Adobe đã thêm hỗ trợ cho tệp cục bộ quyền truy cập ở AIR, họ đã bỏ qua tương tác với các ống tiêu chuẩn này (tuy nhiên chúng được tìm thấy trên bất kỳ nền tảng hệ điều hành nào mà AIR hỗ trợ).
- Thực hiện hỗ trợ của AMF qua stdin, stdout , stderr - vì vậy AIR (hoặc Java hoặc bất kỳ ngôn ngữ có khả năng AMF) ứng dụng có thể interprocess communication qua trao đổi đối tượng AMF. Thao tác này sẽ thêm một cú chạm của PowerShell của Microsoft vào AIR.
Hiện tại Merapi cung cấp cầu AMF với Java để chứng minh tính hiệu quả của việc này. Than ôi, Merapi phải sử dụng một cổng localhost và socket để thực hiện giao tiếp interprocess - đó là một cách vụng về để đi tương đối so với sử dụng stdin/stdout/stderr interprocess pipe thay thế.
Tôi hiện đang có một trong những nhà phát triển Java viết chương trình "dây đeo khởi động" của Java để khởi chạy ứng dụng AIR của chúng tôi dưới dạng quá trình con và sau đó sử dụng Merapi để nhắn tin không đồng bộ giao tiếp với ứng dụng AIR qua ổ cắm loopback. Chương trình C sẽ vẫn chỉ sử dụng cách tiếp cận giống như Merapi để nói chuyện với ứng dụng AIR. – RogerV
Nhưng nếu chương trình C đã tải thư viện chia sẻ thời gian chạy AIR, điều đó sẽ làm cho mọi thứ trở nên chặt chẽ hơn về sử dụng bộ nhớ, tốc độ khởi chạy ứng dụng, v.v. Nói chung, người dùng có thể loại bỏ Java - trong trường hợp của chúng tôi chúng ta cần chạy applet Oracle Forms Java. Nhưng Java JVM rất dễ tải trong proc. – RogerV