Java: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
(Valutazione) corretto Link a C++
m Informatica: JavaScript non è chiamato "Java", quindi non ha senso che si trovi qui
 
(151 versioni intermedie di 95 utenti non mostrate)
Riga 1:
{{Disambigua}}
Il linguaggio Java &egrave; un [[linguaggio di programmazione]] orientato agli oggetti, creato da James Gosling e altri ingegneri di [[Sun Microsystems]]. Fu annunciato ufficialmente il [[23 maggio]] [[1995]] a <nowiki>SunWorld</nowiki>. La piattaforma di programmazione Java &egrave; fondata sul linguaggio stesso, sulla Java virtual machine (JVM) e sulle [[API]]. Java &egrave; un marchio registrato di Sun Microsystems.
== Geografia ==
; {{GEO}}
* '''[[Java (Georgia)|Java]]''' – distretto della regione di [[Shida Kartli]]
; {{INA}}
* '''[[Giava]]''' o '''Java''' – isola
; {{ITA}}
* '''[[Isola Java]]''' – isola di [[Policoro]]
 
; {{USA}}
=== Panoramica ===
* '''[[Java (Dakota del Sud)|Java]]''' – città della [[Contea di Walworth (Dakota del Sud)|contea di Walworth]], [[Dakota del Sud]]
Java venne creato per soddisfare quattro scopi:
* '''[[Java (New York)|Java]]''' – città della [[Contea di Wyoming (New York)|contea di Wyoming]], [[New York (stato)|New York]]
# essere 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
 
== Informatica ==
=== Orientamento agli Oggetti ===
* '''[[Java (linguaggio di programmazione)|Java]]''' – linguaggio di programmazione ad oggetti
La prima caratteristica, l'orientamento agli oggetti, si riferisce a un moderno metodo di programmazione e progettazione. L'idea principale della programmazione ad oggetti consiste nel rendere il software la rappresentazione di cose reali (oggetti). Il suo obiettivo &egrave; di rendere pi&ugrave; facile la gestione di grandi
* '''[[Piattaforma Java|Java]]''' – piattaforma software creata da [[Sun Microsystems]] ed attualmente sviluppata da [[Oracle Corporation|Oracle]] per lo sviluppo ed esecuzione di programmi scritti in linguaggio Java
progetti, migliorarne la qualit&agrave; e ridurre il numero dei progetti
che falliscono.
 
== Musica ==
=== Indipendenza dalla piattaforma ===
* '''[[Java (gruppo musicale)|Java]]''' – gruppo musicale francese
La seconda caratteristica, l'indipendenza dalla piattaforma, significa che l'esecuzione di programmi scritti in Java deve avere un comportamento simile su hardware diverso. Si dovrebbe essere in grado di scrivere il programma una volta e farlo eseguire dovunque. Questo &egrave; possibile con la compilazione del codice di Java in istruzioni dette bytecode -- istruzioni semplificate conformi ad uno standard. Esso viene eseguito da una virtual machine, un programma scritto nel codice nativo dell'hardware che lo traduce in codice usabile con l'hardware.
* '''''[[Java (singolo)|Java]]''''' – brano musicale [[reggae]]/[[dub]] di [[Augustus Pablo]] del 1972
Inoltre, vengono fornite librerie standardizzate per permettere l'accesso alle caratteristiche della macchina (come grafica e networking) in modo unificato. Il linguaggio Java include anche il supporto per i programmi con [[multithread]], necessario per molte applicazioni che usano la rete.
 
== Natura ==
La prima implementazione del linguaggio usava una virtual machine interpretata per avere la portabilit&agrave;, e molte implementazioni lo fanno ancora. Queste producono programmi pi&ugrave; lenti rispetto a quelli creati con un compilatore C++ o con compilatori Java pi&ugrave; recenti: per questo motivo il linguaggio ha
* '''[[Java (caffè)|Java]]''' – varietà di [[Coffea arabica|caffè]] originaria dell'[[Giava|omonima isola]]
sofferto della reputazione di produrre programmi lenti. Implementazioni pi&ugrave;
* '''[[Bantam di Giava|Java]]''' – razza di [[Gallus gallus domesticus|pollo]]
recenti della Virtual Machine producono programmi pi&ugrave; veloci, usando tecniche multiple.
 
