Java (Italiano)

From ArchWiki
Revision as of 10:31, 26 August 2012 by Thewall (Talk | contribs) (Trucchi e consigli: Aggiunto esempio sulle variabili predefinite. Allineamento versione inglese.)

Jump to: navigation, search
Summary help replacing me
This article explains how to install and configure JRE/JDK.
Related
Java Package Guidelines

"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.

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.

Nota: Nel caso di utilizzo di un window manager non-reparenting e di Java 6, è necessario decommentare la corrispondente riga in /etc/profile.d/openjdk6.sh

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.

Nota: Assicurarsi che il file /opt/java/jre/bin/ sia presente nella propria variabile $ PATH e che $JAVA_HOME punti alla posizione corretta (in genere /opt/java). Questo può essere realizzato anche eseguendo un logout e un nuovo login nella propria sessione o realizzando il source di /etc/profile.

Oracle JVM (Java 6)

Poiché i pacchetti jreAUR e jdkAUR sono stati aggiornati a Java SE 7, l'installazione della vecchia implementazione di Java non può essere eseguita da AUR. Nonostante ciò si può procedre a un'installazione manuale consultando l'articolo Java SE 6 contenente tutte le istruzioni.

Apache Harmony

Apache Harmony è una re-implementazione del linguaggio Java secondo un approccio "clean-room" e si presenta sotto la licenza Free Apache. Una redistribuzione del apache-harmony-jreAUR. può essere trovata in AUR.

Kaffe

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.

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.