Difference between revisions of "Java (Italiano)"

From ArchWiki
Jump to: navigation, search
m (Piccole correzioni e allineamento)
(Allineamento versione inglese.)
(22 intermediate revisions by 4 users not shown)
Line 1: Line 1:
[[Category:HOWTOs (Italiano)]]
+
[[Category:Programming language (Italiano)]]
[[Category:Development (Italiano)]]
+
[[cs:Java]]
{{i18n|Java}}
+
[[en:Java]]
 +
[[es:Java]]
 +
[[fr:Java]]
 +
[[pt:Java]]
 +
[[ru:Java]]
 +
[[tr:Java]]
 +
{{Article summary start}}
 +
{{Article summary text|This article explains how to install and configure JRE/JDK.}}
 +
{{Article summary heading|Related}}
 +
{{Article summary wiki|Java Package Guidelines}}
 +
{{Article summary end}}
  
"''Java è un linguaggio di programmazione originariamente sviluppato da Sun Microsystems e rilasciato nel 1995 come componente centrale della piattaforma Java della Sun Microsystems. Il linguaggio deriva gran parte della sua sintassi dal C e dal C++ ma ha un modello a oggetti più semplice e una minore quantità di ottimizzazioni a basso livello. Le applicazioni Java sono tipicamente compilate in bytecode che può essere eseguito su qualsiasi Java Virtual Machine (JVM) indipendentemente dall'architettura hardware.''" — [[Wikipedia:Java (programming language)]]
+
"''Java è un linguaggio di programmazione originariamente sviluppato da Sun Microsystems e rilasciato nel 1995 come componente centrale della piattaforma Java della Sun Microsystems. Il linguaggio deriva gran parte della sua sintassi dal C e dal C++ ma ha un modello a oggetti più semplice e una minore quantità di ottimizzazioni a basso livello. Le applicazioni Java sono tipicamente compilate in bytecode che può essere eseguito su qualsiasi Java Virtual Machine (JVM) indipendentemente dall'architettura hardware.''" — [[Wikipedia:Java (programming language)|Wikipedia article]]
  
 
==Installazione==
 