== Altro ==
La prima di queste consiste nel compilare direttamente in linguaggio nativo come con un compilatore tradizionale, evitando completamente il bytecode. Questo permette di raggiungere grandi performance, ma a spese della portabilita'. Un'altra tecnica impiega un compilatore "a richiesta" detto JIT ("Just In Time"). Esso compila il
* '''[[Lingua giavanese|Java]]''' – in linguistica, la lingua parlata dalle popolazioni che abitano la parte centrale e orientale dell'isola di Giava
bytecode Java in codice nativo nel momento in cui viene avviato. Virtual Machine pi&ugrave; sofisticate usano anche la ricompilazione dinamica, con la quale la VM analizza il comportamento del programma in esecuzione ricompilando e ottimizzando le parti critiche.
* '''[[Giava (danza)|Java]]''' – danza diffusa in Europa all'inizio del XX secolo
Entrambe le tecniche permettono al programma di avvantaggiarsi della velocita' del codice nativo senza perdere portabilit&agrave;.
* '''[[Java (personaggio)|Java]]''' – nei fumetti, l'aiutante di [[Martin Mystère]]
* '''[[Java (gioco da tavolo)|Java]]''' – gioco da tavolo [[Gioco in stile tedesco|in stile tedesco]] di [[Wolfgang Kramer]] e [[Michael Kiesling]]
* '''[[Hr. Ms. Java|Hr. Ms. ''Java'']]''' – incrociatore leggero della [[marina militare olandese]], prima unità dell'[[Classe Java|omonima classe]], affondato il 27 febbraio 1942 durante la [[battaglia del Mare di Giava]]
 
== Pagine correlate ==
La portabilit&agrave; &egrave; un obiettivo tecnicamente difficile da raggiungere, e il successo di Java in questo ambito &egrave; materia di alcune controversie.
* [[Jawa]]
Sebbene sia in effetti possibile scrivere programmi che si comportano in modo consistente attraverso molte piattaforme diverse, il grande numero di queste ultime con piccoli errori o inconsistenze porta ad una parodia dello slogan di Sun "Scrivi una volta, esegui dovunque" facendolo diventare "Scrivi una volta, fai il debug ovunque".
 
=== Esecuzione sicura del codice remoto ===
La piattaforma Java fu uno dei primi sistemi a fornire un largo supporto per l'esecuzione del codice da sorgenti remote. Una [[applet]] pu&ograve; essere avviata nel browser dell'utente, eseguendo codice scaricato da un server HTTP remoto. Questo codice viene eseguito in un'area ("sandbox") altamente ristretta, che protegge l'utente dalla possibilit&agrave; che il codice sia malevolo o abbia un comportamento non desiderato; chi pubblica il codice pu&ograve; applicare un certificato che usa per firmare digitalmente le applet dichiarandole "sicure", dando loro il permesso di uscire dall'area ristretta e accedere al filesystem e al network, presumibilmente sotto il controllo dell'utente.
 
=== Valutazione ===
Secondo molte persone, la tecnologia Java raggiunge ragionevolmente bene tutti questi obiettivi. Il linguaggio comunque non &egrave; privo di incertezze. Java tende ad essere pi&ugrave; ad alto livello di altri linguaggi simili (come il [[Linguaggio C Plus Plus|C++]]); questo comporta carenze in alcune caratteristiche come i tipi di dati specifici, puntatori alla memoria di basso livello e metodi di programmazione come il sovraccaricamento degli operatori.
 
Nonostante queste caratteristiche siano abusate frequentemente dai programmatori, esse sono anche strumenti potenti. Comunque, la tecnologia Java include Java Native Interface (JNI), un modo per chiamare codice nativo da codice Java. Con JNI &egrave; quindi possibile ugualmente usare queste caratteristiche.
 
Alcuni programmatori lamentano anche la mancanza dell'ereditariet&agrave; multipla,
un potente mezzo di molti linguaggi orientati agli oggetti, tra cui il C++. Il linguaggio Java separa l'ereditariet&agrave; del tipo dall'implementazione, permettendo l'ereditariet&agrave; multipla dei tipi attraverso le interfacce.
Questo permette di ottenere la maggior parte dei benefici dell'ereditariet&agrave; multipla evitando molti dei suoi pericoli. Inoltre, attraverso l'uso di classi concrete, classi astratte e interfacce, un programmatore ha la possibilit&agrave; di scegliere un grado nullo, parziale o completo di implementazione dell'oggetto che definisce, essendo assicurata la massima flessibilit&agrave; nella progettazione.
 
Alcune persone pensano che per particolari progetti, la programmazione orientata agli oggetti renda il lavoro pi&ugrave; difficile. Questa particolare lamentela non &egrave; peculiare di Java, ma &egrave; rivolta a tutti i linguaggi di questo tipo.
 
=== Linguaggio ===
 
==== Programma Hello World ====
 
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello world!");
}
}
 
==== Strutture di controllo ====
 
''while'' (Boolean expression) {
statement(s)
 
}
 
''do'' {
statement(s)
} ''while'' (Boolean expression);
 
''for'' (initialisation; termination condition; incrementing expr) {
statement(s)
}
 
==== Strutture Condizionali ====
 
''if'' (Boolean expression) {
statement(s)
}
 
''if'' (Boolean expression) {
statement(s)
} ''else'' {
statement(s)
}
 
''if'' (Boolean expression) {
statement(s)
} ''else if'' (Boolean expression) {
statement(s)
} ''else if'' (Boolean expression) {
statement(s)
} ''else'' {
statement(s)
}
 
''switch'' (integer expression) {
''case'' constant integer expr:
statement(s)
''break'';
...
''default:''
statement(s)
''break'';
}
 
==== Gestione delle eccezioni ====
 
''try'' {
statement(s)
} ''catch'' (exception type) {
statement(s)
} ''catch'' (exception type) {
statement(s)
} ''finally'' {
statement(s)
}
 
==== Goto =====
 
&Egrave; possibile inserire un'etichetta prima di ogni
dichiarazione
 
<nowiki>myLabel: aJavaStatement;</nowiki>
 
 
Il comando
 
''break'';
 
termina il ciclo corrente.
 
L'etichetto pu&ograve; essere usata per uscire da un ciclo for,
while o do-while
 
''break'' myLabel;
 
Un'espressione continue termina l'iterazione corrente e
inizia quella successiva
 
''continue;''
In aggiunta con
 
''continue'' label;
il flusso del programma pu&ograve; essere manipolato direttamente
da un ciclo esterno.
 
La dichiarazione
 
''return;''
termina un metodo.
 
Con
 
''return'' aValue;
 
aValue pu&ograve; essere restituito al metodo chiamante.
 
==== Tipi Primitivi ====
 
<table border width=80%>
<tr><th>Tipo di Variabile</th><th>Descrizione</th></tr>
<tr><td>byte</td><td>intero con segno a 8 bit</td></tr>
<tr><td>short</td><td>intero con segno a 16 bit</td></tr>
<tr><td>int</td><td>intero con segno a 32 bit</td></tr>
<tr><td>long</td><td>intero con segno a 64 bit</td></tr>
<tr><td>float</td><td>virgola mobile a 32 bit singola precisione
(standard IEEE 754)</td></tr>
<tr><td>double</td><td>virgola mobile a 64 bit doppia precisione
(standard IEEE 754)</td></tr>
<tr><td>char</td><td>carattere singolo Unicode</td></tr>
<tr><td>boolean</td><td>vero o falso</td></tr>
</table>
 
I caratteri usano la codifica a 16 bit Unicode. Contiene
tutti i caratteri usuali, oltre a tutti i set di caratteri
di molte lingue come Greco, Cirillico, Cinese, Arabo, ecc.
In si Java possono usare tutti questi
caratteri, anche se molti editor non hanno il supporto per i
set di caratteri diversi dal ASCII. Gli Array e le stringhe
non sono tipi primitivi ma oggetti.
 
==== Versioni ====
 
* JDK 1.0 1996, Solaris, Windows, MacOS Classic, Linux
* JDK 1.1 1997, Solaris, Windows, MacOS Classic, Linux
* JDK 1.2 1998, Solaris, Windows, Linux, ?
* JDK 1.3 2000 (conosciuto come Java 2), Solaris, Windows, MacOS X, Linux
* JDK 1.4 2002, Solaris, Windows, MacOS X, Linux
 
Java fu inizialmente rilasciato come il Java Development Kit
1.0 (JDK 1.0).
Questo comprende '''Java Runtime''' (la virtual machine e le
librerie di classi), e gli strumenti di sviluppo (es. il
compilatore Java).
Successivamente, Sun fornì un pacchetto che comprendeva solo Java
runtime,
chiamato Java RunTime Environment (JRE). Normalmente le persone
si
riferiscono ad una particolare versione di Java attraverso la
versione del
JDK (es. JDK 1.4)
Le versioni JDK 1.2 e successive sono spesso chiamate Java 2.
Per esempio, il nome ufficiale del JDK 1.4 &egrave; Java(TM) 2
Platform,
Standard Edition 1.4.
 
