Estou tentando decidir se posso mudar para JavaFX para a interface do usuário do meu aplicativo Java. A maioria dos meus usuários estaria usando o Oracle JRE, que tem o JavaFX integrado atualmente. No entanto, alguns estão usando OpenJDK (no Linux). Esta (velha) questão sugere que o OpenJDK lida muito mal com o JavaFX. De acordo com esta pergunta, o OpenJFX alternativo só será totalmente integrado ao OpenJDK na versão 9. Portanto, minha pergunta é dupla:
- O suporte a JavaFX no OpenJDK ainda é tão ruim?
- Em caso afirmativo, há alguma distribuição Linux que já oferece um pacote OpenJFX para que os usuários não tenham que criá-lo sozinhos ?
Respostas:
JavaFX faz parte do OpenJDK
O próprio projeto JavaFX é open source e faz parte do projeto OpenJDK .
Atualização de dezembro de 2019
Para obter informações atuais sobre como usar o JavaFX de código aberto, visite https://openjfx.io . Isso inclui instruções sobre como usar o JavaFX como uma biblioteca modular acessada de um JDK existente (como uma instalação do Open JDK ).
O repositório de código-fonte aberto para JavaFX está em https://github.com/openjdk/jfx .
No link do local de origem, você pode encontrar arquivos de licença para JavaFX aberto (atualmente, esta licença corresponde à licença para OpenJDK: exceção de caminho de classe GPL +).
O wiki do projeto está localizado em: https://wiki.openjdk.java.net/display/OpenJFX/Main
Se você deseja um início rápido para usar o JavaFX aberto, as distribuições Belsoft Liberica JDK fornecem binários pré-construídos do OpenJDK que (atualmente) incluem JavaFX aberto para uma variedade de plataformas.
Para distribuição como aplicativos independentes, o Java 14 está programado para implementar JEP 343: Packaging Tool , que "Suporta formatos de empacotamento nativos para dar aos usuários finais uma experiência de instalação natural. Esses formatos incluem msi e exe no Windows, pkg e dmg no macOS e deb e rpm no Linux. ", para implantação de aplicativos baseados em OpenJFX com instaladores nativos e sem dependências de plataforma adicionais (como um JDK pré-instalado).
Informações mais antigas que podem ficar desatualizadas com o tempo
Construindo JavaFX a partir do repositório OpenJDK
Você pode construir uma versão aberta do OpenJDK (incluindo JavaFX) completamente a partir do código-fonte que não tem dependências do Oracle JDK ou código-fonte fechado.
Atualização: usando uma distribuição JavaFX pré-construída a partir de fontes OpenJDK
Conforme observado nos comentários a esta pergunta e em outra resposta, as distribuições Debian Linux oferecem uma distribuição binária JavaFX baseada em OpenJDK:
Instale via:
(atualmente isso só funciona para Java 8 até onde eu sei).
Diferenças entre Open JDK e Oracle JDK em relação ao JavaFX
As informações a seguir foram fornecidas para Java 8. A partir do Java 9, a codificação VP6 foi descontinuada para JavaFX e a tecnologia de implantação de aplicativo integrado Oracle WebStart / Browser também foi descontinuada . Portanto, as versões futuras do JavaFX, mesmo que sejam distribuídas pela Oracle, provavelmente não incluirão nenhuma tecnologia que não seja de código aberto.
O Oracle JDK inclui alguns softwares que não podem ser usados no OpenJDK. Existem dois componentes principais relacionados ao JavaFX.
Isso significa que uma versão aberta do JavaFX não pode reproduzir arquivos VP6 FLV. Isso não é uma grande perda, pois é difícil encontrar codificadores VP6 ou mídia codificada em VP6.
Outros formatos de vídeo mais comuns, como H.264, serão reproduzidos sem problemas com uma versão aberta do JavaFX (contanto que você tenha os codecs apropriados pré-instalados na máquina de destino).
A falta de tecnologia de implantação WebStart / Browser Embedded é realmente algo a ver com o próprio OpenJDK, e não com o JavaFX especificamente. Essa tecnologia pode ser usada para implantar aplicativos não JavaFX.
Seria ótimo se a comunidade OpenSource desenvolvesse uma tecnologia de implantação para Java (e outro software) que substituísse completamente os métodos de implantação WebStart e Browser Embedded, permitindo uma boa experiência de usuário leve e de baixo impacto para distribuição de aplicativos. Acredito que alguns projetos já começaram a atender a esse objetivo, mas ainda não atingiram um alto nível de maturidade e adoção.
Pessoalmente, acho que as implantações WebStart / Browser Embedded são tecnologias legadas e atualmente existem maneiras melhores de implantar muitos aplicativos JavaFX (como aplicativos autocontidos).
Atualização de dezembro de 2019:
Uma versão de código aberto do WebStart para JDK 11+ foi desenvolvida e está disponível em https://openwebstart.com .
Quem precisa criar distribuições Linux OpenJDK que incluem JavaFX
Cabe às pessoas que criam pacotes para distribuições Linux baseadas em OpenJDK (por exemplo, Redhat, Ubuntu etc) criar RPMs para JDK e JRE que incluem JavaFX. Esses distribuidores de software, então, precisam colocar os pacotes gerados em seus repositórios de código de distribuição padrão (por exemplo, repositórios yum de rede fedora / red hat). Atualmente, isso não está sendo feito, mas eu ficaria muito surpreso se os pacotes Java 8 Linux não incluíssem o JavaFX quando o Java 8 for lançado em março de 2014.
Atualização, dezembro de 2019 :
Agora que o JavaFX foi separado da maioria das distribuições binárias JDK e JRE (incluindo a distribuição da Oracle) e está, em vez disso, disponível como um SDK autônomo, conjunto de jmods ou como dependências de biblioteca disponíveis no repositório central Maven (conforme descrito como https://openjfx.io ), há menos necessidade de distribuições Linux OpenJDK padrão para incluir JavaFX.
Se você quiser um JDK pré-construído que inclua JavaFX, considere as distribuições do Liberica JDK , que são fornecidas para uma variedade de plataformas.
Conselhos sobre implantação de aplicativos substanciais
Aconselho usar o modo de implantação de aplicativo independente do Java .
Uma descrição desse modo de implantação é:
Você pode construir um aplicativo independente a partir da distribuição Oracle JDK ou de uma construção OpenJDK que inclui JavaFX. Atualmente, é mais fácil fazer isso com um Oracle JDK.
Como uma versão do Java é fornecida com o seu aplicativo, você não precisa se preocupar com qual versão do Java pode ter sido pré-instalada na máquina, quais recursos ela possui e se é ou não compatível com o seu programa. Em vez disso, você pode testar seu aplicativo em uma versão exata do Java Runtime e distribuí-la com seu aplicativo. A experiência do usuário para implantar seu aplicativo será a mesma que instalar um aplicativo nativo em sua máquina (por exemplo, um windows .exe ou .msi instalado, um OS X .dmg, um linux .rpm ou .deb).
Nota: O recurso de aplicativo independente estava disponível apenas para Java 8 e 9, e não para Java 10-13. Java 14, via JEP 343: Packaging Tool , está programado para fornecer novamente suporte para esse recurso de distribuições OpenJDK.
Atualização, abril de 2018: Informações sobre a política atual da Oracle para desenvolvimentos futuros
fonte
Para mim, isso funcionou.
fonte
webupd8 PPA
para Ubuntu efedy
instalador de desktop para Fedora, existem duas maneiras rápidas de configurar o Oracle JDK / JRE mais recente, que inclui JavaFX.apt-get install openjfx
(que atualmente funciona apenas para Java 8), você pode usar as instruções do site openjfx.io , onde JavaFX está "disponível como um SDK específico da plataforma, como um número de jmods, e como um conjunto de artefatos em maven central. ".sudo apt-get install openjfx
, continuará a ter suporte e funcionar para versões posteriores do JavaFX e do ubuntu. Note que os pacotes Debian openjfx não parecem ser atualizados com tanta freqüência quanto as bibliotecas distribuídas por openjfx.io, então se você deseja usar a versão mais atualizada, é melhor usar uma distribuição openjfx.io.Como uma solução rápida, você pode copiar o arquivo JAR do JavaFX runtime e aqueles referenciados do Oracle JRE (JDK) ou qualquer aplicativo independente que use JavaFX (por exemplo, JavaFX Scene Builder 2.0 ):
apenas certifique-se de ter o gtk 2.18 ou superior
fonte
Também respondendo a esta pergunta:
Onde posso obter bibliotecas JavaFX pré-construídas para OpenJDK (Windows)
No Linux não é realmente um problema, mas no Windows não é tão fácil, especialmente se você deseja distribuir o JRE.
Você pode usar o OpenJFX com o OpenJDK 8 no Windows, basta montá-lo você mesmo:
Baixe o OpenJDK aqui: https://github.com/AdoptOpenJDK/openjdk8-releases/releases/tag/jdk8u172-b11
Faça download do OpenJFX aqui: https://github.com/SkyLandTW/OpenJFX-binary-windows/releases/tag/v8u172-b11
copie todos os arquivos do zip OpenFX em cima do JDK, voila, você tem um OpenJDK com JavaFX.
Atualização :
Felizmente da Azul, agora existe uma compilação OpenJDK + OpenJFX que pode ser baixada na página da comunidade: https://www.azul.com/downloads/zulu-community/?&version=java-8-lts&os=windows&package=jdk-fx
fonte
Tente obuildfactory .
Há necessidade de modificar esses scripts (contém erro e não faz exatamente a "coisa" necessária), irei carregar meus scripts bifurcados da obuildfactory nos próximos dias. Portanto, também atualizarei minha resposta de acordo.
Até então, aproveite, senhor :)
fonte
De acordo com a Oracle, a integração do OpenJDK e javaFX ocorrerá no primeiro trimestre de 2014 (consulte o roteiro: http://www.oracle.com/technetwork/java/javafx/overview/roadmap-1446331.html ). Então, para a 1ª pergunta a resposta é que você tem que esperar até lá. Para a 2ª questão não há outro caminho. Então, por agora vá com java swing ou inicie javaFX e espere
fonte