Java (Português)

Status de tradução:
Esse artigo é uma tradução de
Java
. Data da última tradução: 2020-03-29. Você pode ajudar a sincronizar a tradução, se houver
alterações
na versão em inglês.
Artigos relacionados
Diretrizes de pacotes Java
Fontes do Java Runtime Environment
Do
artigo do Wikipédia
:
Java é uma linguagem de programação interpretada orientada a objetos desenvolvida na década de 90 por uma equipe de programadores chefiada por James Gosling, na empresa Sun Microsystems. Diferente das linguagens de programação convencionais, que são compiladas para código nativo, a linguagem Java é compilada para um bytecode que é interpretado por uma máquina virtual (Java Virtual Machine, mais conhecida pela sua abreviação
JVM
). A linguagem de programação Java é a linguagem convencional da Plataforma Java, mas não é a sua única linguagem.
Arch Linux oferece suporte oficial às versões de código aberto
OpenJDK
8, 11 e 17. Todas essas JVM podem ser instaladas sem conflito e alternadas entre si usando o script auxiliar
archlinux-java
. Vários outros ambientes Java estão disponíveis no
AUR
, sem suporte oficial.
Instalação
Nota
Arch Linux possui suporte oficial apenas à implementação
OpenJDK
.
Após a instalação, o ambiente Java precisará se reconhecido pelo shell (variável
$PATH
). Isso pode ser feito carregando
/etc/profile
pela linha de comando ou saindo e entrando novamente em um ambiente de desktop.
Os pacotes
common
são trazidos respectivamente como dependência, chamados de
java-runtime-common
(contendo arquivos comuns para Java Runtime Environments) e
java-environment-common
(contendo arquivos comuns para Java Development Kits).
O arquivo de ambiente fornecido
/etc/profile.d/jre.sh
aponta para um link simbólico
/usr/lib/jvm/default/bin
, definido pelo script auxiliar
archlinux-java
.
Dica
Os links
/usr/lib/jvm/default
e
/usr/lib/jvm/default-runtime
devem
sempre
ser editados com
archlinux-java
. Ele é usado para exibir e apontar para uma ambiente Java padrão em
/usr/lib/jvm/java-${VERSÃO_MAIOR_JAVA}-${NOME_FORNECEDOR}
ou um runtime do Java em
/usr/lib/jvm/java-${VERSÃO_MAIOR_JAVA}-${NOME_FORNECEDOR}/jre
.
A maioria dos executáveis da instalação do Java são fornecidos por link diretos em
/usr/bin
, enquanto outros estão disponíveis em
$PATH
. O script
/etc/profile.d/jdk.sh
não é mais fornecido por nenhum pacote.
OpenJDK
OpenJDK
é uma implementação de código aberto do Java Platform, Standard Edition (Java SE).
JRE
headless
O tempo de execução mínimo de Java - necessário para execução de programas sem GUI.
JRE completo
Ambiente de tempo de execução completo do Java - necessário para executar programa gráficos Java, depende de JRE
headless
.
JDK
Java Development Kit
- necessário para desenvolvimento em Java, depende do JRE completo.
JDK, JRE completo e JRE
headless
entram em conflito entre si, pois os pacotes menores são subconjuntos:
O JDK entra em conflito e fornece o JRE completo,
O JRE completo entra em conflito e fornece o JRE
headless
.
Versão
JRE
headless
JRE completo
JDK
Documentação
Fontes
OpenJDK 24
jre-openjdk-headless
jre-openjdk
jdk-openjdk
openjdk-doc
openjdk-src
OpenJDK 21
jre21-openjdk-headless
jre21-openjdk
jdk21-openjdk
openjdk21-doc
openjdk21-src
OpenJDK 17
jre17-openjdk-headless
jre17-openjdk
jdk17-openjdk
openjdk17-doc
openjdk17-src
OpenJDK 11
jre11-openjdk-headless
jre11-openjdk
jdk11-openjdk
openjdk11-doc
openjdk11-src
OpenJDK 8
jre8-openjdk-headless
jre8-openjdk
jdk8-openjdk
openjdk8-doc
openjdk8-src
IcedTea-Web
— Java Web Start e o plugin Java obsoleto para navegador.
https://icedtea.classpath.org/download/icedtea-web-docs/1.8/html/en/icedtea-web.html
||
icedtea-web
OpenJDK EA
— Compilação de Early-Access para versão de desenvolvimento da Oracle.
https://jdk.java.net
||
java-openjdk-ea-bin
AUR
OpenJDK GA
— Compilação de General-Availability Release do OpenDJK da Oracle.
https://jdk.java.net
||
java-openjdk-bin
AUR
OpenJDK Wakefield
— Implementação que adiciona suporte nativo para o Wayland nas ferramentas de gerenciamento de janelas.
https://openjdk.org/projects/wakefield/
||
jdk-openjdk-wakefield
AUR
OpenJFX
OpenJFX
é a implementação código aberto do
JavaFX
. Você
não precisa
instalar esse pacote se você está fazendo uso do Java SE (a implementação da Oracle do JRE e JDK, descritos abaixo). Esse pacote só interessa usuários da implementação código aberto de Java (projeto OpenJDK).
Versão
Runtime e Desenvolvimento
Documentação
Fontes
OpenJFX 22
java-openjfx
AUR
java-openjfx-doc
AUR
java-openjfx-src
AUR
OpenJFX 21
java21-openjfx
AUR
java21-openjfx-doc
AUR
java21-openjfx-src
AUR
OpenJFX 17
java17-openjfx
AUR
java17-openjfx-doc
AUR
java17-openjfx-src
AUR
OpenJFX 11
java11-openjfx
AUR
java11-openjfx-doc
AUR
java11-openjfx-src
AUR
OpenJFX 8
java8-openjfx
AUR
java8-openjfx-doc
AUR
java8-openjfx-src
AUR
Outras implementações
AWS Corretto
— Implementação da Amazon Web Services do JDK.
https://aws.amazon.com/corretto/
||
amazon-corretto-8
AUR
amazon-corretto-11
AUR
amazon-corretto-17
AUR
amazon-corretto-21-bin
AUR
Azul JDK
— Implementação da Zulu do JDK. Os builds da Azul Zulu são open source, enquanto os builds da Azul Zulu Prime são de uso comercial.
https://www.azul.com/downloads/
||
Zulu:
zulu-8-bin
AUR
zulu-11-bin
AUR
zulu-17-bin
AUR
zulu-21-bin
AUR
Zulu Prime:
zing-8-bin
AUR
jdk17-zulu-prime-bin
AUR
[
link quebrado
: package not found]
zing-21-bin
AUR
Eclipse Adoptium/Temurin
— Implementação da Eclipse do JRE/JDK, baseada na JVM Hotspot (anteriormente AdoptOpenJDK). Note que o JRE é conhecido como Eclipse Temurin.
https://adoptium.net/
||
jdk-temurin
AUR
jdk17-temurin
AUR
jdk11-temurin
AUR
IBM Certified
— IBM Semeru Runtime Certified Edition.
https://www.ibm.com/semeru-runtimes/downloads
||
jdk11-j9-bin
AUR
IBM J9
— Implementação da IBM do JRE, usando contribuições do OpenJ9.
https://www.ibm.com/support/pages/java-sdk-downloads
||
jdk8-j9-bin
AUR
jdk7-j9-bin
AUR
jdk7r1-j9-bin
AUR
Liberica JDK
— Implementação Liberica JDK da BellSoft.
https://bell-sw.com/libericajdk/
||
liberica-jre-8-full-bin
AUR
liberica-jdk-8-full-bin
AUR
liberica-jre-11-bin
AUR
liberica-jre-11-full-bin
AUR
liberica-jdk-11-bin
AUR
liberica-jdk-11-full-bin
AUR
liberica-jdk-17-full-bin
AUR
liberica-jdk-21-full-bin
AUR
Microsoft OpenJDK
— Implementação da Microsoft do JDK.
https://www.microsoft.com/openjdk/
||
microsoft-openjdk-11-bin
AUR
microsoft-openjdk-17-bin
AUR
microsoft-openjdk-21-bin
AUR
OpenJ9
— Implementação da Eclipse do JRE/JDK, baseada na JVM J9, com contribuições da IBM.
https://www.eclipse.org/openj9/
||
jdk-openj9-bin
AUR
jdk17-openj9-bin
AUR
jdk11-openj9-bin
AUR
jdk8-openj9-bin
AUR
Oracle JDK
— Build de uso comercial da Oracle do OpenJDK. Note que algumas versões só estão disponíveis via download manual, exigindo aceitar o acordo OTN e criar uma conta Oracle.
https://www.oracle.com/java/technologies/downloads/
||
JRE:
jre
AUR
jre-lts
AUR
jre11
AUR
jre8
AUR
jre7
AUR
JDK:
jdk
AUR
jdk-lts
AUR
jdk11
AUR
jdk8
AUR
jdk7
AUR
Dica
Versões de 32 bits do Java SE podem ser localizados prefixando
bin32-
, (por exemplo,
bin32-jre
AUR
. Elas usam
java32-runtime-common
AUR
, que funciona como
java-runtime-common
acrescentando
32
ao final (por exemplo,
java32
). A mesma analogia se aplica a
java32-environment-common
AUR
, que é usado somente por pacotes de JDK de 32 bits.
Ferramenta de desenvolvimento
Para ambientes de desenvolvimento integrados, veja
List of applications/Utilities#Integrated development environments
e especificamente a subseção
IDEs do Java
.
Para desencorajar reverse engineering, um ofuscador como
proguard
AUR
pode ser usado.
Descompiladores
CFR
— Descompilador Java, com suporte a recursos modernos de Java 9, 10 e além.
https://www.benf.org/other/cfr/
||
cfr
Fernflower
— Descompilador analítico para Java, desenvolvido como parte do
IntelliJ IDEA
.
https://github.com/JetBrains/intellij-community/tree/master/plugins/java-decompiler/engine
||
fernflower-git
AUR
JAD
— Descompilador Java sem manutenção (último lançamento 2006).
https://varaneckas.com/jad
||
jad
Java Decompiler (JD-Core)
— Descompilador Java popular fornecendo uma interface gráfica (veja JD-GUI) e com suporte a Java 1-10.
https://java-decompiler.github.io/
||
jd-gui
AUR
Krakatau
— Descompilador java, assembler e disassembler.
https://github.com/Storyyeller/Krakatau
||
krakatau-git
AUR
Procyon decompiler
— Descompilador java experimental, inspirado por ILSpy e Mono.Cecil.
https://bitbucket.org/mstrobel/procyon/wiki/Java%20Decompiler
||
procyon-decompiler
, GUI:
luyten
AUR
Vineflower
— Descompilador Java bifurcado a partir do Fernflower, com o objetivo de melhorar a qualidade do código. Também disponível como plugin para
IntelliJ IDEA
.
https://github.com/Vineflower/vineflower
||
vineflower
AUR
Jadx
— Descompilador de DEX para Java no Android, com GUI opcional (veja Jadx-GUI).
https://github.com/skylot/jadx
||
jadx
Interfaces Gráficas
Bytecode Viewer
— Suíte de engenharia reversa de Java, incluindo um descompilador, editor e depurador.
https://bytecodeviewer.com
||
bytecode-viewer
AUR
Recaf
— Editor moderno de bytecode Java, fácil de usar, que abstrai as complexidades de programas Java; Interface gráfica para CFR/Fernflower/Procyon.
https://www.coley.software/Recaf/
||
recaf-bin
AUR
Java Decompiler (JD-GUI)
— Popular descompilador Java que fornece uma GUI e suporta Java 1-10; Interface gráfica para JD-Core.
https://java-decompiler.github.io/
||
jd-gui
AUR
Jadx-GUI
— Descompilador de DEX para Java em APK Android, com GUI opcional; Interface gráfica para Jadx.
https://github.com/skylot/jadx
||
jadx
Luyten
— Interface gráfica open source para descompilador Java; Interface gráfica para Procyon.
https://github.com/deathmarine/Luyten
||
luyten
AUR
Alternando entre JVM
O script auxiliar
archlinux-java
fornece tais funcionalidades:
archlinux-java <COMMAND>

COMMAND:
	status		List installed Java environments and enabled one
	get		Return the short name of the Java environment set as default
	set <JAVA_ENV>	Force <JAVA_ENV> as default
	unset		Unset current default Java environment
	fix		Fix an invalid/broken default Java environment configuration
Listar ambientes Java compatíveis instalados
$ archlinux-java status
Exemplo:
$ archlinux-java status
Available Java environments:
  java-7-openjdk (default)
  java-8-openjdk/jre
Note o "
(default)
" denotando que o
java-7-openjdk
está atualmente definido como padrão. Chamar
java
e outros binários vai depender dessa instalação do Java. Também note na saída anterior que somente a parte
JRE
do OpenJDK 8 está instalada aqui.
Alterar o ambiente Java padrão
# archlinux-java set <JAVA_ENV>
Exemplo:
# archlinux-java set java-8-openjdk/jre
Dica
Para ver nomes possíveis de
<JAVA_ENV>
, use
archlinux-java status
.
Note que o
archlinux-java
não vai deixar você definir um ambiente Java inválido. No exemplo anterior,
jre8-openjdk
está instalado, mas
jdk8-openjdk
não
está, então a tentativa de definir
java-8-openjdk
vai falhar:
# archlinux-java set java-8-openjdk
'/usr/lib/jvm/java-8-openjdk' is not a valid Java environment path
Desconfigurar o ambiente Java padrão
Não há necessidade de remover a definição de um ambiente Java, pois os pacotes que os fornecem devem cuidar disso. Ainda assim, caso você queira fazê-lo, basta usar o comando
unset
:
# archlinux-java unset
Corrigir o ambiente Java padrão
Se um link inválido de ambiente Java estiver definido, executar o comando
archlinux-java fix
tenta corrigi-lo. Note também que, se nenhum ambiente Java padrão estiver configurado, isso fará com que busque outros válidos e tentará configurá-lo para você. O pacote oficialmente suportado "OpenJDK 8" será considerado primeiro nesta ordem, então, outros ambientes instalados.
# archlinux-java fix
Iniciar um aplicativo com uma versão Java não padrão
Se você quiser iniciar um aplicativo com outra versão do java do que o padrão (por exemplo, se você tiver as versões jre7 e jre8 instaladas no seu sistema), você pode chamar seu aplicativo em um pequeno script bash para alternar localmente o PATH padrão de Java. Por exemplo, se a versão padrão for jre7 e você quiser usar jre8:
#!/bin/sh 

export PATH="/usr/lib/jvm/java-8-openjdk/jre/bin/:$PATH"
exec /path/to/application "$@"
Pré-requisitos de pacote para ter suporte a archlinux-java
Nota
As informações abaixo também se aplicam a
archlinux32-java
para pacotes Java de 32 bits, com devidos acréscimos de
32
aos nome des pacote ou de executável, onde aplicável.
Esta seção é direcionada ao empacotador disposto a fornecer pacotes no
AUR
para uma JVM alternativa e que possa se integrar ao esquema JVM do Arch Linux para usar o
archlinux-java
. Para fazer isso, os pacotes devem:
Colocar todos os arquivos sob
/usr/lib/jvm/java-${VERSÃO_MAIOR_JAVA}-${NOME_FORNECEDOR}
Certifique-se de que todos os executáveis para os quais
java-runtime-common
e
java-environment-common
fornecem links estejam disponíveis no pacote correspondente
Forneça links de
/usr/bin
para os executáveis somente se esses links não já pertencerem a
java-runtime-common
e
java-environment-common
Acrescente ao final das páginas man
-${NOME_FORNECEDOR}${VERSÃO_MAIOR_JAVA}
para evitar conflitos (veja a
lista de arquivos do jre8-openjdk
no qual as páginas man recebem, ao final de seu nome,
-openjdk8
)
Não declare qualquer
conflicts
ou
replaces
com outras JDKs,
java-runtime
,
java-runtime-headless
ou
java-environment
Use o script
archlinux-java
em
funções do .install
para configurar o ambiente Java como padrão
Se nenhum outro ambiente Java válido estiver definido
(ie: o pacote não deve
forçar
a instalação como padrão). Veja
fontes de pacote de ambiente Java suportadas oficialmente
para exemplos
Note também que:
Pacotes que precisam de
qualquer
ambiente Java devem declarar a dependência a
java-runtime
,
java-runtime-headless
ou
java-environment
Pacotes que precisam de um
fornecedor Java específico
devem declarar a dependência no pacote correspondente
Pacotes OpenJDK agora declaram
provides="java-runtime-openjdk=${pkgver}"
etc. Isso permite que um pacote de terceiro declare dependência em um OpenJDK sem especificar uma versão
Solução de problemas
MySQL
Devido ao fato de que os drivers JDBC costumam usar a porta no URL para estabelecer uma conexão com o banco de dados, ele é considerado "remoto" (ou seja, o MySQL não escuta a porta de acordo com suas configurações padrão), apesar do fato de que eles estão possivelmente executando no mesmo host. Assim, para usar JDBC e MySQL, você deve habilitar o acesso remoto ao MySQL, seguindo as instruções em
MariaDB#Grant remote access
.
IntelliJ IDEA
Se Intellij IDEA apresentou
The selected directory is not a valid home for JDK
com o caminho Java SDK do sistema, você pode ter que instalar um pacote JDK diferente e selecioná-lo como JDK do IntelliJ.
Personificar outro gerenciador de janela
Você pode usar o
wmname
do
suckless.org
para fazer a JVM acreditar que você está executando em um gerenciador de janela diferente. Isso pode resolver um problema de renderização das GUIs Java ocorrendo em gerenciadores de janela, como o
Awesome
,
Dwm
ou
Ratpoison
. Tente definir "compiz" ou "LG3D"
$ wmname compiz
Você deve reiniciar o aplicativo em questão após executar o comando wmname.
Isso funciona porque a JVM contém uma lista codificada de gerenciadores de janela
non-re-parenting
(que não registram novas janelas como de topo de nível) conhecidos. Para a máxima ironia, alguns usuários preferem personificar
LG3D
, o gerenciador de janela
non-re-parenting
escrito pela Sun, em Java
.
Fontes ilegíveis
Além das sugestões mencionadas abaixo em
#Melhor renderização de fonte
, algumas fontes ainda pode não estar legíveis depois. Se esse for o caso, há uma grande chance das fontes da Microsoft estarem sendo usadas. Instale
ttf-ms-fonts
AUR
.
Faltando texto em alguns aplicativos
Se alguns aplicativos estão faltando textos completos, pode ajudar a usar as opções em
#Dicas e truques
como sugerido em
FS#40871
.
Janela cinza, aplicações sem redimensionamento com o WM, menus fechando imediatamente
O kit de ferramentas padrão de GUI do Java possui uma lista codificada de gerenciadores de janela "
não-reparenting
". Se estiver usando um que não esteja nessa lista, pode haver alguns problemas com a execução de alguns aplicativos Java. Um dos problemas mais comuns é "blobs cinzas", quando o aplicativo Java se renderiza como uma caixa cinzenta simples em vez de renderizar a interface gráfica esperada. Outro pode ser menus respondendo ao seu clique, mas fechando imediatamente.
Há várias coisas que podem ajudar:
Para
jre8-openjdk
, acrescente a linha
export _JAVA_AWT_WM_NONREPARENTING=1
em
/etc/profile.d/jre.sh
. Então,
carregue
o arquivo
/etc/profile.d/jre.sh
ou encerre a sessão e incie-a novamente.
Para a última versão do JDK, acrescente a line
export AWT_TOOLKIT=MToolkit
em
~/.xinitrc
antes do exec do gereciador de janela.
Também, você pode tentar usar
wmname
com a linha
wmname compiz
em seu
~/.xinitrc
.
Para JRE/JDK da Oracle, use
SetWMName
. Porém, seu efeito pode ser cancelado ao usar também
XMonad.Hooks.EwmhDesktops
. Neste caso, acrescentar
>> setWMName "LG3D"
ao
LogHook
pode ajudar.
Veja
[1]
para mais informações.
Sistema congela ao depurar aplicativos JavaFX
Se o seu sistema congela durante a depuração de um aplicativo JavaFX, você pode tentar fornecer a opção JVM
-Dsun.awt.disablegrab=true
.
Veja
https://bugs.java.com/bugdatabase/view_bug?bug_id=6714678
Construtor MediaPlayer do JavaFX lança uma exceção
Criar uma instância da classe MediaPlayer dos módulos de som do JavaFX pode lançar a seguinte exceção (ambos Oracle JDK e OpenJDK)
... (i.e. FXMLLoader construction exceptions) ...
Caused by: MediaException: UNKNOWN : com.sun.media.jfxmedia.MediaException: Could not create player! : com.sun.media.jfxmedia.MediaException: Could not create player!
 at javafx.scene.media.MediaException.exceptionToMediaException(MediaException.java:146)
 at javafx.scene.media.MediaPlayer.init(MediaPlayer.java:511)
 at javafx.scene.media.MediaPlayer.<init>(MediaPlayer.java:414)
 at <constructor call>
...
que resulta em algumas incompatibilidades de JavaFX com compilação moderna do
ffmpeg
entregada no repositório do Arch Linux.
Uma solução que funciona é instalar
ffmpeg-compat-55
AUR
.
Veja
https://www.reddit.com/r/archlinux/comments/70o8o6/using_a_javafx_mediaplayer_in_arch/
Aplicativos Java não podem abrir links externos
Se um aplicativo Java não for capaz de abrir um link para, por exemplo seu navegador web, instale
gvfs
. Isso é necessário pelo método Desktop.Action.BROWSE. Veja
[2]
Erro ao inicializar QuantumRenderer: no suitable pipeline found
Possíveis problemas / soluções:
GTK2 está em falta. Instale
gtk2
AUR
OpenJFX está em falta. Instale
java-openjfx
AUR
Dicas e truques
Nota
As sugestões nesta seção são aplicáveis a todos os aplicativos, usando o
runtime
do Java instalado explicitamente (externo). Alguns aplicativos são agrupados com
runtime
próprio (privado) ou usam mecanismos próprios para GUI, renderização de fontes, etc., portanto, nenhum dos itens escritos abaixo é garantido de funcionar.
O comportamento da maioria dos aplicativos Java pode ser controlado fornecendo variáveis pré-definidas para o tempo de execução Java. Desta
publicação do fórum
, uma maneira de fazê-lo consiste em adicionar a seguinte linha no seu
~/.bashrc
(ou
/etc/profile.d/jre.sh
para afetar programas que não são executados
carregando
~/.bashrc
, por exemplo, ao iniciar um programa a partir da visão de aplicativos do GNOME):
export _JAVA_OPTIONS="-D
<opção 1>
-D
<opção 2>
..."
Por exemplo, para usar fontes
anti-alias
do sistema e fazer o
swing
usar a aparência do GTK:
export _JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=on -Dswing.aatext=true -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel'
Melhor renderização de fonte
As implementações de código fechado e de código aberto de Java são conhecidas por implementar incorretamente o
anti-aliasing
de fontes. Isso pode ser corrigido com as seguintes opções:
-Dawt.useSystemAAFontSettings=on
,
-Dswing.aatext=true
Veja
Fontes do Java Runtime Environment
para informações mais detalhadas.
Silenciar mensagem 'Picked up _JAVA_OPTIONS' na linha de comando
Definir as variáveis de ambiente _JAVA_OPTIONS faz com que java (openjdk) escreva para
stderr
as mensagens da forma: 'Picked up _JAVA_OPTIONS = ...'. Para suprimir essas mensagens em seu terminal, você pode desmarcar a variável de ambiente nos arquivos de inicialização de shell e fazer um alias do java para passar as mesmas opções como argumentos de linha de comando:
_SILENT_JAVA_OPTIONS="$_JAVA_OPTIONS"
unset _JAVA_OPTIONS
alias java='java "$_SILENT_JAVA_OPTIONS"'
Visual GTK
Se seus programas Java estão com aparência ruim, você pode querer configurar a aparência padrão para componentes
swing
:
swing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel
.
Alguns programas Java insistem em usar a aparência multiplataforma Metal. Em alguns casos você pode forçar esses aplicativos a usar o visual do GTK definindo a propriedade a seguir:
swing.crossplatformlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel
.
Suporte a GTK3
Nos lançamentos de Java anteriores à versão 9, o visual GTK é vinculado ao GTK2, enquanto muitos aplicativos de desktop mais recentes usam o GTK3. Essa incompatibilidade entre as versões do GTK pode interromper os aplicativos que utilizam os plug-ins Java com a GUI, já que a mixagem do GTK2 e do GTK3 no mesmo processo não é suportada (por exemplo, o LibreOffice 5.0).
Desde
Java 9
, o GTK LookAndFeel pode ser executado nas versões GTK
2
,
2.2
e
3
, padronizando para GTK2. Isso pode ser substituído definindo a seguinte propriedade:
jdk.gtk.version=3
Melhor desempenho 2D
Alternar para o pipeline de aceleração de hardware baseado em OpenGL melhorará o desempenho em 2D
export _JAVA_OPTIONS='-Dsun.java2d.opengl=true'
Nota
Habilitar essa opção pode fazer com que a interface do usuário de software, como os IDEs do JetBrains, se comporte mal, fazendo com que eles desenhem janelas, pop-ups e barras de ferramentas parcialmente.
Veja também
Introdução à Programação Usando o Java