Molti sono scoraggiati ad imparare a programmare in Java Enterprise Edition (J2EE) dalle difficoltà nell’impostazione dell’ambiente di lavoro nel proprio PC di casa.
La scelta dei componenti e la poca documentazione “user-friendly” reperibile in rete contribuiscono a lasciare J2EE relegato in ambito aziendale, dove di solito si trova un sistema di server già pronti all’uso e… bisogna solo programmarci dentro.
Anch’io ho rimandato l’approccio a questo ambiente più di quanto volessi, ma a questo punto posso confermare che è più facile di quello che sembra! :D
Prima di tutto c’è da fare una doverosa introduzione: avevo sempre sentito parlare male di Java, a causa della sua pesantezza e della conseguente lentezza. Ad un certo punto mi sono chiesto il motivo per cui è così diffuso nelle aziende… e vi assicuro che è
INCREDIBILMENTE diffuso!
Mi sono dato una spiegazione dopo diversi colloqui di lavoro: è frequente che un’azienda abbia la necessità di sviluppare diverse forme di interazione con un unico ambiente centrale, un “core”, che dovrà dialogare con client sviluppati in vario modo (interfacce testuali, grafiche, per dispositivi mobili, interfacce web, eccetera)... ed in questa ottica Java mette a disposizione dei programmatori una stuttura orientata al riutilizzo del codice già scritto, alla scalabilità ed al lavoro di gruppo.
Ne risulta che l’azienda ci guadagna… ed anche tanto!
Andiamo all’aspetto pratico. Bisogna decidere quali programmi utilizzare come application server e come ambiente di sviluppo.
Come Wikipedia insegna, un application server è un software che fornisce l’infrastruttura e le funzionalità di supporto, sviluppo ed esecuzione di applicazioni e componenti server in un contesto distribuito. Si tratta di un complesso di servizi orientati alla realizzazione di applicazioni per il web, multilivello ed enterprise, con alto grado di complessità.
Sapendo per certo che in queste diatribe ne escono sempre vincitori i rappresentanti del software libero, sia come sicurezza che come reperibilità (ed anche per i costi!!!), non ho neanche guardato il software commerciale (WebSphere di IBM, Oracle AS, Weblogic, ...).
La scelta, per quanto riguarda l’AS, è ricaduta sul progetto open-source più sviluppato e più supportato da una vasta comunità di sviluppatori: JBoss.
E’ possibile scaricarlo direttamente dalla
sezione download del sito ufficiale (io ho optato per l’ultima release stabile, che al momento è la 4.0.5).
Un IDE di sviluppo che qualche mese fa mi è risultato ottimo nella programmazione Java (standard e mobile) è stato Eclipse (anch’esso open source), quindi mi sono informato se fosse possibile renderlo interoperabile con le strutture J2EE. Le soluzioni erano diverse, ma alla fine ho deciso scaricare JBoss Eclipse IDE, una versione di Eclipse modificata direttamente dagli sviluppatori di JBoss, con installati tutti i plugin necessari al funzionamento in accoppiata con l’application server.
Ah… ovviamente la macchina server è equipaggiata con una stupenda Slackware Linux 11.0! ;)
(tutte le indicazioni seguenti riguardano Slackware, ma sono facilmente riportabili ad altre distribuzioni)
L’installazione di JBoss è semplice, basta estrarre l’archivio:
$ cd /opt
$ unzip /path/to/downloaded/jboss-4.0.5.GA.zip
$ ln -s jboss-4.0.5.GA jboss
Non bisogna compilarlo perchè è anch’esso scritto in Java, quindi è multi-piattaforma e gira sotto la Java VM ;)
Prima di far partire il server è necessario installare JDK, qualora non fosse già presente nel sistema, per poi impostare qualche variabile d’ambiente:
$ ln -s /usr/lib/jdk1.5.0_09 /usr/lib/java
$ export JBOSS_HOME='/opt/jboss'
$ export JAVA_HOME='/usr/lib/java'
$ export CLASSPATH='/usr/lib/java/lib/tools.jar'
A questo punto si potrà lanciare JBoss eseguendo
/opt/jboss/bin/run.sh > /dev/null &
(uso la redirezione dell’output per evitare che la shell sia inondata dai messaggi di debug anche con il programma messo in background)
E’ consigliabile salvare uno script d’avvio in
/etc/rc.d/rc.jboss
, in modo da poter decidere se lanciare il server al boot della macchina dando o meno l’attributo di esecuzione al file:
case "$1" in
start)
echo "Starting JBoss: /opt/jboss/bin/run.sh"
export JBOSS_HOME='/opt/jboss'
export JAVA_HOME='/usr/lib/java'
export CLASSPATH='/usr/lib/java/lib/tools.jar'
/opt/jboss/bin/run.sh > /dev/null &
;;
stop)
echo "Stopping JBoss..."
/opt/jboss/bin/shutdown.sh -S > /dev/null &
;;
restart)
echo "Restarting JBoss..."
/opt/jboss/bin/shutdown.sh -S > /dev/null &
/opt/jboss/bin/run.sh > /dev/null &
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
;;
esac
Adesso è il turno di JBoss IDE:
# cd /usr/local
# tar xfvz /path/to/downloaded/JBossIDE.tar.gz
# chmod +x /usr/local/eclipse/eclipse
Sarà necessario eseguire Eclipse come root, per fare in modo che il server possa essere gestito dall’interno dell’applicazione. Per fare ciò, utilizzeremo il programma sudo, modificando il file
/etc/sudoers
in questo modo:
# User alias specification
#### inserisci qui gli utenti sviluppatori ####
User_Alias JBOSS_DEVEL = bruno, pippo
# Cmnd alias specification
Cmnd_Alias JBOSS_IDE = /usr/local/eclipse/eclipse
# User privilege specification
JBOSS_DEVEL ALL = NOPASSWD: JBOSS_IDE
Poi basterà lanciare JBoss IDE con il comando
$ sudo /usr/local/eclipse/eclipse
(ed eventualmente aggiungere un’icona sul desktop che lanci questo comando).
Prima di iniziare a programmare, sarà necessario impostare su Eclipse i parametri del server JBoss nella finestra Run > Debug…, cliccando a sinistra su JBoss 4.0.x e poi su New.
Ovviamente la home directory deve essere impostata su
/opt/jboss
.
A questo punto sarà possibile iniziare un nuovo progetto J2EE, aggiungere componenti come EJB e Servlet, impostare le XDoclet, effettuare il packaging ed eseguire debug e deploy sulle proprie web-app! :)
Adesso la cosa migliore da fare è seguire un buon TUTORIAL per imparare velocemente ad usare tutti questi simpaticissimi giocattoli :)