JavaFX là một phần của OpenJDK
Bản thân dự án JavaFX là mã nguồn mở và là một phần của dự án OpenJDK .
Cập nhật tháng 12 năm 2019
Để biết thông tin hiện tại về cách sử dụng Mã nguồn mở JavaFX, hãy truy cập https://openjfx.io . Điều này bao gồm các hướng dẫn về cách sử dụng JavaFX như một thư viện mô-đun được truy cập từ JDK hiện có (chẳng hạn như cài đặt Open JDK ).
Kho mã nguồn mở cho JavaFX có tại https://github.com/openjdk/jfx .
Tại vị trí nguồn được liên kết, bạn có thể tìm thấy các tệp giấy phép cho JavaFX mở (hiện tại giấy phép này khớp với giấy phép cho OpenJDK: GPL + classpath ngoại lệ).
Wiki cho dự án có tại: https://wiki.openjdk.java.net/display/OpenJFX/Main
Nếu bạn muốn bắt đầu nhanh chóng để sử dụng JavaFX mở, các bản phân phối JDK của Belsoft Liberica cung cấp các tệp nhị phân được tạo sẵn của OpenJDK (hiện tại) bao gồm JavaFX mở cho nhiều nền tảng khác nhau.
Để phân phối dưới dạng các ứng dụng độc lập, Java 14, được lên lịch triển khai JEP 343: Công cụ đóng gói , "Hỗ trợ các định dạng đóng gói gốc để cung cấp cho người dùng cuối trải nghiệm cài đặt tự nhiên. Các định dạng này bao gồm msi và exe trên Windows, pkg và dmg trên macOS và deb và rpm trên Linux. ", để triển khai các ứng dụng dựa trên OpenJFX với trình cài đặt gốc và không có phụ thuộc nền tảng bổ sung (chẳng hạn như JDK được cài đặt sẵn).
Thông tin cũ hơn có thể trở nên lỗi thời theo thời gian
Xây dựng JavaFX từ kho OpenJDK
Bạn có thể xây dựng một phiên bản mở của OpenJDK (bao gồm cả JavaFX) hoàn toàn từ nguồn không phụ thuộc vào Oracle JDK hoặc mã nguồn đóng.
Cập nhật: Sử dụng bản phân phối JavaFX được tạo sẵn từ các nguồn OpenJDK
Như đã lưu ý trong các nhận xét cho câu hỏi này và trong một câu trả lời khác, các bản phân phối Debian Linux cung cấp tính năng chưng cất nhị phân JavaFX dựa trên OpenJDK:
(hiện tại điều này chỉ hoạt động cho Java 8 theo như tôi biết).
Sự khác biệt giữa Open JDK và Oracle JDK đối với JavaFX
Thông tin sau được cung cấp cho Java 8. Kể từ Java 9, mã hóa VP6 không được dùng cho JavaFX và công nghệ triển khai ứng dụng nhúng Oracle WebStart / Browser cũng không được chấp nhận . Vì vậy, các phiên bản JavaFX trong tương lai, ngay cả khi chúng được phân phối bởi Oracle, có thể sẽ không bao gồm bất kỳ công nghệ nào không phải là mã nguồn mở.
Oracle JDK bao gồm một số phần mềm không thể sử dụng được từ OpenJDK. Có hai thành phần chính liên quan đến JavaFX.
- Bộ giải mã video ON2 VP6, thuộc sở hữu của Google và Google không mở nguồn.
- Công nghệ triển khai ứng dụng nhúng Oracle WebStart / Browser.
Điều này có nghĩa là phiên bản JavaFX đang mở không thể phát các tệp VP6 FLV. Đây không phải là một tổn thất lớn vì rất khó tìm bộ mã hóa VP6 hoặc phương tiện được mã hóa trong VP6.
Các định dạng video phổ biến hơn khác, chẳng hạn như H.264 sẽ phát tốt với phiên bản JavaFX mở (miễn là bạn đã cài đặt sẵn codec thích hợp trên máy mục tiêu).
Việc thiếu công nghệ triển khai WebStart / Browser Embedded thực sự là điều liên quan đến chính OpenJDK chứ không phải là JavaFX cụ thể. Công nghệ này có thể được sử dụng để triển khai các ứng dụng không phải JavaFX.
Sẽ thật tuyệt nếu cộng đồng OpenSource phát triển một công nghệ triển khai cho Java (và các phần mềm khác) thay thế hoàn toàn các phương pháp triển khai WebStart và Browser Embedded, cho phép trải nghiệm người dùng nhẹ nhàng, ít tác động để phân phối ứng dụng. Tôi tin rằng đã có một số dự án được bắt đầu để phục vụ mục tiêu như vậy, nhưng chúng vẫn chưa đạt được mức độ trưởng thành và mức độ chấp nhận cao.
Cá nhân tôi cảm thấy rằng triển khai WebStart / Browser Embedded là công nghệ kế thừa và hiện có nhiều cách tốt hơn để triển khai nhiều ứng dụng JavaFX (chẳng hạn như các ứng dụng độc lập).
Cập nhật tháng 12 năm 2019:
Phiên bản mã nguồn mở của WebStart cho JDK 11+ đã được phát triển và có sẵn tại https://openwebstart.com .
Ai cần tạo bản phân phối Linux OpenJDK bao gồm JavaFX
Tùy thuộc vào những người tạo gói cho các bản phân phối Linux dựa trên OpenJDK (ví dụ: Redhat, Ubuntu, v.v.) để tạo RPM cho JDK và JRE bao gồm JavaFX. Sau đó, các nhà phân phối phần mềm đó cần đặt các gói đã tạo vào kho mã phân phối tiêu chuẩn của họ (ví dụ: kho lưu trữ mạng yum fedora / red hat). Hiện tại điều này vẫn chưa được thực hiện, nhưng tôi sẽ khá ngạc nhiên nếu các gói Java 8 Linux không bao gồm JavaFX khi Java 8 được phát hành vào tháng 3 năm 2014.
Cập nhật, tháng 12 năm 2019 :
Giờ đây, JavaFX đã được tách ra khỏi hầu hết các bản phân phối JDK và JRE nhị phân (bao gồm cả bản phân phối của Oracle) và thay vào đó, có sẵn dưới dạng SDK độc lập, tập hợp các jmod hoặc dưới dạng phụ thuộc thư viện có sẵn từ kho lưu trữ Maven trung tâm (như được phác thảo như https://openjfx.io ), ít cần các bản phân phối Linux OpenJDK tiêu chuẩn bao gồm JavaFX.
Nếu bạn muốn một JDK được tạo sẵn bao gồm JavaFX, hãy xem xét các bản phân phối Liberica JDK , được cung cấp cho nhiều nền tảng khác nhau.
Lời khuyên về việc triển khai các ứng dụng quan trọng
Tôi khuyên bạn nên sử dụng chế độ triển khai ứng dụng độc lập của Java .
Mô tả về chế độ triển khai này là:
Ứng dụng được cài đặt trên ổ đĩa cục bộ và chạy như một chương trình độc lập sử dụng bản sao riêng của thời gian chạy Java và JavaFX. Ứng dụng có thể được khởi chạy theo cách giống như các ứng dụng gốc khác cho hệ điều hành đó, ví dụ: sử dụng lối tắt trên màn hình hoặc mục nhập menu.
Bạn có thể xây dựng một ứng dụng độc lập từ bản phân phối Oracle JDK hoặc từ bản dựng OpenJDK bao gồm JavaFX. Hiện tại, nó dễ dàng hơn với Oracle JDK.
Vì một phiên bản Java đi kèm với ứng dụng của bạn, bạn không cần phải quan tâm đến phiên bản Java nào có thể đã được cài đặt sẵn trên máy, nó có những khả năng gì và liệu nó có tương thích với chương trình của bạn hay không. Thay vào đó, bạn có thể kiểm tra ứng dụng của mình dựa trên phiên bản thời gian chạy Java chính xác và phân phối phiên bản đó với ứng dụng của bạn. Trải nghiệm người dùng để triển khai ứng dụng của bạn sẽ giống như cài đặt một ứng dụng gốc trên máy của họ (ví dụ: cài đặt windows .exe hoặc .msi, OS X .dmg, linux .rpm hoặc .deb).
Lưu ý: Tính năng ứng dụng độc lập chỉ có sẵn cho Java 8 và 9 chứ không phải cho Java 10-13. Java 14, thông qua JEP 343: Công cụ đóng gói , được lên kế hoạch cung cấp hỗ trợ cho tính năng này một lần nữa từ các bản phân phối OpenJDK.
Cập nhật, tháng 4 năm 2018: Thông tin về chính sách hiện tại của Oracle đối với những phát triển trong tương lai