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

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/sudoersin 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 :)









ehh certo ormai non scrivi più per noi comuni mortali!
C’è un piccolo dummy dentro ognuno di noi :)
Se tu scrivessi un “ortottica for dummies” potrei esserne io il destinatario! eheheh!
E bravo Bruno!Visto che potenza ha Java?
Mah.. per essere potente è potente, questo già si sapeva. Il problema è che (soprattutto J2EE) è veramente complicato come struttura. Ma niente che mi possa fermare, sia chiaro!!! :D
Non è un semplice “programma, compila ed esegui”... bisogna pure stare attenti alle diverse parti della struttura ed imparare a trattarle in modo diverso!
Mi viene il dubbio che ci sia così tanta richiesta di programmatori J2EE proprio perchè… sono pochi!
Bellissimo tutorial !! Una guida completa per sapere dove mettere le mani all’inizio… proprio quello che cercavo. Avevo proprio in mente di iniziare con java..ma da dove no.. ogni sito dice la sua..ma adesso, visto che ci conosciamo, quando inizio seguirò i tuoi primi consigli !
bruno smettila di fare il professionista…!
Non sai lavorare….!:)
Ti ricordi che alla j…. ti ho insegnato tutto?...
Eh lo so… sono dovuto andare per 6 mesi dallo psichiatra per dimenticare tutto e ricominciare una vita normale, senza avere incubi riguardanti certi “linguaggi proprietari”! ;) Ghghghgh!
PS: spero di aver capito bene chi sei…
Ragazzi io ho iniziato a studiarlo a lavoro ed è un casino.
Caro Bruno,
spero che leggerai questo messaggio anche se è passato molto tempo dal tuo post. Ho un problema con la configurazione di JBoss, forse qualcosa legato agli ultimi rilasci, cmq all’interno della cartella principale del zip (regolarmente decompressa) non c’è la cartella bin, conseguente non riesco a configurare il debug perchè non trova la home directory. Sto usando la versione 4.2.2.GA, hai suggerimenti?
Ciao Endayer Starcould.
Ho scaricato la nuova versione di JBoss e non ho riscontrato anomalie rispetto alla guida: c’è la cartella bin e tutto il suo contenuto.
Ecco gli screenshot…
http://img413.imageshack.us/my.php?image=jbossbinez2.jpg
http://img413.imageshack.us/my.php?image=jbossbin2xh0.jpg
Probabilmente si è scaricato male il file, oppure hai preso l’archivio sbagliato. Devi scaricare JBoss Application Server, da questo link: http://labs.jboss.com/jbossas/download
In bocca al lupo ;)
ok, grazie tante bruno.
AScolta, provvisoriamente ho risolto scaricando il 4.0.2 … bha, ad ogni modo, quando lancio il debug, la console mi da:
ERROR: transport error 202: gethostbyname: unknown host
ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)
JDWP exit error AGENT_ERROR_TRANSPORT_INIT(197): No transports initialized [../../../src/share/back/debugInit.c:690]
FATAL ERROR in native method: JDWP No transports initialized, jvmtiError=AGENT_ERROR_TRANSPORT_INIT(197)
hai idea di perchè il metodo gethostbyname dia quest’errore?
http://wiki.jboss.org/wiki/Wiki.jsp?page=RulesRepositoryBuildInstructions
:)