Próbuję zdecydować, czy mogę przełączyć się na JavaFX dla interfejsu użytkownika mojej aplikacji Java. Większość moich użytkowników korzystałaby z Oracle JRE, które obecnie ma zintegrowany JavaFX. Jednak niektórzy używają OpenJDK (w systemie Linux). To (stare) pytanie sugeruje, że OpenJDK bardzo źle radzi sobie z JavaFX. Zgodnie z tym pytaniem, alternatywny OpenJFX będzie w pełni zintegrowany z OpenJDK dopiero w wersji 9. Moje pytanie jest więc dwojakie:
- Czy obsługa JavaFX w OpenJDK jest nadal taka zła?
- Jeśli tak, to czy są jakieś dystrybucje Linuksa, które już oferują pakiet OpenJFX, więc użytkownicy nie musieliby go tworzyć samodzielnie ?
Odpowiedzi:
JavaFX jest częścią OpenJDK
Sam projekt JavaFX jest open source i jest częścią projektu OpenJDK .
Zaktualizuj grudzień 2019 r
Aktualne informacje na temat korzystania z Open Source JavaFX można znaleźć na stronie https://openjfx.io . Obejmuje to instrukcje dotyczące używania JavaFX jako biblioteki modułowej, do której można uzyskać dostęp z istniejącego JDK (np. Instalacja Open JDK ).
Repozytorium kodu open source dla JavaFX znajduje się pod adresem https://github.com/openjdk/jfx .
W podlinkowanej lokalizacji źródłowej można znaleźć pliki licencji dla otwartego JavaFX (obecnie ta licencja jest zgodna z licencją dla OpenJDK: wyjątek GPL + ścieżka klas).
Wiki projektu znajduje się pod adresem : https://wiki.openjdk.java.net/display/OpenJFX/Main
Jeśli chcesz szybko rozpocząć korzystanie z otwartego JavaFX, dystrybucje Belsoft Liberica JDK zapewniają gotowe pliki binarne OpenJDK, które (obecnie) zawierają otwarty JavaFX dla różnych platform.
Java 14 ma wdrożyć narzędzie JEP 343: Packaging Tool , które „obsługuje natywne formaty pakowania, aby zapewnić użytkownikom końcowym naturalną instalację. , oraz deb i rpm w systemie Linux. ”, do wdrażania aplikacji opartych na OpenJFX z natywnymi instalatorami i bez dodatkowych zależności platformy (takich jak preinstalowany pakiet JDK).
Starsze informacje, które z czasem mogą stać się nieaktualne
Tworzenie JavaFX z repozytorium OpenJDK
Możesz zbudować otwartą wersję OpenJDK (w tym JavaFX) całkowicie ze źródła, które nie ma zależności od Oracle JDK lub zamkniętego kodu źródłowego.
Aktualizacja: Korzystanie z dystrybucji JavaFX wstępnie zbudowanej ze źródeł OpenJDK
Jak zauważono w komentarzach do tego pytania i innej odpowiedzi, dystrybucje Debian Linux oferują dystrybucję binarną JavaFX opartą na OpenJDK:
Zainstaluj przez:
(obecnie działa to tylko dla Java 8, o ile wiem).
Różnice między Open JDK i Oracle JDK w odniesieniu do JavaFX
Poniższe informacje zostały podane dla języka Java 8. Od wersji Java 9 kodowanie VP6 jest nieaktualne dla JavaFX, a technologia wdrażania aplikacji osadzonych w Oracle WebStart / Browser również jest przestarzała . Dlatego przyszłe wersje JavaFX, nawet jeśli są dystrybuowane przez Oracle, prawdopodobnie nie będą zawierać żadnej technologii, która nie jest open source.
Oracle JDK zawiera oprogramowanie, którego nie można używać z OpenJDK. Istnieją dwa główne komponenty związane z JavaFX.
Oznacza to, że otwarta wersja JavaFX nie może odtwarzać plików VP6 FLV. Nie jest to duża strata, ponieważ trudno jest znaleźć kodery VP6 lub multimedia zakodowane w VP6.
Inne bardziej popularne formaty wideo, takie jak H.264, będą odtwarzane dobrze z otwartą wersją JavaFX (o ile masz wstępnie zainstalowane odpowiednie kodeki na maszynie docelowej).
Brak technologii wdrażania WebStart / Browser Embedded ma tak naprawdę coś wspólnego z samym OpenJDK, a nie konkretnie z JavaFX. Tej technologii można używać do wdrażania aplikacji innych niż JavaFX.
Byłoby wspaniale, gdyby społeczność OpenSource opracowała technologię wdrażania dla języka Java (i innego oprogramowania), która całkowicie zastąpiłaby metody wdrażania WebStart i Browser Embedded, umożliwiając przyjemną lekkość i niewielki wpływ na dystrybucję aplikacji. Wydaje mi się, że były projekty, które zaczęły służyć temu celowi, ale nie osiągnęły jeszcze wysokiej dojrzałości i stopnia przyjęcia.
Osobiście uważam, że wdrożenia WebStart / Browser Embedded to starsza technologia i obecnie istnieją lepsze sposoby wdrażania wielu aplikacji JavaFX (takich jak aplikacje niezależne).
Aktualizacja grudzień 2019:
Opracowano otwartą wersję oprogramowania WebStart dla JDK 11+, która jest dostępna pod adresem https://openwebstart.com .
Kto musi tworzyć dystrybucje Linux OpenJDK, które zawierają JavaFX
To od ludzi, którzy tworzą pakiety dla dystrybucji Linuksa opartych na OpenJDK (np. Redhat, Ubuntu itp.), Zależy tworzenie RPM dla JDK i JRE, które zawierają JavaFX. Ci dystrybutorzy oprogramowania muszą następnie umieścić wygenerowane pakiety w swoich standardowych repozytoriach kodu dystrybucyjnego (np. Repozytoria yum w sieci fedora / red hat). Obecnie nie jest to robione, ale byłbym dość zaskoczony, gdyby pakiety Java 8 Linux nie zawierały JavaFX, gdy Java 8 zostanie wydana w marcu 2014.
Aktualizacja, grudzień 2019 r . :
Teraz, gdy JavaFX został oddzielony od większości binarnych dystrybucji JDK i JRE (w tym dystrybucji Oracle) i zamiast tego jest dostępny jako samodzielny SDK, zestaw jmods lub jako zależność biblioteki dostępna z centralnego repozytorium Maven (jak opisano w https://openjfx.io ), nie ma potrzeby, aby standardowe dystrybucje Linux OpenJDK zawierały JavaFX.
Jeśli potrzebujesz gotowego JDK , który zawiera JavaFX, rozważ dystrybucje Liberica JDK , które są dostarczane dla różnych platform.
Porady dotyczące wdrażania w przypadku znaczących aplikacji
Radzę używać samodzielnego trybu wdrażania aplikacji Java .
Opis tego trybu wdrażania to:
Samodzielną aplikację można zbudować z dystrybucji Oracle JDK lub z kompilacji OpenJDK, która zawiera JavaFX. Obecnie jest to łatwiejsze dzięki Oracle JDK.
Ponieważ wersja Java jest dołączona do Twojej aplikacji, nie musisz martwić się o to, jaka wersja Java mogła zostać wstępnie zainstalowana na komputerze, jakie ma możliwości i czy jest zgodna z Twoim programem. Zamiast tego możesz przetestować swoją aplikację pod kątem dokładnej wersji środowiska wykonawczego Java i rozpowszechniać ją wraz z aplikacją. Doświadczenie użytkownika związane z wdrażaniem aplikacji będzie takie samo, jak podczas instalowania aplikacji natywnej na ich komputerze (np. Zainstalowany plik Windows .exe lub .msi, OS X .dmg, Linux .rpm lub .deb).
Uwaga: funkcja samodzielnej aplikacji była dostępna tylko dla Java 8 i 9, a nie dla Java 10-13. Java 14, za pośrednictwem JEP 343: Packaging Tool , ma ponownie zapewnić obsługę tej funkcji z dystrybucji OpenJDK.
Aktualizacja, kwiecień 2018 r .: Informacje o aktualnej polityce firmy Oracle dotyczącej przyszłych zmian
źródło
U mnie to zadziałało.
źródło
webupd8 PPA
Ubuntu ifedy
pulpitu dla Fedory, są dwa szybkie sposoby konfiguracji najnowszego Oracle JDK / JRE, który zawiera JavaFX.apt-get install openjfx
(które obecnie działa tylko dla Java 8), możesz użyć instrukcji z witryny internetowej openjfx.io , gdzie JavaFX jest „dostępny jako zestaw SDK dla konkretnej platformy, jako liczba jmods i jako zestaw artefaktów w maven central. ”.sudo apt-get install openjfx
, będzie nadal obsługiwane i działać w późniejszych wersjach JavaFX i Ubuntu. Zauważ, że pakiety openjfx Debiana nie wydają się być aktualizowane tak często, jak biblioteki dystrybuowane przez openjfx.io, więc jeśli chcesz używać najnowszej wersji, prawdopodobnie najlepiej będzie, jeśli użyjesz dystrybucji openjfx.io.Szybkim rozwiązaniem jest skopiowanie pliku JAR środowiska wykonawczego JavaFX oraz plików, do których istnieją odwołania z Oracle JRE (JDK) lub dowolnej samodzielnej aplikacji korzystającej z JavaFX (np. JavaFX Scene Builder 2.0 ):
po prostu upewnij się, że masz GTK 2.18 lub nowszy
źródło
Odpowiadając również na to pytanie:
Gdzie mogę uzyskać gotowe biblioteki JavaFX dla OpenJDK (Windows)
W systemie Linux nie jest to tak naprawdę problem, ale w systemie Windows nie jest to takie łatwe, zwłaszcza jeśli chcesz rozpowszechniać środowisko JRE.
W rzeczywistości możesz używać OpenJFX z OpenJDK 8 w systemie Windows, po prostu musisz go samodzielnie złożyć:
Pobierz OpenJDK stąd: https://github.com/AdoptOpenJDK/openjdk8-releases/releases/tag/jdk8u172-b11
Pobierz OpenJFX stąd: https://github.com/SkyLandTW/OpenJFX-binary-windows/releases/tag/v8u172-b11
skopiuj wszystkie pliki z zip OpenFX na górze JDK, voila, masz OpenJDK z JavaFX.
Aktualizacja :
Na szczęście od Azul jest teraz dostępna kompilacja OpenJDK + OpenJFX, którą można pobrać na stronie ich społeczności: https://www.azul.com/downloads/zulu-community/?&version=java-8-lts&os=windows&package=jdk-fx
źródło
Spróbuj obuildfactory .
Istnieje potrzeba zmodyfikowania tych skryptów (zawierają błędy i nie robią dokładnie tego, co jest wymagane), w ciągu najbliższych kilku dni wgram skrypty rozwidlone z obuildfactory. dlatego też odpowiednio zaktualizuję moją odpowiedź.
Do tego czasu życzę miłego pana :)
źródło
Według Oracle integracja OpenJDK i javaFX nastąpi w pierwszym kwartale 2014 r. (Patrz mapa drogowa: http://www.oracle.com/technetwork/java/javafx/overview/roadmap-1446331.html ). Tak więc na pierwsze pytanie odpowiedź brzmi: musisz poczekać do tego czasu. W przypadku drugiego pytania nie ma innego wyjścia. Więc na razie przejdź do java swing lub uruchom javaFX i czekaj
źródło