Nel 1991 James Gosling, Patrick Naughton e Mike Sheridan cominciarono l'elaborazione di un
nuovo linguaggio di programmazione che fosse veramente orientato agli oggetti (Object Oriented). In
effetti, fino a quel momento il linguaggio OOP più diffuso era ed è tuttora il C++ che ha una
grande affidabilità ed una potenza non indifferente ma che non supporta a pieno il modello Object
Oriented.
Nel 1993 il gruppo di programmatori della Sun, partecipa ad un progetto importante che poi
abbandoneranno ma che gli farà dirigere gli sforzi nella direzione della compatibilità multipiattaforma.
Nel 1994, quando ci fu un'esplosione di Internet, Java cominciava a fare i primi passi sulla grande rete.
Tuttora è uno dei linguaggi più utilizzati per creare applicazioni leggere da poter visualizzare
direttamente da Browser Web.
Java è un linguaggio completamente rivolto agli oggetti, durante la programmazione non si può
sbagliare e scrivere pezzi di codice non orientato agli oggetti come succedeva per la programmazione in
C++. In un certo senso Java non soffre dell'ereditarietà di un linguaggio non OOP come il C. Java si
appoggia su di una macchina virtuale (Virtual Java machine), vale a dire un software presente nel
computer che riesce a tradurre il codice bytecode in istruzioni comprensibili alla macchina.
Il bytecode
non è altro che il file finale che si ottiene dal processo della compilazione, ed è costituito da una
sequenza di bytes che rappresentano il linguaggio della macchina virtuale. Questo codice essendo
costituito da byte è molto leggero e quindi ideale per la rete. Da questo appena detto penserete di aver
trovato il linguaggio perfetto; in effetti se non fosse per alcuni problemi legati alla macchina virtuale
si potrebbe dire che Java è il linguaggio ideale.
In realtà la macchina virtuale, il cuore della
tecnologia Java, è un software e come tale impiega un sacco di tempo per fare le operazioni di traduzione
del codice. La sfida tecnologica per il futuro di java sarà quella di trovare un modo per spostare al
livello hardware la conversione delle istruzioni e quindi ricreare una macchina Java non più virtuale ma
parallela a quella esistente. Se ciò accadesse java avrebbe una diffusione paragonabile a quella del C++
per tutte le applicazioni.
Le applet sono i programmi in java per il Web. In java si posso creare due tipi di applicazioni: una standard che permette un controllo sulla macchina paragonabile ai programmi in C++ e l'altra per la applicazioni sulla rete e vengono chiamate applet. Per ovvi problemi di sicurezza le applet sono state ideate in maniera tale da non poter scrivere o leggere file su macchine remote.