 |
Java venne creato per soddisfare quattro scopi:
- essere completamente orientato agli oggetti
- essere indipendente dalla piattaforma
- contenere strumenti e librerie per il networking
- essere progettato per eseguire codice da sorgenti remote in modo sicuro.
Per facilitare il passaggio a Java ai programmatori old-fashioned, legati in particolare a linguaggi come il C, la sintassi di base (strutture di controllo, operatori e così via) è stata mantenuta pressoché identica a quella del C. |
Orientamento agli oggetti
La prima caratteristica, l'orientamento agli oggetti, si riferisce a un moderno metodo di programmazione e progettazione, la programmazione orientata agli oggetti (OOP).
Ereditarietà
Questo sistema rende disponibile un modo per creare gerarchie di classi ben definite, ad esempio una classe Quadrilatero può definire alcuni comportamenti generali per tutte le figure geometriche con 4 lati, tuttavia si può presentare la necessità di aver bisogno di caratteristiche più specifiche per i nostri oggetti, quindi si creerà una classe Quadrato che estende la classe Quadrilatero da cui deriva tutti gli attributi (le variabili di istanza) e tutti i comportamenti (i metodi), salvo poi riscrivere (tramite overriding) quei comportamenti che sono prettamente associati ai quadrati (ovvero legati alla proprietà specifica dei quadrati di avere 4 lati e 4 angoli uguali).
Astrazione ed interfacce
Il Java consente la definizione di tipi astratti, di tipi, cioè, che definiscono delle operazioni (detti "metodi") che un qualunque utilizzatore (in gergo client) di una qualunque loro istanza potrà richiamare (in gergo, "invocare"), ma che non definiscono alcun comportamento per tali metodi. Il meccanismo dell'ereditarietà consente di estendere tipi concreti o astratti con altri tipi concreti o astratti, a seconda dell'architettura che il programmatore decide di imprimere al software. Non è possibile istanziare direttamente un tipo astratto; è necessario disporre di un apposito sottotipo concreto. Questo consente di realizzare clients che trattino in modo omogeneo tutti gli oggetti che forniscono un dato insieme di servizi, a prescindere dalla loro implementazione (e quindi dalla loro particolare classe - concreta - di appartenenza).
Indipendenza dalla piattaforma
L'indipendenza dalla piattaforma significa che l'esecuzione di programmi scritti in Java deve avere un comportamento simile su hardware diverso. In linea di principio, si dovrebbe essere in grado di scrivere il programma una sola volta e di farlo eseguire dovunque. Questo è possibile con la compilazione del codice di Java in un linguaggio intermedio detto bytecode, basato su istruzioni semplificate che ricalcano il linguaggio macchina. La portabilità è un obiettivo tecnicamente difficile da raggiungere, e il successo di Java in questo ambito è materia di alcune controversie.
|