==Installazione==
Ci sono due Java Virtual Machine nei repository di Arch che possono essere installate sul sistema — l'implementazione open source OpenJDK e l'implementazione a codice chiuso della Sun. Arch raccomanda [http://openjdk.java.net/ OpenJDK]. Altre implementazioni di Java sono disponibili in AUR.
+
L'unica Java Virtual Machine nei repository supportati di Arch è l'implementazione open source [http://openjdk.java.net/ OpenJDK]. Altre implementazioni di Java sono disponibili in AUR. Si ricordi che le versioni open-source e closed-source non possono essere installate contemporaneamente. La versione open-source è quasi perfetta allo sviluppo attuale e non ci sono motivi rilevanti per voler installare la versione proprietaria di Oracle.
 +
 
 +
{{Nota|Dopo l'installazione l'ambiente Java deve essere riconosciuto dalla shell (la variabile {{Ic|$PATH}} e {{Ic|$JAVA_HOME}} devono essere aggiornate). Questo può essere fatto dalla linea di comando eseguendo il comando source sul file {{Ic|/etc/profile}}; oppure, per gli ambienti Desktop, sarà sufficiente uscire e rientrare dalla propria sessione di lavoro (logout/login).}}
  
 
===OpenJDK JVM===
 
===OpenJDK JVM===
Per essere in grado di eseguire programmi Java, è possibile installare OpenJDK dai repository. Questa installa anche il kit di sviluppo per Java.
+
Per essere in grado di eseguire programmi Java, è possibile installare il [[Wikipedia:JRE|Java runtime]] attraverso il pacchetto {{Pkg|jre7-openjdk}} disponibile nei [[Official Repositories|repository ufficiali]]. È anche disponibile un [[Wikipedia:JDK|Java Development Kit]] installabile attraverso il pacchetto {{Pkg|jdk7-openjdk}}.  
  
# pacman -Syu openjdk6
+
Per chi fosse interessato alla precedente versione di Java (Java 6), è possibile installare sia il JRE che il JDK attraverso il solo pacchetto {{Pkg|openjdk6}}.
  
Sarà probabilmente necessario installare il pacchetto {{Package Official|icedtea-web}} per utilizzare le funzionalità di Java in Firefox. Il suggerimento proviene da questo thread: https://bbs.archlinux.org/viewtopic.php?pid=895343
+
Sarà probabilmente necessario installare il pacchetto {{Pkg|icedtea-web-java7}} per utilizzare le funzionalità di Java negli web browsers ([[Wikipedia:Java applet|Java applets]] e [[Wikipedia:Java Web Start|Java Web Start]]). Per altri dettagli si legga [[Browser Plugins#Java (IcedTea)]].
  
# pacman -Syu icedtea-web
+
==== Segnalare i pacchetti OpenJDK come out-of-date ====
 
+
I pacchetti {{Pkg|openjdk6}}, {{Pkg|jre7-openjdk-headless}}, {{Pkg|jre7-openjdk}} e {{Pkg|jdk7-openjdk}} vanno segnalati come out-of-date in base alla loro [http://icedtea.wildebeest.org/download/source versione IcedTea] (2.3.4) e non in base alla loro versione Oracle (u9).
{{Note | Se si riscontra un qualsiasi problema con il plugin Java, si può tentare di applicare la soluzione suggerita per il plugin Flash di Firefox: [[Flash#Plugins_are_installed_but_not_working]]}}
+
Si fa inoltre notare che i progetti IcedTea-web (ovvero i pacchetti {{Pkg|icedtea-web}} e {{Pkg|icedtea-web-java7}}) hanno una numerazione di versione differente da quelli IcedTea (ovvero i pacchetti {{Pkg|openjdk6}}, {{Pkg|jre7-openjdk-headless}}, {{Pkg|jre7-openjdk}} e {{Pkg|jdk7-openjdk}}). Quindi si prega di segnalare ogni pacchetto in base al corretto numero di versione.
{{Note | Nel caso di utilizzo di un window manager non-reparenting, è necessario decommentare la corrispondente riga in {{filename|/etc/profile.d/openjdk6.sh}}}}
+
  
 
===Oracle JVM===
 
===Oracle JVM===
  
{{Note|Arch Linux (ed ogni altra distribuzione GNU/Linux) non possono più creare pacchetti dell'implementazione Oracle di Java. Si legga [http://mailman.archlinux.org/pipermail/arch-general/2011-August/021671.html qui] per l'annuncio. In sostituzione alla Oracle JVM, si può installare ''openjdk6'' dal repository [extra] o usare ''jre'' o ''jre6'' dal repository [[AUR]].<br/>
+
Prima del [https://mailman.archlinux.org/pipermail/arch-general/2011-August/021671.html ritiro dell'Oracle DLJ], era possibile installare semplicemente i pacchetti {{Ic|jre}} e {{Ic|jdk}} dai repository. In ogni caso, Arch Linux (e altre distribuzioni GNU/Linux) non possono più creare pacchetti dell'implementazione Java di Oracle. I pacchetti raccomandati per svolgere i compiti di {{Ic|java-runtime}} e {{Ic|java-environment}} sono quelli di OpenJDK.
Il resto di questa sezione viene mantenuto solo a scopo informativo.}}
+
  
Per essere in grado di eseguire programmi Java, è possibile installare la JRE della Oracle dai repository:
+
I pacchetti dell'implementazione Oracle di Java possono essere installati dal repository AUR: {{AUR|jre}} e {{AUR|jdk}}.
# pacman -Syu jre
+
  
Per utilizzare il comando java è necessario effettuare il logout e un nuovo login, oppure aggiungere {{Filename|/opt/java/jre/bin/}} a $PATH.
+
=== Oracle JVM (Java 6) ===
  
Per creare programmi Java, è possibile installare il JDK della Oracle dai repository:
+
AUR contiene i pacchetti per {{AUR|jre6}} e {{AUR|jdk6}} che costituiscono l'implementazione di Oracle per Java SE 6. Questi pacchetti creano però conflitti con altre installazioni di Java e quindi sono presenti anche {{AUR|jre6-compat}} e {{AUR|jdk6-compat}}, i quali garantiscono la compresenza di più installazioni.
  # pacman -Syu jdk
+
  
{{Note | Se si riscontra un qualsiasi problema con il plugin Java, si può tentare di applicare la soluzione suggerita per il plugin Flash di Firefox: [[Flash#Plugins_are_installed_but_not_working]]}}
+
===Kaffe (non più mantenuto)===
{{Note|Per Java della Oracle, è necessario eseguire il source di {{Filename|/etc/profile}} in modo da far puntare il percorso in JAVA_HOME alla posizione corretta}}
+
[http://www.kaffe.org/ Kaffe] è un'altra implementazione "clean-room" della Java Virtual Machine senza l'ufficiale approvazione di Sun/Oracle. Una pacchetto [[git]] di Kaffe può essere trovato in [[AUR]]: {{AUR|kaffe-git}}. La Virtual Machine Kaffe è distribuita secondo i termini della licenza GPL.
# source /etc/profile
+
 
+
===Apache Harmony===
+
[http://harmony.apache.org/ Apache Harmony] è una re-implementazione del linguaggio Java secondo un approccio "clean-room" e si presenta sotto la licenza Free Apache. Una redistribuzione del [http://aur.archlinux.org/packages.php?ID=51548 Harmony JRE] può essere trovata in AUR.
+
 
+
===Kaffe===
+
[http://www.kaffe.org/ Kaffe] è un'altra implementazione "clean-room" della Java Virtual Machine senza l'ufficiale approvazione di Sun/Oracle. Una pacchetto [[git]] di Kaffe può essere trovato in [https://aur.archlinux.org/packages.php?ID=50282 AUR]. La Virtual Machine Kaffe è distribuita secondo i termini della licenza GPL.
+
  
 
===BEA JRockit JIT JVM (+JDK)===
 
===BEA JRockit JIT JVM (+JDK)===
E' possibile anche installare la versione JIT di Java da [[AUR]].
+
[[Wikipedia:JRockit|JRockit]] è la versione JIT di Java fornita da Oracle ed è disponibile su AUR: {{AUR|jrockit}}.
[http://aur.archlinux.org/packages.php?ID=11190 jrockit]
+
  
 
===VMkit LLVM-based JIT VM===
 
===VMkit LLVM-based JIT VM===
[http://vmkit.llvm.org/index.html VMkit] è un framework basato su LLVM per macchine virtuali JIT. J3 è una JVM eseguita su VMkit. In [http://aur.archlinux.org/packages.php?ID=51206 AUR] è possibile trovare una build deprecata di VMkit. J3 dipende dalle librerie GNU classpath, ma potrebbe anche funzionare con le librerie classpath di Apache.
+
[http://vmkit.llvm.org/index.html VMkit] è un framework basato su LLVM per macchine virtuali JIT. J3 è una JVM eseguita su VMkit. In [[AUR]] è possibile trovare una build deprecata di VMkit: {{AUR|vmkit-svn}}. J3 dipende dalle librerie GNU classpath, ma potrebbe anche funzionare con le librerie classpath di Apache.
  
 
===Parrot VM===
 
===Parrot VM===
[http://www.archlinux.org/packages/?q=parrot Parrot VM] offre uno sperimentale [http://trac.parrot.org/parrot/wiki/Languages supporto per Java] attraverso due differenti metodi: o come [http://code.google.com/p/parrot-jvm/ traduttore di bytecode della Java VM], o come un [https://github.com/chrisdolan/perk compilatore Java] avente come obiettivo la Parrot VM.
+
[https://www.archlinux.org/packages/?q=parrot Parrot VM] offre uno sperimentale [http://trac.parrot.org/parrot/wiki/Languages supporto per Java] attraverso due differenti metodi: o come [http://code.google.com/p/parrot-jvm/ traduttore di bytecode della Java VM], o come un [https://github.com/chrisdolan/perk compilatore Java] avente come obiettivo la Parrot VM. È possibile installare Parrot VM attraverso AUR: {{AUR|parrot-git}}.
  
===Audio Java con Pulseaudio===
+
==Risoluzione problemi==
Normalmente, Java e [[Pulseaudio]] non convivono molto bene l'uno con l'altro, ma questo problema è facilmente risolvibile usando padsp.
+
 
 +
===MySQL===
 +
A causa del fatto che i JDBC-drivers usano spesso la porta nell'URL per stabilire una connessione col database, quest'ultimo viene considerato "remoto" nonostante JDBC e MySQL possano essere in esecuzione sullo stesso host (ad esempio: MySQL non è in ascolto di connessioni "remote" con la sua configurazione di default). Quindi, per usare JDBC e MySQL, si dovrebbe abilitare l'accesso remoto a MySQL seguendo le istruzioni nella [[MySQL#Enable remote access|pagina su MySQL]] dell'ArchWiki.
 +
 
 +
===Audio applicazioni Java con Pulseaudio===
 +
{{Nota | Questa procedura è utile solo per versioni precedenti di Java (Java 6).}}
 +
Di default Java e [[Pulseaudio]] non convivono molto bene l'uno con l'altro, ma questo problema è facilmente risolvibile usando padsp.
  
 
(Questi percorsi sono corretti per Java della Sun, è necessario cambiarli per OpenJDK)
 
(Questi percorsi sono corretti per Java della Sun, è necessario cambiarli per OpenJDK)
  
Per prima cosa, rinominare l'eseguibile {{filename|java}} in {{filename|java.bin}}
+
Per prima cosa, rinominare l'eseguibile {{Ic|java}} in {{Ic|java.bin}}
 
  # mv /opt/java/jre/bin/java /opt/java/jre/bin/java.bin
 
  # mv /opt/java/jre/bin/java /opt/java/jre/bin/java.bin
Successivamente, creare un nuovo script di esecuzione in {{filename|/opt/java/jre/bin/java}}
+
Successivamente, creare un nuovo script di esecuzione in {{Ic|/opt/java/jre/bin/java}}
 
  #!/bin/sh
 
  #!/bin/sh
 
  padsp /opt/java/jre/bin/java.bin "$@"
 
  padsp /opt/java/jre/bin/java.bin "$@"
Infine rendere lo script di esecuzione eseguibile
+
Infine rendere lo script eseguibile
 
  # chmod +x /opt/java/jre/bin/java
 
  # chmod +x /opt/java/jre/bin/java
 
E' necessario ripetere questa procedura ad ogni aggiornamento di Java.
 
E' necessario ripetere questa procedura ad ogni aggiornamento di Java.
  
E' anche possibile provare a sostituire padsp con aoss, che può risolvere il problema anche in Alsa così come in Pulse, scegliere la soluzione che funziona meglio. E' necessario avvisare che questi hack qualche volta funzionano perfettamente ma a volte possono essere anche molto instabili.
+
E' anche possibile provare a sostituire padsp con aoss, che può risolvere il problema anche in Alsa così come in Pulse: scegliere la soluzione che funziona meglio. E' necessario avvisare che questi hack qualche volta funzionano perfettamente ma a volte possono essere anche molto instabili.
  
==Note aggiuntive==
+
=== Usare un altro Window Manager ===
 +
Usando {{pkg|wmname}} da [http://tools.suckless.org/wmname  suckless.org] è possibile ingannare la JVM sul window manager in uso. Questo può risolvere dei problemi di visualizzazione delle Java GUI che si presentano con l'utilizzo di window manager come [[Awesome]] o [[Dwm]].
  
===MySQL===
+
<pre>$ wmname LG3D</pre>
A causa del fatto che i JDBC-drivers usano spesso la porta nell'URL per stabilire una connessione col database, quest'ultimo viene considerato "remoto" nonostante JDBC e MySQL possano essere in esecuzione sullo stesso host (ad esempio: MySQL non è in ascolto di connessioni "remote" con la sua configurazione di default). Quindi, per usare JDBC e MySQL, si deve modificare il file {{filename|/etc/mysql/my.cnf}} e decommentare la linea:
+
 
      skip-networking
+
(È necessario riavviare l'applicazione in questione dopo aver eseguito il comando wmname.)
 +
 
 +
Questa soluzione è efficace in quanto la JVM contiene una lista "hard-coded" di window manager non-reparenting noti. Per il massimo dell'ironia, molti utenti preferiscono utilizzare con wmname il window manager non-reparenting [http://en.wikipedia.org/wiki/Project_Looking_Glass scritto da Sun]: <code>LG3D</code>.
 +
 
 +
{{Note| Alternativamente si può anche decommentare la linea corrispondente nello script '''openjdk6.sh''' (chiamato a volte anche '''jre.sh''') che si trova in {{Ic|/etc/profile.d/}}.}}
 +
 
 +
=== I font sono illeggibili ===
 +
Nonostante l'applicazione dei consigli più in basso ([[https://wiki.archlinux.org/index.php/Java#Better_font_rendering| tips and tricks]]), alcuni font potrebbero ancora non essere leggibili. In questo caso si può provare a installare {{AUR|ttf-ms-fonts}} da AUR.
 +
 
 +
==Trucchi e consigli==
 +
{{Nota | I suggerimenti in questa sezione sono applicabili a tutte le applicazioni che usano un JRE esplicitamente installato (esterno all'applicazione). Alcune applicazioni vengono impacchettate con il proprio runtime o usano delle meccaniche proprie per l'interfaccia grafica, il rendering dei font, ecc. Quindi non è garantito che i suggerimenti funzionino sempre.}}
 +
 
 +
Il comportamento di molte applicazioni Java può essere controllato fornendo delle variabili predefinite al JRE. Da [https://bbs.archlinux.org/viewtopic.php?id=72892 questo post] del forum, si può vedere che un modo di fare questo consiste nell'aggiungere le seguenti linee nel proprio {{Ic|~/.bashrc}} (oppure in {{Ic|/etc/profile.d/jre.sh}} per avere influenza su tutti gli utenti):
 +
 
 +
export _JAVA_OPTIONS="-D'''<option 1>''' -D'''<option 2>'''..."
 +
 
 +
Ad esempio, per usare i font del sistema dotati di anti-aliasing e per far sì che swing usi il "look and feel" GTK si può usare:
 +
 
 +
export _JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=on -Dswing.aatext=true -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel'
 +
 
 +
 +
=== Miglioramento del font rendering ===
 +
 
 +
Sia l'implementazione closed-source, sia quella open-source di Java sono note avere un'implementazione impropria  dell'antialiasing dei font. Questo può essere risolto attraverso le seguenti opzioni: {{Ic|1=awt.useSystemAAFontSettings=on}}, {{Ic|1=swing.aatext=true}}
 +
 
 +
===GTK LookAndFeel===
 +
 
 +
La grafica delle applicazioni che utilizzano Java potrebbe apparire sgradevole. In tal caso si potrebbe voler impostare diversamente il "look and feel" predefinito dei componenti swing: {{Ic|1=swing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel}}.
  
[https://wiki.archlinux.org/index.php/MySQL Si legga la pagina su MySQL per maggiori informazioni.]
+
Alcune applicazioni potrebbero ostinarsi ad usare il "look and feel" multipiattaforma chiamato Metal. In questi casi si può forzare l'applicazione ad usare il "look and feel" GTK con il seguente comando:{{Ic|1=swing.crossplatformlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel}}.

Revision as of 19:28, 2 February 2013

Template:Article summary start Template:Article summary text Template:Article summary heading Template:Article summary wiki Template:Article summary end

"Java è un linguaggio di programmazione originariamente sviluppato da Sun Microsystems e rilasciato nel 1995 come componente centrale della piattaforma Java della Sun Microsystems. Il linguaggio deriva gran parte della sua sintassi dal C e dal C++ ma ha un modello a oggetti più semplice e una minore quantità di ottimizzazioni a basso livello. Le applicazioni Java sono tipicamente compilate in bytecode che può essere eseguito su qualsiasi Java Virtual Machine (JVM) indipendentemente dall'architettura hardware." — Wikipedia article

Installazione

L'unica Java Virtual Machine nei repository supportati di Arch è l'implementazione open source OpenJDK. Altre implementazioni di Java sono disponibili in AUR. Si ricordi che le versioni open-source e closed-source non possono essere installate contemporaneamente. La versione open-source è quasi perfetta allo sviluppo attuale e non ci sono motivi rilevanti per voler installare la versione proprietaria di Oracle.

Nota: Dopo l'installazione l'ambiente Java deve essere riconosciuto dalla shell (la variabile $PATH e $JAVA_HOME devono essere aggiornate). Questo può essere fatto dalla linea di comando eseguendo il comando source sul file /etc/profile; oppure, per gli ambienti Desktop, sarà sufficiente uscire e rientrare dalla propria sessione di lavoro (logout/login).

OpenJDK JVM

Per essere in grado di eseguire programmi Java, è possibile installare il Java runtime attraverso il pacchetto jre7-openjdk disponibile nei repository ufficiali. È anche disponibile un Java Development Kit installabile attraverso il pacchetto jdk7-openjdk.

Per chi fosse interessato alla precedente versione di Java (Java 6), è possibile installare sia il JRE che il JDK attraverso il solo pacchetto openjdk6.

Sarà probabilmente necessario installare il pacchetto icedtea-web-java7 per utilizzare le funzionalità di Java negli web browsers (Java applets e Java Web Start). Per altri dettagli si legga Browser Plugins#Java (IcedTea).

Segnalare i pacchetti OpenJDK come out-of-date

I pacchetti openjdk6, jre7-openjdk-headless, jre7-openjdk e jdk7-openjdk vanno segnalati come out-of-date in base alla loro versione IcedTea (2.3.4) e non in base alla loro versione Oracle (u9). Si fa inoltre notare che i progetti IcedTea-web (ovvero i pacchetti icedtea-web e icedtea-web-java7) hanno una numerazione di versione differente da quelli IcedTea (ovvero i pacchetti openjdk6, jre7-openjdk-headless, jre7-openjdk e jdk7-openjdk). Quindi si prega di segnalare ogni pacchetto in base al corretto numero di versione.

Oracle JVM

Prima del ritiro dell'Oracle DLJ, era possibile installare semplicemente i pacchetti jre e jdk dai repository. In ogni caso, Arch Linux (e altre distribuzioni GNU/Linux) non possono più creare pacchetti dell'implementazione Java di Oracle. I pacchetti raccomandati per svolgere i compiti di java-runtime e java-environment sono quelli di OpenJDK.

I pacchetti dell'implementazione Oracle di Java possono essere installati dal repository AUR: jreAUR e jdkAUR.

Oracle JVM (Java 6)

AUR contiene i pacchetti per jre6AUR e jdk6AUR che costituiscono l'implementazione di Oracle per Java SE 6. Questi pacchetti creano però conflitti con altre installazioni di Java e quindi sono presenti anche jre6-compatAUR e jdk6-compatAUR, i quali garantiscono la compresenza di più installazioni.

Kaffe (non più mantenuto)

Kaffe è un'altra implementazione "clean-room" della Java Virtual Machine senza l'ufficiale approvazione di Sun/Oracle. Una pacchetto git di Kaffe può essere trovato in AUR: kaffe-gitAUR. La Virtual Machine Kaffe è distribuita secondo i termini della licenza GPL.

BEA JRockit JIT JVM (+JDK)

JRockit è la versione JIT di Java fornita da Oracle ed è disponibile su AUR: jrockitAUR.

VMkit LLVM-based JIT VM

VMkit è un framework basato su LLVM per macchine virtuali JIT. J3 è una JVM eseguita su VMkit. In AUR è possibile trovare una build deprecata di VMkit: vmkit-svnAUR. J3 dipende dalle librerie GNU classpath, ma potrebbe anche funzionare con le librerie classpath di Apache.

Parrot VM

Parrot VM offre uno sperimentale supporto per Java attraverso due differenti metodi: o come traduttore di bytecode della Java VM, o come un compilatore Java avente come obiettivo la Parrot VM. È possibile installare Parrot VM attraverso AUR: parrot-gitAUR.

Risoluzione problemi

MySQL

A causa del fatto che i JDBC-drivers usano spesso la porta nell'URL per stabilire una connessione col database, quest'ultimo viene considerato "remoto" nonostante JDBC e MySQL possano essere in esecuzione sullo stesso host (ad esempio: MySQL non è in ascolto di connessioni "remote" con la sua configurazione di default). Quindi, per usare JDBC e MySQL, si dovrebbe abilitare l'accesso remoto a MySQL seguendo le istruzioni nella pagina su MySQL dell'ArchWiki.

Audio applicazioni Java con Pulseaudio

Nota: Questa procedura è utile solo per versioni precedenti di Java (Java 6).

Di default Java e Pulseaudio non convivono molto bene l'uno con l'altro, ma questo problema è facilmente risolvibile usando padsp.

(Questi percorsi sono corretti per Java della Sun, è necessario cambiarli per OpenJDK)

Per prima cosa, rinominare l'eseguibile java in java.bin

# mv /opt/java/jre/bin/java /opt/java/jre/bin/java.bin

Successivamente, creare un nuovo script di esecuzione in /opt/java/jre/bin/java

#!/bin/sh
padsp /opt/java/jre/bin/java.bin "$@"

Infine rendere lo script eseguibile

# chmod +x /opt/java/jre/bin/java

E' necessario ripetere questa procedura ad ogni aggiornamento di Java.

E' anche possibile provare a sostituire padsp con aoss, che può risolvere il problema anche in Alsa così come in Pulse: scegliere la soluzione che funziona meglio. E' necessario avvisare che questi hack qualche volta funzionano perfettamente ma a volte possono essere anche molto instabili.

Usare un altro Window Manager

Usando wmname da suckless.org è possibile ingannare la JVM sul window manager in uso. Questo può risolvere dei problemi di visualizzazione delle Java GUI che si presentano con l'utilizzo di window manager come Awesome o Dwm.

$ wmname LG3D

(È necessario riavviare l'applicazione in questione dopo aver eseguito il comando wmname.)

Questa soluzione è efficace in quanto la JVM contiene una lista "hard-coded" di window manager non-reparenting noti. Per il massimo dell'ironia, molti utenti preferiscono utilizzare con wmname il window manager non-reparenting scritto da Sun: LG3D.

Note: Alternativamente si può anche decommentare la linea corrispondente nello script openjdk6.sh (chiamato a volte anche jre.sh) che si trova in /etc/profile.d/.

I font sono illeggibili

Nonostante l'applicazione dei consigli più in basso ([tips and tricks]), alcuni font potrebbero ancora non essere leggibili. In questo caso si può provare a installare ttf-ms-fontsAUR da AUR.

Trucchi e consigli

Nota: I suggerimenti in questa sezione sono applicabili a tutte le applicazioni che usano un JRE esplicitamente installato (esterno all'applicazione). Alcune applicazioni vengono impacchettate con il proprio runtime o usano delle meccaniche proprie per l'interfaccia grafica, il rendering dei font, ecc. Quindi non è garantito che i suggerimenti funzionino sempre.

Il comportamento di molte applicazioni Java può essere controllato fornendo delle variabili predefinite al JRE. Da questo post del forum, si può vedere che un modo di fare questo consiste nell'aggiungere le seguenti linee nel proprio ~/.bashrc (oppure in /etc/profile.d/jre.sh per avere influenza su tutti gli utenti):

export _JAVA_OPTIONS="-D<option 1> -D<option 2>..."

Ad esempio, per usare i font del sistema dotati di anti-aliasing e per far sì che swing usi il "look and feel" GTK si può usare:

export _JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=on -Dswing.aatext=true -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel'


Miglioramento del font rendering

Sia l'implementazione closed-source, sia quella open-source di Java sono note avere un'implementazione impropria dell'antialiasing dei font. Questo può essere risolto attraverso le seguenti opzioni: awt.useSystemAAFontSettings=on, swing.aatext=true

GTK LookAndFeel

La grafica delle applicazioni che utilizzano Java potrebbe apparire sgradevole. In tal caso si potrebbe voler impostare diversamente il "look and feel" predefinito dei componenti swing: swing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel.

Alcune applicazioni potrebbero ostinarsi ad usare il "look and feel" multipiattaforma chiamato Metal. In questi casi si può forzare l'applicazione ad usare il "look and feel" GTK con il seguente comando:swing.crossplatformlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel.