Introduzione
------------------
Java è un linguaggio ideato dalla Sun Microsystem, inizialmente con lo scopo di
programmare dispositivi hardware indipendentemente dall'architettura.
Il primo nome che gli venne assegnato era Oak, però per problemi di copy venne
rinominato in Java; la leggenda dice che Java era la marca di caffè che bevevano alla Sun
e che un partecipante dell'assemblea ne rovesciò una tazza proprio quando bisognava
decidere il nuovo nome.
Un fatto che influenzò radicalmente le caratteristiche di Java fu internet, infatti Java venne
progettato nel periodo in cui la WWW stava iniziando a diffondersi. Adesso siamo tutti
d'accordo che internet serve(anche) per mettere a disposizione informazioni e dati. Però vi
sembra giusto che solo chi ha un determinato sistema operativo o solo quel browser possa
accedere correttamente al sito? Direi di no, dato che internet è di tutti per tutti.
Quindi Java funziona correttamente su qualsiasi OS e Browser, in cui sia installata
correttamente la JVM(Java Virtual Machine), ovvero l'interprete, discorso che mi porta al
secondo paragrafo.

Il segreto di tutto: bytecode
-------------------------------------
Quando compilo C o C++, creo codice macchina, quando assemblo asm creo linguaggio
macchina, quando compilo Visual Basic creo un collage di dll di win ed è ha anche lui una
Virtual Machine, ma sempre linguaggio macchina, quando compilo Java... creo bytecode:
un  struttura di bytes che viene letta dalla sopradetta JVM, che esegue le istruzioni come
se fossero state scritte in C.
Quindi Java è più lento del C vero e proprio, dato che il bytecode deve essere praticamente
ricompilato a run-time.
Ah, faccio notare che gli exe non esistono, in teoria,in Java, dato che .exe è un estensione
di windows, ma Java è indipentende dall' OS, qundi ci sono alcune nuove estensioni
personali di java:
.class: classe compilata in Java
.jar: archivio con dentro tutte le classi compilate
.java:  file sorgente

Cosa mi serve per iniziare
----------------------------------
Iniziare a programmare in Java è estremamente semplice, ma questo è relativo. Cmq ora
vi dirò i migliori tool per programmare in Java. Innanzitutto controllate se avete la JVM
se non è installata andate sul sito della Sun(<a href="http://java.sun.com" target=_new>http://java.sun.com</a>), e prendete la JVM
(sotto il nome di JRE) adatta per il vostro sistema, per chi ha windows c'è un exe con un
wizard e non ci sono problemi, per chi ha *nix dovrebe esserci il makefile oppure dei
precompilati, ma cmq trovate esaurienti guide sia nel sito della Sun sia da terze parti per la
rete.
Dopo aver preso la JVM, prendete il jsdk1.4 sempre dallo stesso sito, vi sconsiglio la
versione 1.5(nome in codice Tiger) finchè è una beta, anche se supporta:

• Metadata (Annotations)
• Generics: per chi sa il C++ praticamente i templates
• AutoBoxing e Auto-Unboxing
• Static import
• Foreach
• Enumeration
• Varargs
• Input/Output formattati
• Network
• Diagnostica e monitoring
• Pack200

e molte altre caratteristiche che mancavano alle precedenti versioni. Aspettiamo con ansia
una versione stabile.

Scaricati interprete e compilatore, dovreste lavorare solo con editor di testo e terminale,
ma finchè fate una "tipical hello world application", una tipica applicazione che si limita a
stampare hello world, o fare somme e divisioni o altri programmi di esercitazione, può
andare, ma quando si inizia a fare sul serio ci vuole qualcosa di potente e, cmq, sempre
gratuito: Eclipse(<a href="http://www.eclipse.org" target=_new>http://www.eclipse.org</a>) iniziato
dall'ibm e poi donato alla comunità del codice libero ,eclipse è un ambiente di sviluppo
capace di interagire con il compilatore java, la sua grande caratteristica è quella di potersi
estendere installando dei plugins, in Java ci sono plugin per le applicazioni mobile edition
(cellulari, palmari ecc...), disegnare la GUI e molto altro, inoltre ci sono plugin per compilare
C/C++, perl, codare in php,  in jsp(java in versione lato server tipo php, evitando le servlet...)
e molto altro.
L'ultima versione è la 3.0 M9, ma dato che è l'ultima(free e stabile si intende) ci sono pochi
plugin disponibili; dimenticavo è open source e si può entrare nell'organizzazione di
eclipse e fare anche noi plugin e metterli sul sito. Detto questo manca solo una cosa:
per eseguire un programma Java o si va a terminale o si fa il jar e lo si associa a
javaw, ma il 95%, se non di più, degli utenti è abituato cmq all'exe, quindi ci sono programmi
che dato il jar e la classe che contiene il metodo main, creano un exe che esegue
automaticamente i comandi dos per far partire la jvm sul jar inserito, risparmiando al
utente di configurarsi variabili d'ambiente ecc... un programma che fa questo è exe4j,
rintracciabile facilmente con google, un problema: non è free, cmq si può utilizzare il p2p o
semplicemente astalavista per il seriale(rispondete delle vostre azioni), oppue lo comprate
o trovate un altro programma free(jelud).

Documentezioni
---------------------
Ovviamente non basta avere il materiale, bisogna studiare da qualche fonte, io consiglio
da libri e dopo magari approfondire in rete, i libri che ho letto sono (in ordine):

"Fondamenti di Java 2" di Schildt
"La guida completa Java 2" 5a edizione di Schildt
"Sicurezza in Java" di Jess Garms e Daniel Somerfield

Il miglior libro per iniziare con java è "Thinking Java", è solo in inglese, ma sto leggendo
dallo stesso autore "Thinking C++" volume 2 in inglese e devo dire che l'autore è molto
chiaro.

Alcuni dati
--------------
Vi faccio venire la voglia di usare java:

Più di 1'500'000'000 di dispositivi usano Java
Più di 250'000'000 di telefoni usano Java
Più di 650'000'000 di desktop usano Java
Più di 500'000'000 di sim e smart card usano Java

Nel 2002 c'erano più di 3'500'000 sviluppatori esperti(senza contare i privati, i principianti
o chi lo usa poco), e ogni anno il numero aumenta di più del 10%
E tutti i dati stando aumentando.

Java è usato in carte d'identità digitali, telefoni, stampanti, webcam, sistemi telematici per
auto, desktop, attrezzature medicali, server, propulsori a getto, controlli di navigazione
Mars Rover della NASA, televisori, decoder... potrei continuare.

Java sta per raggiungere windows come estensione nel mercato in meno della metà del tempo.
Per qualsiasi carenza tecnica è possibile scrivere metodi nativi in C o C++.

----------------------------------------------------------------------------------------------
Introduziona finita, per domande postate sul forum o inviatemi una mail.