Java (linguaggio di programmazione): differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
non esiste più Sun One Studio Community, ora c'è NetBeans!
mNessun oggetto della modifica
Riga 25:
In realtà gli applet non hanno avuto molta fortuna. Infatti presuppone che il client in cui essi vengono eseguiti abbia installata la JRE (deve eseguire il codice dell'applet).
Hanno avuto fortuna le applicazioni che prevedono il cosidetto thin-client, cioè un client 'leggero' che non ha bisogno di particolari strumenti per eseguire il codice remoto (a volte è necessario solo il browser).
 
==Altri aspetti di interesse==
Rispetto alla tradizione dei linguaggi a oggetti da cui deriva (e in particolare rispetto al suo diretto progenitore, il [[C plus plus|C++), Java ha introdotto una serie di notevoli novità rispetto all'estensione della sua semantica. Fra le più significative si possono citare probabilmente la possibilità di costruire [[GUI]] (interfacce grafiche) con strumenti standard e non proprietari (per il C++ e altri linguaggi analoghi solitamente le GUI non fanno parte del linguaggio, ma sono delegate a librerie esterne), la possibilità di creare applicazioni [[multithreading|multi-thread]], ovvero che svolgono in modo [[concorrenza (informatica)|concorrente]] molteplici attività, e il supporto per la [[riflessione (informatica)|riflessione]], ovvero la capacità di un programma di agire sulla propria struttura e di utilizzare classi caricate dinamicamente dall'esterno.
 
Fra gli argomenti che depongono spesso a favore di Java nella scelta del linguaggio di implementazione di un progetto software moderno, inoltre, si deve certamente contare la vastità delle librerie standard di cui il linguaggio è dotato, e che in particolare contribuiscono a renderlo altamente integrabile con le altre tecnologie. Alcuni esempi di funzionalità di libreria di Java sono:
 
* accesso ai [[database]] [[ODBC]]
* manipolazione documenti [[XML]]
* dialogo con piattaforme [[CORBA]]
* potenti strumenti per la programmazione lato [[server]] nel contesto [[World Wide Web|Web]]
* supporto nativo per gran parte dei protocolli della famiglia [[Suite di protocolli Internet|IP]]
* supporto per le applicazioni [[multimedialità|multimediali]], [[streaming audio]] e [[streaming video|video]]
 
 
== Valutazione ==
Secondo molte persone, la tecnologia Java raggiunge ragionevolmente bene tutti i suoi obiettivi. Il linguaggio comunque non è privo di incertezze. Java tende ad essere più 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 è quindi possibile ugualmente usare queste caratteristiche.
Riga 33 ⟶ 46:
Alcuni programmatori lamentano anche la mancanza dell'ereditarietà multipla, un potente mezzo di molti linguaggi orientati agli oggetti, tra cui il C++. Il linguaggio Java separa l'ereditarietà del tipo dall'implementazione, permettendo l'ereditarietà multipla dei tipi attraverso le interfacce. Questo permette di ottenere la maggior parte dei benefici dell'ereditarietà multipla evitando molti dei suoi pericoli. Inoltre, attraverso l'uso di classi concrete, classi astratte e interfacce, un programmatore ha la possibilità di scegliere un grado nullo, parziale o completo di implementazione dell'oggetto che definisce, essendo assicurata la massima flessibilità nella progettazione.
 
Alcune persone pensano che per particolari progetti, la programmazione orientata agli oggetti renda il lavoro più difficile. Questa particolare lamentela non è peculiare di Java, ma è rivolta a tutti i linguaggi di questo tipo. Per contro, la gran parte delle aziende che sviluppano software ha eseguito da tempo il "salto" verso questo nuovo tipo di tecnologie.
 
== Linguaggio ==