Saya mencoba memutuskan apakah saya dapat beralih ke JavaFX untuk antarmuka pengguna aplikasi Java saya. Sebagian besar pengguna saya akan menggunakan Oracle JRE, yang telah terintegrasi JavaFX hari ini. Namun, ada juga yang menggunakan OpenJDK (di linux). Ini (lama) pertanyaan menunjukkan bahwa OpenJDK Penawaran sangat buruk dengan JavaFX. Menurut pertanyaan ini , OpenJFX alternatif hanya akan diintegrasikan sepenuhnya ke dalam OpenJDK di versi 9. Jadi pertanyaan saya ada dua:
- Apakah dukungan JavaFX di OpenJDK masih sangat buruk?
- Jika ya, apakah ada distribusi Linux yang sudah menawarkan paket OpenJFX sehingga pengguna tidak perlu membuatnya sendiri ?
Jawaban:
JavaFX adalah bagian dari OpenJDK
Proyek JavaFX sendiri adalah open source dan merupakan bagian dari proyek OpenJDK .
Perbarui Des 2019
Untuk informasi terkini tentang cara menggunakan Open Source JavaFX, kunjungi https://openjfx.io . Ini termasuk instruksi tentang penggunaan JavaFX sebagai pustaka modular yang diakses dari JDK yang ada (seperti instalasi Open JDK ).
Repositori kode sumber terbuka untuk JavaFX ada di https://github.com/openjdk/jfx .
Di lokasi sumber yang ditautkan, Anda dapat menemukan file lisensi untuk JavaFX terbuka (saat ini lisensi ini cocok dengan lisensi untuk OpenJDK: pengecualian jalur kelas GPL +).
Wiki untuk proyek ini terletak di: https://wiki.openjdk.java.net/display/OpenJFX/Main
Jika Anda ingin mulai cepat menggunakan JavaFX terbuka, distribusi Belsoft Liberica JDK menyediakan binari OpenJDK yang sudah dibuat sebelumnya yang (saat ini) menyertakan JavaFX terbuka untuk berbagai platform.
Untuk distribusi sebagai aplikasi mandiri, Java 14 dijadwalkan untuk mengimplementasikan JEP 343: Alat Pengemasan , yang "Mendukung format pengemasan asli untuk memberikan pengalaman penginstalan alami kepada pengguna akhir. Format ini mencakup msi dan exe di Windows, pkg dan dmg di macOS , serta deb dan rpm di Linux. ", untuk penerapan aplikasi berbasis OpenJFX dengan penginstal asli dan tanpa ketergantungan platform tambahan (seperti JDK yang telah diinstal sebelumnya).
Informasi lama yang mungkin menjadi usang seiring waktu
Membangun JavaFX dari repositori OpenJDK
Anda dapat membangun OpenJDK versi terbuka (termasuk JavaFX) sepenuhnya dari sumber yang tidak memiliki ketergantungan pada Oracle JDK atau kode sumber tertutup.
Pembaruan: Menggunakan distribusi JavaFX yang dibuat sebelumnya dari sumber OpenJDK
Sebagaimana dicatat dalam komentar untuk pertanyaan ini dan dalam jawaban lain, distribusi Debian Linux menawarkan distribusi biner JavaFX berdasarkan OpenJDK:
Instal melalui:
(Saat ini ini hanya berfungsi untuk Java 8 sejauh yang saya tahu).
Perbedaan antara Open JDK dan Oracle JDK sehubungan dengan JavaFX
Informasi berikut disediakan untuk Java 8. Mulai Java 9, pengkodean VP6 tidak digunakan lagi untuk JavaFX dan teknologi penerapan aplikasi tertanam Oracle WebStart / Browser juga tidak digunakan lagi . Jadi, versi JavaFX yang akan datang, meskipun didistribusikan oleh Oracle, kemungkinan besar tidak akan menyertakan teknologi apa pun yang bukan open source.
Oracle JDK menyertakan beberapa perangkat lunak yang tidak dapat digunakan dari OpenJDK. Ada dua komponen utama yang terkait dengan JavaFX.
Ini berarti bahwa versi terbuka JavaFX tidak dapat memutar file FLV VP6. Ini bukan kerugian besar karena sulit untuk menemukan encoder VP6 atau media yang dikodekan dalam VP6.
Format video lain yang lebih umum, seperti H.264 akan diputar ulang dengan baik dengan versi terbuka JavaFX (selama Anda memiliki codec yang sesuai yang telah diinstal sebelumnya pada mesin target).
Kurangnya teknologi penyebaran WebStart / Browser Embedded benar-benar ada hubungannya dengan OpenJDK itu sendiri daripada JavaFX secara khusus. Teknologi ini dapat digunakan untuk menyebarkan aplikasi non-JavaFX.
Akan sangat bagus jika komunitas OpenSource mengembangkan teknologi penyebaran untuk Java (dan perangkat lunak lain) yang sepenuhnya menggantikan metode penyebaran WebStart dan Browser Embedded, memungkinkan pengalaman pengguna yang ringan dan berdampak rendah untuk distribusi aplikasi. Saya yakin telah ada beberapa proyek yang mulai memenuhi tujuan seperti itu, tetapi mereka belum mencapai tingkat kematangan dan adopsi yang tinggi.
Secara pribadi, saya merasa bahwa penerapan WebStart / Browser Embedded adalah teknologi lama dan saat ini ada cara yang lebih baik untuk menyebarkan banyak aplikasi JavaFX (seperti aplikasi mandiri).
Perbarui Des, 2019:
Versi open source WebStart untuk JDK 11+ telah dikembangkan dan tersedia di https://openwebstart.com .
Siapa yang perlu membuat Distribusi OpenJDK Linux yang menyertakan JavaFX
Terserah orang-orang yang membuat paket untuk distribusi Linux berdasarkan OpenJDK (misalnya Redhat, Ubuntu dll) untuk membuat RPM untuk JDK dan JRE yang menyertakan JavaFX. Distributor perangkat lunak tersebut, kemudian perlu menempatkan paket yang dihasilkan dalam repositori kode distribusi standar mereka (misalnya, repositori yum jaringan fedora / red hat). Saat ini hal ini belum dilakukan, tetapi saya akan sangat terkejut jika paket Java 8 Linux tidak menyertakan JavaFX saat Java 8 dirilis pada Maret 2014.
Pembaruan, Des 2019 :
Sekarang JavaFX telah dipisahkan dari sebagian besar distribusi biner JDK dan JRE (termasuk distribusi Oracle) dan, sebagai gantinya, tersedia sebagai SDK yang berdiri sendiri, kumpulan jmods atau sebagai dependensi pustaka yang tersedia dari repositori Maven pusat (seperti yang dijelaskan sebagai https://openjfx.io ), ada sedikit kebutuhan akan distribusi Linux OpenJDK standar untuk menyertakan JavaFX.
Jika Anda menginginkan JDK pra-bangun yang menyertakan JavaFX, pertimbangkan distribusi Liberica JDK , yang disediakan untuk berbagai platform.
Nasihat tentang Penerapan untuk Aplikasi Substansial
Saya menyarankan menggunakan mode penerapan aplikasi mandiri Java .
Penjelasan tentang mode penerapan ini adalah:
Anda dapat membuat aplikasi mandiri baik dari distribusi Oracle JDK atau dari build OpenJDK yang menyertakan JavaFX. Saat ini lebih mudah untuk melakukannya dengan Oracle JDK.
Karena versi Java dipaketkan dengan aplikasi Anda, Anda tidak perlu peduli tentang versi Java apa yang mungkin telah diinstal sebelumnya pada mesin, kemampuan apa yang dimilikinya, dan apakah kompatibel dengan program Anda atau tidak. Sebagai gantinya, Anda dapat menguji aplikasi Anda terhadap versi runtime Java yang tepat, dan mendistribusikannya bersama aplikasi Anda. Pengalaman pengguna untuk menerapkan aplikasi Anda akan sama dengan menginstal aplikasi asli pada mesin mereka (misalnya, menginstal windows .exe atau .msi, OS X .dmg, linux .rpm atau .deb).
Catatan: Fitur aplikasi mandiri hanya tersedia untuk Java 8 dan 9, bukan untuk Java 10-13. Java 14, melalui JEP 343: Packaging Tool , dijadwalkan kembali memberikan dukungan untuk fitur ini dari distribusi OpenJDK.
Pembaruan, April 2018: Informasi tentang kebijakan Oracle saat ini terhadap perkembangan di masa mendatang
sumber
Bagi saya ini berhasil.
sumber
webupd8 PPA
menyukai Ubuntu danfedy
penginstal desktop untuk Fedora adalah dua cara cepat untuk mengatur Oracle JDK / JRE terbaru yang menyertakan JavaFX.apt-get install openjfx
(yang saat ini hanya berfungsi untuk Java 8), Anda dapat menggunakan petunjuk dari situs web openjfx.io , di mana JavaFX "tersedia sebagai SDK khusus platform, sebagai nomor dari jmods, dan sebagai satu set artefak di pusat maven. ".sudo apt-get install openjfx
, akan terus didukung dan berfungsi untuk rilis JavaFX dan ubuntu nanti. Perhatikan bahwa paket openjfx Debian tampaknya tidak diperbarui sesering perpustakaan yang didistribusikan oleh openjfx.io, jadi jika Anda ingin menggunakan versi terbaru, Anda mungkin lebih baik menggunakan distribusi openjfx.io.Sebagai solusi cepat, Anda dapat menyalin file JAR runtime JavaFX dan yang direferensikan dari Oracle JRE (JDK) atau aplikasi mandiri apa pun yang menggunakan JavaFX (misalnya, JavaFX Scene Builder 2.0 ):
hanya pastikan Anda memiliki gtk yang 2,18 atau lebih tinggi
sumber
Juga menjawab pertanyaan ini:
Di mana saya bisa mendapatkan pustaka JavaFX bawaan untuk OpenJDK (Windows)
Di Linux sebenarnya tidak menjadi masalah, tetapi di Windows tidak semudah itu, terutama jika Anda ingin mendistribusikan JRE.
Anda sebenarnya dapat menggunakan OpenJFX dengan OpenJDK 8 di windows, Anda hanya perlu merakitnya sendiri:
Unduh OpenJDK dari sini: https://github.com/AdoptOpenJDK/openjdk8-releases/releases/tag/jdk8u172-b11
Unduh OpenJFX dari sini: https://github.com/SkyLandTW/OpenJFX-binary-windows/releases/tag/v8u172-b11
salin semua file dari zip OpenFX di atas JDK, voila, Anda memiliki OpenJDK dengan JavaFX.
Pembaruan :
Untungnya dari Azul sekarang ada build OpenJDK + OpenJFX yang dapat diunduh di halaman komunitas mereka: https://www.azul.com/downloads/zulu-community/?&version=java-8-lts&os=windows&package=jdk-fx
sumber
Coba obuildfactory .
Ada kebutuhan untuk mengubah skrip ini (mengandung kesalahan dan tidak benar-benar melakukan "hal" yang diperlukan), saya akan mengunggah skrip saya yang bercabang dari obuildfactory dalam beberapa hari ke depan. dan jadi saya juga akan memperbarui jawaban saya sesuai.
Sampai jumpa lagi pak :)
sumber
Menurut integrasi Oracle OpenJDK & javaFX akan dilakukan pada Q1-2014 (lihat peta jalan: http://www.oracle.com/technetwork/java/javafx/overview/roadmap-1446331.html ). Jadi, untuk pertanyaan pertama jawabannya adalah Anda harus menunggu sampai saat itu. Untuk pertanyaan ke-2 tidak ada cara lain. Jadi, untuk saat ini gunakan java swing atau mulai javaFX dan tunggu
sumber