venerdì 17 ottobre 2014

[JAVA] Introduzione


Java nasce nel 1995 da John Cage (direttore dello Science Office di Sun Microsystems) e Marc Andreessen (cofondatore e vicepresidente di Netscape Corporation).

13 tra i maggiori esperti di informatica degli anni ’80 si riunirono a Menlo Park in Californa (quello che all’epoca era chiamato  Stealth Project, poi rinominato Green Projet), per realizzare un linguaggio che, come il C++, potesse trarre vantaggio dal nuovo modello di programmazione ad oggetti ma che non fosse low-level (il C++ era pur sempre una evoluzione del C) e che si occupasse automaticamente della gran parte dei dettagli di gestione della memoria e potesse essere facilmente trasferito su processori e dispositivi diversi.

Dopo 2 anni di lavoro del Green Team nacque un linguaggio chiamato Oak che rischiava di finire cancellato se Sun ed il Green Team stesso non avessero avuto la felice idea di catturare con il loro linguaggio la vera “next-wave” degli anni 90: Internet.

Nel giro di pochi mesi riuscirono a sviluppare un web browser interamente in Java (Sun’sHotJava, 1994) con il quale poterono mostrare l’idea che avrebbe legato il nuovo linguaggio alla evoluzione di Internet: le applets, piccole applicazioni che attraverso un browser potevano essere distribuite ed eseguite come mai prima. Intessendo infine rapporti con Netscape Corporation ed arrivando ad avere il supporto per le applet nel Navigator nel 1995 Sun garantì una rapida diffusione a Java.

Java e OOP (Object Oriented Programming)

Java nasce per creare un linguaggio Object Oriented che risolvesse sostanzialmente due punti concreti: 

1) Garantire maggiore semplicità rispetto al C++
2) Permettere la realizzazione di programmi non legati ad una architettura precisa

Il primo punto fu risolto creando il primo linguaggio basato su un sistema di gestione della memoria chiamato gargbage collection in cui la memoria viene assegnata e rilasciata a seconda delle esigenze del programma.

Il secondo punto fu risolto applicando il concetto di Macchina Virtuale (JVM) e facendo in modo che i programmi non fossero compilati in codice macchina ma in una sorta di codice intermedio (bytecode) che deve essere, a sua volta, interpretato da un secondo programma, la macchina virtuale appunto.

Lo stesso codice può essere così eseguito su più piattaforme trasferendo il bytecode a condizione che sia disponibile una JVM.

Java, C, C++ e JavaScript

Java deriva dal C buona parte della sua sintassi,  mentre dal C++ deriva l’approccio object-oriented basato sulle classi.
Java e JavaScript non hanno alcuna similitudine in comune: ci si limita quasi esclusivamente al nome e alla una sintassi molto vicina al C.

Le versioni di Java

La prima implementazione è del 1995 (Java 1.0) e mantenne la promessa dello sviluppo WORA. Essendo questo linguaggio abbastanza sicuro per gli standard dell’epoca, la maggior parte dei web browser seguirono Netscape Navigator e la incorporarono per permettere l’utilizzo delle applet.
Insieme alla prima JVM fu rilasciato anche il JDK 1.0 (Java Development Kit) che includeva sia l’ambiente di esecuzione (JVM + librerie, chiamato JRE, Java Runtime Environnement) che il compilatore (java to bytecode, javac) e le tool di sviluppo.

Java 2

La versione Java 1.2 fu rilasciato nel 1998 come un quick fix delle versioni precedenti ma fu considerata l’inizio per un nuovo Java, da cui il nome Java2 che ha accompagnato fino adesso ogni nuovo aggiornamento di Java.
I maggiori cambiamenti furono: 

- Riscrittura del sistema di event handling (aggiunta dell’Event Listner)
- Introduzione del JIT (Just In Time compiler) 

Con la versione Java2 furono introdotte anche 2 nuove distribuzioni: 

- J2EE, destinata allo sviluppo Enterprise (Java 2 Enterprise Edition) 
- J2ME, destinata allo sviluppo si dispositivi mobile ed embedded (Java 2 Micro Edition) 

La distribuzione fu chiamata J2SE (Java 2 Standard Edition).

Java 3

Il terzo aggiornamento viene rilasciato nel maggio 2000 i cui cambiamenti più rilevanti sono stati: 

- Inclusione di HotSpot JVM (macchina virtuale ottimizzante ed adattativa)
- JavaSound
- Java Naming & Directory Interface (JNDI) nelle core libraries 
- JDPA (Java Platform Debugger Architecture)

Java 4

Del 2002 è la versione Java 1.4 che ha aumentato le caratteristiche del linguaggio e le API disponibili, con l’aggiunta di: 

- Assertion; 
- Regular Expression
- XML processing
- Non-blocking I/O
- Logging

Java 5

Del 2004 è la versione 1.5 che include: 

- Generics 
- Autoboxing/unboxing
- Static imports
- Annotation/Metadata

Java 6

Nel Dicembre 2006 è stata rilasciata la 1.6, che aggiunge: 

- Web services
- Scripting (che facilita l’embedding in java di scripting engines, tra cui uno per il Javascript basato su Mozilla Rhino)
- Desktop APIs e Desktop deployment
- Security 

Java 7

La versione la 1.7, rilasciata nel Luglio 2011 aggiunge al linguaggio il supporto della JVM per i linguaggi dinamici, nuova libreria file I/O e nuove APIs per la grafica.

Java 8

La versione 1.8 di Java è quella attuale e presenta: 

- Crittografia
- Un nuovo Interprete JavaScript