Presentazione sullo stato dell'arte nell'utilizzo e nello sviluppo di Java su Mac OS X effettuata al JUG Milano Meeting #14 del 12 gennaio 2006 presso Mac@Work.
In questa presentazione verrà introdotto brevemente il concetto di RIA (Rich Internet Application), di Framework e fondendo i due concetti verranno presentati alcuni dei più conosciuti Framework per la realizzazione di RIA. Visualizza la presentazione.
Presentazione sull'evoluzione di Struts, primo framework web MVC in ambito Java e sul merger con WebWork, effettuata durante la (prima!) tappa di Torino della prima edizione di JavaDay '06.
Creare una Progressive Web App in Angular è un processo semplice e potente. Vediamone tutte le caratteristiche messe a disposizione dal famoso framework frontend, per rendere le nostre Single Page Application pronte per lavorare offline, ricevere notifiche e tanto altro!
Repository GitHub: https://github.com/fsciuti/ng-pwa-conf-demo
In questa presentazione verrà introdotto brevemente il concetto di RIA (Rich Internet Application), di Framework e fondendo i due concetti verranno presentati alcuni dei più conosciuti Framework per la realizzazione di RIA. Visualizza la presentazione.
Presentazione sull'evoluzione di Struts, primo framework web MVC in ambito Java e sul merger con WebWork, effettuata durante la (prima!) tappa di Torino della prima edizione di JavaDay '06.
Creare una Progressive Web App in Angular è un processo semplice e potente. Vediamone tutte le caratteristiche messe a disposizione dal famoso framework frontend, per rendere le nostre Single Page Application pronte per lavorare offline, ricevere notifiche e tanto altro!
Repository GitHub: https://github.com/fsciuti/ng-pwa-conf-demo
Visual Studio Code è il editor di codice sorgente che rende subito produttivi grazie alla sua semplicità e leggerezza ed in questo talk troverete una panoramica, oltre a tip & tricks utili.
Benvenuto nel nostro approfondimento interattivo sul Java, il linguaggio di programmazione Object-Oriented ampiamente adottato, conosciuto per la sua robustezza, sicurezza e portabilità. Questa presentazione è il tuo gateway per comprendere il perché Java, con la sua sintassi intuitiva e la famosa piattaforma indipendente, continua a essere il pilastro dello sviluppo di software in vari ambienti operativi. Scoprirai i meccanismi alla base della Java Virtual Machine (JVM) e come la piattaforma Java fornisce una base ineguagliabile per lo sviluppo di applicazioni enterprise, mobile e web di alto livello. Dal principiante appassionato di tecnologia al veterano dello sviluppo software, immergiti nella lingua che ha ridefinito i codici della programmazione.
I linguaggi del web - seconda edizione (3° giornata)Diego La Monica
Modulo 4 – AJAX
- Interazioni client/server
- Framework a confronto:
- jQuery
- Mootools
- YUI
- JAST
Modulo 5 – ARIA e l’accessibilità lato client
- Prendere un po' di ARIA
- Le tecnologie assistive
- Ruoli, stati e proprietà
- Strumenti per lo sviluppo accessibile
Una panoramica sulle diverse possibilità offerte da Spring per applicazioni RIA realizzate in Flex: Spring sul server per l'implementazione di un backend con serializzazione nativa AMF3 con Spring BlazeDS integration, Spring sul client con Spring ActionScript e Spring come usato dallo streaming server opensource Red5 per la realizzazione di applicazioni video. Presentazione tenuta allo Spring Framework Meeting di Settembre 2009 a Cagliari.
OpenOffice.org non è solo la principale suite di applicazioni per l'ufficio completamente libera e basata su open standard (OpenDocument è standard ISO), ma può trasformarsi in una potente piattaforma per applicazioni document-based programmabile via Java.
In questa presentazione esploreremo le potenzialità del connubio fra OpenOffice.org e Java tramite alcuni esempi applicativi. In particolare vedremo la possibilità di eseguire script nei linguaggi basati su JVM come BeanShell e Jython, l'esecuzione remota da applicazioni Java esterne di funzioni di OpenOffice.org lanciato in modalità server, e i diversi punti di aggancio per estendere le funzionalità della suite dall'interno tramite componenti Java custom.
Vedremo infine la nuova applicazione Base presente in OpenOffice.org 2.0 per l'accesso a sorgenti dati JDBC.
Angular js o React? Spunti e idee per la scelta di un frameworkGiovanni Buffa
Come poter scegliere un framework da utilizzare in un progetto per una web applications? Durante questo workshop analizzeremo le parti fondamentali di AngularJs e React, in modo da capire pregi e difetti di ognungo dei due principali strumenti di sviluppo.
Visual Studio Code è il editor di codice sorgente che rende subito produttivi grazie alla sua semplicità e leggerezza ed in questo talk troverete una panoramica, oltre a tip & tricks utili.
Benvenuto nel nostro approfondimento interattivo sul Java, il linguaggio di programmazione Object-Oriented ampiamente adottato, conosciuto per la sua robustezza, sicurezza e portabilità. Questa presentazione è il tuo gateway per comprendere il perché Java, con la sua sintassi intuitiva e la famosa piattaforma indipendente, continua a essere il pilastro dello sviluppo di software in vari ambienti operativi. Scoprirai i meccanismi alla base della Java Virtual Machine (JVM) e come la piattaforma Java fornisce una base ineguagliabile per lo sviluppo di applicazioni enterprise, mobile e web di alto livello. Dal principiante appassionato di tecnologia al veterano dello sviluppo software, immergiti nella lingua che ha ridefinito i codici della programmazione.
I linguaggi del web - seconda edizione (3° giornata)Diego La Monica
Modulo 4 – AJAX
- Interazioni client/server
- Framework a confronto:
- jQuery
- Mootools
- YUI
- JAST
Modulo 5 – ARIA e l’accessibilità lato client
- Prendere un po' di ARIA
- Le tecnologie assistive
- Ruoli, stati e proprietà
- Strumenti per lo sviluppo accessibile
Una panoramica sulle diverse possibilità offerte da Spring per applicazioni RIA realizzate in Flex: Spring sul server per l'implementazione di un backend con serializzazione nativa AMF3 con Spring BlazeDS integration, Spring sul client con Spring ActionScript e Spring come usato dallo streaming server opensource Red5 per la realizzazione di applicazioni video. Presentazione tenuta allo Spring Framework Meeting di Settembre 2009 a Cagliari.
OpenOffice.org non è solo la principale suite di applicazioni per l'ufficio completamente libera e basata su open standard (OpenDocument è standard ISO), ma può trasformarsi in una potente piattaforma per applicazioni document-based programmabile via Java.
In questa presentazione esploreremo le potenzialità del connubio fra OpenOffice.org e Java tramite alcuni esempi applicativi. In particolare vedremo la possibilità di eseguire script nei linguaggi basati su JVM come BeanShell e Jython, l'esecuzione remota da applicazioni Java esterne di funzioni di OpenOffice.org lanciato in modalità server, e i diversi punti di aggancio per estendere le funzionalità della suite dall'interno tramite componenti Java custom.
Vedremo infine la nuova applicazione Base presente in OpenOffice.org 2.0 per l'accesso a sorgenti dati JDBC.
Angular js o React? Spunti e idee per la scelta di un frameworkGiovanni Buffa
Come poter scegliere un framework da utilizzare in un progetto per una web applications? Durante questo workshop analizzeremo le parti fondamentali di AngularJs e React, in modo da capire pregi e difetti di ognungo dei due principali strumenti di sviluppo.
Si parla di IcedTea, della macchina virtuale Java completamente libera e degli altri strumenti. Vengono spiegate le differenze tra l’approccio con interprete, compilatore e macchina virtuale. Si racconta di quali macchine virtuali ci sono per quali linguaggi. Vengono descritte le peculiarità di IcedTea e si prendono in esame le differenze tra HotSpot Zero Assembly con la macchina virtuale di Oracle, HotSpot. Si parla di quali linguaggi possano essere compilati per macchina virtuale Java.
SPRING - MAVEN - REST API (ITA - Luglio 2017)Valerio Radice
Introduzione al framework Java Spring e Maven per realizzare API REST.
Breve introduzione all'uso di Maven per configurare un progetto SpringBoot e realizzare un server REST.
Disponibile il codice dimostrativo su github (link nelle slide, attenzione alle branch).
Valerio Radice (valix85)
Luglio 2017
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformGabriele Gaggi
Cordova è la chiave di volta che consente agli sviluppatori web un ingresso rapido ed indolore negli store delle diverse piattaforme mobili. Vedremo come utilizzare questa chiave di volta sfruttando la potenza e semplicità del framework MVC di Google AngularJs in collaborazione con le caratteristiche responsive offerte dal framework di Twitter Bootstrap.
APS 2 comes with new modern and powerful tools built using ADF to model and deploy cloud native process applications, let’s run through what’s in an app with a simple and fun example, ordering beers for your office.
At the origin there was a monolith. Behind a successful startup often lies a single technology application (Java, Rails, etc.) that grows until it hardly scales with the number of customers and likewise its development process as developers increase. A consolidated strategy on the back-end is to progressively slice the monolith into micro-services. A dual solution on the front-end is to gradually extract HTML, CSS and JavaScript code into a Single Page Application, applying some techniques like the ones I've been maturing during my experience in Workshare.
Are we not lucky enough to enjoy a proper software development process in our team? We can try to improve our working environment with a setup on our local machine of a virtualized "software factory in a box" based on opensource tools (Maven/Redmine/Artifactory/Subversion/Jenkins). Following this approach We'll see how we can experiment on ourselves some integration best practices for these tools and easily introduce them into our company later.
Presentazione introduttiva su Groovy e Grails tratta dal materiale della serie di eventi Into The Groovy del JUG Milano tenuta allo Spring Meeting del 26/06/2010 a Cagliari organizzato da JUG Sardegna http://www.jugsardegna.org/vqwiki/jsp/Wiki?26giugno2010
Presentazione "quickie" sull'integrazione fra Maven ed Eclipse offerta dal plugin m2eclipse di Sonatype tenuta al JUG Milano Meeting #29 del 3 luglio 2008: http://www.jugmilano.it/vqwiki/jsp/Wiki?Meeting3Luglio2008&highlight=m2eclipse
Lo Spring Framework viene ancora una volta incontro agli sviluppatori Java semplificandone la vita, questa volta vedremo come implementare facilmente uno strato servizi stateless da rendere disponibile remotamente nei diversi formati fruibili dalle diverse tecnologie client RIA, introducendo i concetti di Exporter e Proxy di Spring Remoting. Tutto questo tramite pura configurazione, via XML o annotation a seconda dei gusti, e con un esempio specifico in Flex con Spring BlazeDS Integration.
1. Java sul tuo Mac
Marcello Teodori
Java User Group Milano
http://www.jugmilano.it
marcello.teodori@jugmilano.it
2. Agenda
● Perché Java sul Mac?
● Java Standard Edition
● Integrazione con il Desktop
● Programmare Cocoa in Java
● Sviluppo Java ed IDE
● Java Enterprise Edition
● Sviluppo su Micro Edition
● Stato attuale dell'implementazione
JUG Milano – Java sul tuo Mac 2
3. About Marcello
Ingegnere Informatico, appassionato di Java, open source
e programmazione in generale, lavora dal 1997 nello
sviluppo software, principalmente in ambito web e mobile
internet.
Dal 2004 è socio in ExcogitaNet srl e collabora attivamente
con il Java User Group Milano.
laddove possibile cerca in tutti i modi
di utilizzare il suo Mac!
Partecipa con impegno molto variabile alla community open
source, principalmente con diverse localizzazioni di
applicazioni Mac che utilizza abitualmente.
JUG Milano – Java sul tuo Mac 3
4. Perché Mac OS X?
● Interfaccia utente intuitiva
● Applicazioni iLife
● Servizi Applicativi evoluti: AppleScript,
Spotlight, VoiceOver, Bundle, ecc.
● Qualità ed ergonomia dell'hardware Apple
● “it just works”: supporto integrato per gran
parte di tecnologie e periferiche
● Unix-based (BSD+Mach)
● Java runtime integrato
JUG Milano – Java sul tuo Mac 4
5. Perché sviluppare su Mac OS X?
● Developer Tools inclusi, IDE Xcode
● Documentazione ADC
● open source pre-installato e ready-to-go
● the best Unix developer experience!
● Architettura a Layer
http://developer.apple.com/macosx/architecture/
JUG Milano – Java sul tuo Mac 5
6. Perché Java su Mac?
● Aqua LAF per Swing, ok anche per applicazioni per Mac
● Integrazione con il desktop
● Cocoa API per sviluppare applicazioni Mac-only
● mindshare: James Gosling, James D. Davidson...
ma...
● WORA è un concetto non sempre rispettato!!!
● librerie con parti native JNI non sempre disponibili
● problematiche allineamento JDK con Sun
● performance inferiori rispetto ad altri OS
JUG Milano – Java sul tuo Mac 6
7. Java Standard Edition
È un framework standard di Mac OS X, pre-
installato insieme al sistema operativo e situato in:
/System/Library/Frameworks/JavaVM.framework/
contenente le seguenti versioni della JVM:
● 1.3.1 (in EOL, non disponibile su Intel)
● 1.4.2 (default)
● 5.0 (non pre-installato, ma disponibile come free
download dal sito Apple)
Implementa anche un Internet Plug-In che rende
Java disponibile all'interno di tutti i browser.
JUG Milano – Java sul tuo Mac 7
8. “it just works”?
Non del tutto, il directory layout di un framework è
completamente diverso da quello tipico della JVM,
ma non è un problema... ci sono solo alcune cose
da sapere...
● JAVA_HOME in /Library/Java/Home
● symlink eseguibili in /usr/bin
● default JVM impostabile da symlink:
$JAVAVM_FRAMEWORK_HOME/Versions/CurrentJDK
● caricamento estensioni da:
(~|/|/System|/Network)/Library/Java/Extensions
JUG Milano – Java sul tuo Mac 8
9. Altro da installare?
I Developer Tools installano automaticamente la
versione 1.6.5 di Ant, utilizzata da Xcode:
– ANT_HOME in /Developer/Java/Ant
– symlink in /usr/bin
Attenzione: i javadoc del JDK 1.4.2 sono solo
nell'installazione adhoc, non in quella standard!
Quelli di 1.3.1 e 5.0 invece vanno scaricati da Apple
Developer Connection:
http://developer.apple.com/java/download/
JUG Milano – Java sul tuo Mac 9
10. Write Once Run Anywhere?
● la JVM 1.4.1+ supporta l'esecuzione dei JAR
● nessun problema per applicazioni command-line
o server pure Java
● applicazioni pure Java dotate di installer nativi
possono essere installate su altro OS e poi
spostate
● applicazioni o librerie che fanno uso di JNI
devono avere la versione binaria adhoc
● le applicazioni GUI hanno LAF Aqua ma non
sono automaticamente conformi alle Apple
Human Interface Guidelines!
JUG Milano – Java sul tuo Mac 10
11. Apple System Properties
Il metodo più rapido e meno invasivo per adattare
un'applicazione Java a Mac OS X:
java -D<apple-system-property-key>=<value> ...
Alcuni esempi
●
apple.laf.useScreenMenuBar
se impostata a true, imposta la barra dei menu in stile apple
●
apple.awt.brushMetalLook
se impostata a true, imposta il look metal su AWT come Safari
Reference
http://developer.apple.com/documentation/Java/Conceptual/JavaPropVMInfoRef/index.html
JUG Milano – Java sul tuo Mac 11
12. Apple Virtual Machine Options
Posso fare ancora qualcosa, ad esempio integrare
l'applicazione con il Dock, utilizzando le virtual
machine options specifiche di Mac OS X:
java -X<apple-virtual-machine-option> ...
Ad esempio:
●
-Xdock:icon=<percorso-file-icns>
creo un file .icns in Icon Composer, tool incluso nei Developer Tools, e
ne imposto il percorso: l'icona apparirà sul Dock al posto di quella
standard utilizzata dalle applicazioni Java
●
-Xdock:name=<nome-applicazione>
utilizza sul dock e sul menu dell'applicazione il nome indicato al posto
del FQCN della relativa classe Main
ma...
non posso obbligare gli utenti a lanciare le applicazioni da Terminale!
JUG Milano – Java sul tuo Mac 12
13. Cosa è un Bundle?
● concetto ereditato da NextStep
● unità indipendente ed autocontenuta
● una directory su filesystem con dato layout
● contiene un descrittore in formato XML plist
● ne esistono diversi tipi: document, framework,
plugin, e nel nostro caso application, che indica le
applicazioni registrabili sul sistema
=> costruiamone uno con Jar Bundler,
presente nei Developer Tools!
JUG Milano – Java sul tuo Mac 13
14. Parametri Java in Info.plist
Tutto ciò che può essere specificato da command-line si
può indicare anche nel descrittore Info.plist, più altro
ancora, come ad esempio la versione di runtime richiesta.
Inoltre tutte i parametri che contengano percorsi possono
utilizzare le variabili $JAVAROOT e $APP_PACKAGE, che
puntano all'interno dello stesso application bundle, con
l'obiettivo di renderlo autocontenuto e relocatable.
ma...
Info.plist è simile al descrittore JNLP!
=> Java WebStart su Mac OS X può creare un
application bundle con Info.plist derivato dal
descrittore JNLP!
JUG Milano – Java sul tuo Mac 14
15. Apple Java Extensions
Se volessimo andare oltre?
=> si può, ora però bisogna modificare il codice!
Apple fornisce dei package java proprietari che espongono
alcune funzionalità ulteriori, ad esempio:
● collegare menu AWT/Swing ad application menu
● interagire con il file system HFS
● integrare componenti Cocoa in AWT via JNI,
implementando la abstract base class CocoaComponent
=> siamo arrivati al confine con Cocoa!
Reference (per 1.5.0):
http://developer.apple.com/documentation/Java/Reference/1.5.0/appledoc/api/index.html
JUG Milano – Java sul tuo Mac 15
16. Applicazioni Java Mac: jEdit
jEdit è un editor di testo avanzato opensource
● sito del progetto: http://www.jedit.org
● la distribuzione Mac è identica alle altre,
ma include un plugin adhoc ed un
application bundle
Caratteristiche
● integrazione DocumentType e File/Creator
● application menu con handler per about,
preferences, quit
● integrazione services menu e dock menu
● esecuzione AppleScript
JUG Milano – Java sul tuo Mac 16
17. MRJ Adapter
Problema:
● nomi e supporto delle system properties
Apple fra le diverse versioni della JVM
● necessità di inserire special cases nel codice
per gestire l'integrazione con Mac OS X
Soluzione:
http://homepage.mac.com/sroy/mrjadapter/
JUG Milano – Java sul tuo Mac 17
18. Migliorare il LAF Aqua
Per i “precisini”: alla ricerca del pixel-perfect!
● LAF Quaqua
http://www.randelshofer.ch/quaqua/download.html
● JTable con stripes
https://renderpack.dev.java.net/
● JTable con Incremental Search Box
http://publicobject.com/glazedlists/
JUG Milano – Java sul tuo Mac 18
19. Sviluppo Java e IDE
Tutti le opzioni più note sono supportate:
● NetBeans (dalla 5.0 sono compresi anche i
moduli Profiler e Mobility)
● jEdit :D
● IntelliJ IDEA
● Oracle JDeveloper
● Eclipse
● Xcode? È preinstallato e nativo, ma il
supporto Java non è soddisfacente.
JUG Milano – Java sul tuo Mac 19
20. Eclipse
● good news: SWT è disponibile per Mac, anche per le
applicazioni RCP come Azureus, RSSOwl, ecc.
● bad news:
– l'implementazione di SWT su Carbon esteticamente non
è al livello del LAF Aqua
– performance non eccelse ed hanging con alcuni plugin
=> consigliati OSX 10.4.3+ e Eclipse 3.1.1
– incompatibilità con AWT/Swing
● [eclipse-mac]: http://groups.google.com/group/eclipse-mac/
– VE Support
http://groups.google.com/group/eclipse-mac/browse_thread/thread/361532f40cf85ac0
– Top Ten Eclipse bugs
http://groups.google.com/group/eclipse-mac/browse_thread/thread/fbea6177b2e4b76c
JUG Milano – Java sul tuo Mac 20
21. Cocoa-Java
● sviluppo GUI con Interface Builder
● implemento Controller in Java su Xcode
● accedo a funzionalità di sistema tramite il
FoundationKit
● utilizzo AppKit al posto di Swing/AWT
● template progetti su Xcode
ma...
● le API Java sono un wrapper di quelle ObjC
● le API Java sono un subset di quelle ObjC
JUG Milano – Java sul tuo Mac 21
22. Java vs. Objective-C
● Tutorial ObjC-Cocoa di Livio Sandel
http://www.macocoa.omitech.it/
● I framework Cocoa (ApplicationKit e
FoundationKit) sono in Objective-C
● Differenze Principali:
– gestione memoria senza garbage
collection => problema weak references
– dynamic dispatch dei messaggi
– threading AWT
JUG Milano – Java sul tuo Mac 22
23. Cocoa-Java deprecation
Dalla documentazione ADC:
“Important: Features added to Cocoa in Mac OS X versions later than 10.4
will not be added to the Cocoa-Java programming interface. Therefore,
you should develop Cocoa applications using Objective-C to take
advantage of existing and upcoming Cocoa features.”
“Important: Cocoa-Java technology is only a learning tool. Applications
targeted for release to customers must be developed using Objective-C
to take advantage of all the programming interfaces available in Cocoa.
Programming interfaces added to Cocoa in Mac OS X versions later
than 10.4 will not be available to Cocoa-Java applications.”
=> go JNI!
JUG Milano – Java sul tuo Mac 23
24. Applicazioni Cocoa-Java: Cyberduck
Cyberduck è un client FTP/SFTP opensource.
– Sito del progetto: http://cyberduck.ch/
– Cocoa-Java FAQ: http://sudo.ch/~dkocher/cocoa/
– Usa JNI laddove Cocoa-Java non basta
Caratteristiche:
– integrazione con Spotlight
– gestione DocumentType .duck ed URLType (s)ftp://
– integrazione AppleScript con dictionary
– integrazione password in Keychain
JUG Milano – Java sul tuo Mac 24
25. Java Enterprise Edition
● non è pre-installato alcun server EE, ma non ci sono
problemi per server pure Java
● su ADC ci sono diversi tutorial per Tomcat, JBoss, Jetty,
Struts, ecc.
● Su Developer Tools c'è un opzione per installare
WebObjects con developer license
● per il deployment si può utilizzare launchd
Mac OS X Server include:
● Tomcat 4.1.29 in /Library/Tomcat
● JBoss 3.2.3 in /Library/JBoss/3.2
● WebObjects con licenza deployment
● tool di supporto custom per la gestione
JUG Milano – Java sul tuo Mac 25
26. Java Mobile Edition
Problema: serve la reference implementation
di MIDP (Wireless Tookit), ma ha parti native,
non è disponibile per OS X e non è open
source...
Soluzione: SDK mpowerplayer
http://mpowerplayer.com/index.php
● emulatore pure java MIDP 2.0
● supporta le Bluetooth API anche su Mac
● fornisce preverifier nativo OSX
● esempi con Ant forniti insieme all'SDK
JUG Milano – Java sul tuo Mac 26
27. NetBeans Mobility Pack
● la versione 5.0 beta2 è compatibile Mac
● non ci sono release ufficiali!
● istruzioni dettagliate ed integrazione di
mpowerplayer sul weblog di Lukas Hasik
http://blogs.sun.com/roller/page/lukas?entry=mobility_pack_on_mac
● qualche correzione ai build.xml file generati
=> posso sviluppare in modo visuale
e fare debugging su applicazioni
Micro Edition! Proviamo?
JUG Milano – Java sul tuo Mac 27
28. Conclusioni
● pro e contro: una scelta molto personale...
● ultimi aggiornamenti: finalmente default 5.0!
dalle release notes di J2SE 5.0 Release 4 DP3
(richiede login in ADC su http://connect.apple.com)
"Java 2 Standard Edition (J2SE) 5.0 Release 4 delivers improved
reliability and compatibility for Java 2 Platform Standard Edition 5.0 on
Mac OS X v10.4.3 and later. This release includes J2SE version
1.5.0_06. With this update J2SE 5.0 becomes the preferred Java
version, superseding Java 1.4.2. Java 1.4.2 is still installed on your
machine, but applications will run with J2SE 5.0 unless they specifically
request Java 1.4.2.”
● Mac-Intel? 4 volte più veloce?
● Mustang, Dolphin...
JUG Milano – Java sul tuo Mac 28
29. Riferimenti
● Java su apple.com
http://www.apple.com/macosx/features/java/
● Java su Apple Developer Connection
http://developer.apple.com/java/
● Mac Java Community su java.net
http://community.java.net/mac/
● Java Programming su O'Reilly
MacDevCenter
http://www.oreillynet.com/pub/ct/45
JUG Milano – Java sul tuo Mac 29