Java e Linux
Premessa
Questo documento assume che il lettore sia uno sviluppatore, magari con conoscenza di Windows,
che voglia iniziare a lavorare in Java su sistema operativo Linux.
Per questo documento abbiamo scelto la licenza Creative Commons per consentire a tutti di contribuire
costruttivamente in pieno spirito comunitario.

This work is licensed under a
Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License.
Introduzione al documento
L'obiettivo e' quello di aiutare uno sviluppatore che voglia intraprendere la scrittura
di programmi in linguaggio Java su sistema operativo Linux.
Nel primo capitolo "Architettura",
sono presi in esame i mattoni costituenti una piattaforma di sviluppo Java e consigliati
gli strumenti che secondo noi costituiscono una scelta generica e di livello professionale.
Nel secondo capitolo "Ambienti di sviluppo",
vengono approfonditi gli argomenti di scelta tra i due ambienti di ottima qualita'
Netbeans ed Eclipse.
Nel terzo capitolo "JDK e librerie",
si esaminano le scelte di strumenti essenziali e librerie standard.
Nel quarto capitolo "Sistema operativo",
si approfondisce l'uso del sistema operativo aperto GNU/Linux in distribuzione Ubuntu.
Architettura di una piattaforma di sviluppo Java su Linux
Java e' un linguaggio di programmazione orientato agli oggetti inventato da
Sun e la sua definizione e' espressa in un insieme di specifiche.
Spesso con lo stesso termine si sottointende in realta' la piattaforma Java, costituita oltre che dal linguaggio,
anche dalle librerie standard anchesse specificate da Sun. Il linguaggio nella sua definizione orginale si presenta
come seminterpretato, ossia il codice sorgente Java viene compilato in un formato non direttamente eseguibile, ma in
un formato indipendente dallo specifico sistema operativo su cui verrà fatto eseguire grazie
ad uno specifico interprete denominato Virtual Machine.
Per sua natura, quindi, Java è un linguaggio indipendente dalla piattaforma.
Si appoggia ad una macchina virtuale che simula una macchina astratta identica su sistemi operativi differenti.
L'insieme degli strumenti necessari per poter
scrivere programmi in linguaggio Java
sono:
- un sistema operativo,
- una piattaforma di sviluppo (SDK) Java supportata dal s.o. ,
- eventuali librerie aggiuntive secondo necessita',
- e per facilitarci la vita un ambiente integrato di sviluppo
che velocizzi la scrittura del codice sorgente piu' noioso.
Seguono ora i nostri consigli.
Sistema operativo
Windows e' il sistema operativo che nel 99% dei casi trovate preinstallato sul PC
che avete acquistato. Inoltre e' il 90% percento dei sistemi operativi che
i vostri clienti posseggono sui loro PC. La manutenzione, l'installazione di applicativi
il supporto quindi non possono che essere tra i piu' semplici. Per queste ragioni
probabilmente gia' lo conoscete e se non volete novita' rimane un sistema
operativo valido per lo sviluppo Java. Il problema maggiore di Windows sta nella sua
licenza a codice sorgente chiuso, ossia leggibile e modificabile dalle sole persone che ne detengono
i diritti, nello specifico Microsoft. Ossia in caso di problemi
dovete aspettare che vi vengano risolti da Microsot e non saprete praticamente mai
cosa stia combinando e perche', aspetto delicato per degli sviluppatori.
GNU/Linux e' un sistema operativo a codice aperto (open source) accessibile a tutti
con dotazione completa:
interprete (macchina virtuale), compilatore ed ambienti di sviluppo per Java, oltre
che di programmi di uso comune come: programmi per l'ufficio, per Internet, per la posta
e tantissimi altri.
E' gratuito e stabile; negli ultimi tempi anche la sua manutenzione si
e' semplificata guadagnando largo supporto in ambito aziendale, oltre che
ad uso personale,
tanto da poter rivaleggiare con Windows in molte situazioni, se non
soppiantarlo quasi completamente in ambito rete.
GNU/Linux e' un prodotto nato dall'idea di pionieri e costruito grazie allo spirito
di comunita' degli sviluppatori presenti in Internet. In perfetta linea con lo spirito JUG.
La sua comunita' internet e' la piu' estesa e quindi non vi sentirete mai soli
ed abbandonati, un vostro problema sara' facilmente condiviso e facilmente gia' risolto
da qualcun'altro nel mondo e spesso piu' vicino di quanto pensiate.
LinuxTrent e' ad esempio un gruppo di appassionati e professionisti
che sicuramente vi sapranno orientare gratuitamente in questo universo.
Tutt e questi argomenti ci portano a consigliarlo come sistema operativo
di riferimento per lo sviluppo in Java.
Esistono svariate distribuzioni del sistema operativo Linux, tra le più famose:
Debian, Ubuntu, Knoppix, RedHat, SuSe.
Noi prenderemo a riferimento la distribuzione Ubuntu.
Perche' ne condividiamo i principi che guidano il gruppo che la mantiene.
Perche' rilasciato per essere tra i piu' facili ma manutenzionare,
basato sulla famosa distribuzione di qualità Debian con un corredo
di software gratuito "certificato" e di facile installazione.
Adeguata quindi agli sviluppatori che preferiscono spendere piu' tempo
sul proprio codice che su quello altrui.
Compilatore
Una volta scelto il sistema operativo passiamo alla macchina virtuale (VM) ed al compilatore.
Grazie alle specifiche SUN e' stato possibile avere piu' implementazioni
di macchina virtuale e compilatori a parita' di sistema operativo,
consentendo quindi un miglioramento competitivo reciproco.
Noi restrigeremo la scelta tra: Software Development Kit di SUN e GNU.
La VM ed il compilatore di SUN sono quelli completi per definizione ma viene rilasciata in licenza SUN
a codice non aperto seppur liberamente distribuibile.
Quella di GNU e' ad uso completamente libero in licenza GPL, anche se non completa come
la versione di SUN.
Per i puristi consigliamo GCJ, per chi non vuole grattacapi la versione di Sun
completa, veloce e anche se un po' piu' restrittiva in licenza.
La VM di riferimento da noi scelta per le nostre esigenze e' VM e compilatore GNU.
Strumenti di facilitazione allo sviluppo
Passiamo ora all'ambiente di sviluppo. Per scrivere codice sorgente java basta
un qualsiasi editor di testo. Quindi a linea di comando si puo' far uso dei comandi
preparati dal JDK. Questo è l'ambiente di sviluppo minimale.
Un primo passo costitusce nell'uso di editor di testo evoluti ma generici
con possibilità di plugin che dallo stesso editor consentano di interfacciare
ed aggiungere funzionalità di terze parti ed in particolare funzioni di sviluppo.
Un secondo passo invece prevede l'uso di piattaforme integrate di strumenti
di sviluppo che siano pronte all'uso una volta installate. Questi sono gli IDE
integrated development enviroment, ambienti di sviluppo integrati.
Come ambiente di sviluppo consideriamo in questo documento
solo quelli open source, gratuiti e con una buona comunita' a supporto. Restringiamo
la scelta tra: NetBeans ed Eclipse.
Qui la scelta e' piu' legata a preferenze personali di usabilita'
o alla presenza di specifici plug-in aggiuntivi
che in certi contesti possono fare la differenza e costituire dei notevoli acceleratori.
Si deve infine notare che un ambiente di sviluppo integrato (IDE)
costituisce un elemento importante ma spesso
non sufficiente per uno sviluppo serio. Si considera ormai indispensabile
anche un versionatore di sorgenti.
Entrambi gli ambienti non integrano all'installazione un sime strumento ma
sono pronti ad interfacciarsi ai prodotti piu' comuni, in particolare CVS e Subversion.
Oltre gli strumenti
Indispendabile ad ogni sviluppatore sono i seguenti requisiti: un processo adeguato al
tipo di soluzione software che si vuole implementare, conoscenze di
ingegneria del software per scrivere buoni programmi, conoscenza di
pro e contro per interfacciarsi e scegliere componenti architetturali adeguate.
Tutte queste scelte non sono poche e non sono facili, vanno certamente
valutate caso a caso. Le combinazioni sono moltissime. Ecco quindi il valore
dell'esperienza e della comunita', in breve il significato stesso di un gruppo
come un JUG, al quale consigliamo di iscrivervi il prima possibile.
Conclusioni
In questo capitolo abbiamo indicato gli ingredienti base di un ambiente di sviluppo Java
su sistema operativo Linux, indicando quali prodotti, a nostro parere,
possono meglio soddisfare uno sviluppatore.
Nel seguito approfondiremo in dettaglio le scelte consigliate sino a qui,
cercando di evidenziare le soluzioni ai possibili ostacoli in fase d'uso
o dove trovare eventuali ulteriori informazioni ed aiuti.