Il linguaggio &egrave; rimasto stabile dal JDK 1.0; la
libreria di
classi che viene fornita con JDK &egrave; stata progressivamente
ampliata
e modificata in alcune parti. Le estensioni e architetture legate
al
linguaggio Java comprendono:
[[J2SE]] Java 2 Platform Standard Edition;
[[J2EE]] Java 2 Platform Enterprise Edition;
[[J2ME]] Java 2 Platform Micro Edition;
[[Servlets]];
[[EJB]] Enterprise JavaBeans;
[[JSP]] JavaServer Pages;
[[JDO]] Java Data Objects;
[[JMS]] Java Message Service;
[[JAF]] JavaBeans Activation Framework;
[[Java Mail]];
[[JNI]] Java Native Interface;
[[JNDI]] Java Naming and Directory Interface;
[[JSML]] Java Speech Grammar Specification;
[[JDBC]] Java Database Connectivity;
[[JAIN]] Java Integrated Networks;
[[JDMK]] Java Dynamic Management Kit;
[[Jini]] Java Intelligent Network Infrastructure;
[[Jiro]] Java Interface for Regular Objects;
[[JXTA]] sigla che sta per "juxtapose" (porre a canto);
[[JavaSpaces]];
[[JMI]] Java Metadata Interface;
[[JMX]] Java Management Extensions.
[[JAXB]] Java Architecture for XML Binding
[[JAXP]] Java API for XML Processing
[[SAAJ]] SOAP with Attachments API for Java
[[JAX-RPC]] Java API for XML-based RPC
[[JAXR]] Java API for XML Registries
 
A parte il linguaggio molto semplice da imparare l'utilizzo delle archittetture e delle specifiche richiede un tempo di apprendimento molto lungo.
 
==== Come programmare in Java ====
 
La programmazione in Java &egrave; una specializzazione della
programmazione con linguaggi orientati agli oggetti.
 
Il linguaggio Java &egrave; un linguaggio orientato agli oggetti con una sintassi simile al [[linguaggio C]] e al [[Linguaggio C Plus Plus|linguaggio C++]]. Allo sviluppatore gi&agrave; esperto di programmazione OO, alcuni punti dovrebbero essere evidenziati:
 
# Java supporta solo la singola ereditariet&agrave; di classi, ma permette l'ereditariet&agrave; multipla di interfacce.
# Java ha una libreria di classi molto grande (detta Java API) simile a SmallTalk, e supporta molte caratteristiche, dai contenitori di oggetti a complesse esigenze di sicurezza.
# Java viene eseguito attraverso una Virtual Machine
 
L'apprendimento del linguaggio non &egrave; difficile, sebbene la padronanza completa
delle librerie sia un processo lungo. La maggior parte degli utenti iniziano con le classi come String e ArrayList.
 
Un buon punto di partenza per imparare Java &egrave; il [http://java.sun.com/docs/books/tutorial/ tutorial di Sun].
 
Un'altra pagina molto utile per i principianti e gli esperti &egrave; la pagina della sintassi Java aggiornata all'ultima versione, sempre presso il sito Sun, che si trova
[http://java.sun.com/j2se/1.4.1/docs/api/ qui]
 
Per sviluppare programmi in Java è sufficente un qualsiasi editor di testo. Comunque per aiutarci nella realizzazione dei nostri progetti estistono diversi IDE (Integrated Development Environment, ambiente di sviluppo integrato) che ci aiutano in tal senso alcuni dei quali a pagamento altri gratuiti.
 
Un ambiente di sviluppo per Java gratuito e soprattuto leggero è GEL (realizzato in Delphi), disponibile alla pagina http://www.gexperts.com solo per Windows; mentre Bluej, di chiara impostazione didattica, è disponibile per tutti i sistemi operativi al sito gratuito http://www.bluej.org/.
Un altro ambiente per lo sviluppo in Java (e non solo) più complesso, potente e sempre gratuito è Eclipse donato alla comunità di sviluppatori da IBM e scaricabile dalla pagina http://www.eclipse.org
Inoltre la Sun mette a disposizione un proprio ambiente di sviluppo gratuito (esiste anche una versione a pagamento) Sun One Studio Comunity Edition utilizzabile su diversi sistemi operativi. Questo ambiente è ricco di funzionalità ed è molto pesante. Il download è possibile effettuarlo da questa pagina http://wwws.sun.com/software/download/