English (UK)

Tratto da Wikipedia, l'enciclopedia libera.

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 è possibile con la compilazione del codice di Java in un linguaggio intermedio bytecode, basato su istruzioni semplificate che ricalcano il linguaggio macchina. Esso viene eseguito da una macchina virtuale, cioè da un interprete: Java è quindi, in linea di massima, un linguaggio interpretato. 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.

La portabilità è un obiettivo tecnicamente difficile da raggiungere, e il successo di Java in questo ambito è materia di alcune controversie. Sebbene sia in effetti possibile scrivere in Java programmi che si comportano in modo consistente attraverso molte piattaforme diverse, bisogna tenere presente che questi poi dipendono dalle virtual machine, che sono programmi a sé e che hanno inevitabilmente i loro bug, diversi dall'una all'altra: per questo è nata una parodia dello slogan di Sun "Scrivi una volta, esegui dovunque" ("write once, run everywhere"), che è diventato "Scrivi una volta, fai il debug ovunque".

Le prime implementazioni del linguaggio usavano una virtual machine che intepretava il bytecode per ottenere la massima portabilità, definita Architecture Neutral. Questa soluzione si è però rivelata poco efficiente, in quanto i programmi interpretati erano molto lenti. Per questo, tutte le implementazioni recenti di macchine virtuali Java hanno incorporato un JIT compiler, cioè un compilatore interno, che al momento del lancio traduce al volo il programma bytecode Java in un normale programma nel linguaggio macchina del computer ospite. Inoltre, questa ricompilazione è dinamica, cioè la virtual machine analizza costantemente il modello di esecuzione del codice (profiling), e ottimizza ulteriormente le parti più frequentemente eseguite, mentre il programma è in esecuzione. Questi accorgimenti, a prezzo di una piccola attesa in fase di lancio del programma, permettono di avere delle applicazioni Java decisamente più veloci e leggere. Tuttavia, anche così Java resta un linguaggio meno efficiente dei linguaggi compilati come il C++, scontando il fatto di possedere degli strati di astrazione in più, e di implementare una serie di automatismi, come il garbage collector, che se da un lato fanno risparmiare tempo ed errori in fase di sviluppo dei programmi, dall'altro consumano memoria e tempo di CPU in fase di esecuzione del programma finito.

Tratto da Wikipedia, l'enciclopedia libera.

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 entità reali o astratte ma ben definite (oggetti). Questi oggetti, come nella vita pratica, hanno proprietà rappresentate da valori, e qualità o meglio metodi: ciò che sanno fare questi oggetti. Si pensi ad una automobile: ha delle proprietà come il colore o il numero di porte, e dei metodi, per esempio può girare a destra o sinistra, andare avanti o indietro, accelerare, decelerare ecc. Riportando la programmazione in questi termini è facile capire come questo renda più facile la gestione di grandi progetti, migliorarne la qualità e la mantenibilità.

L'eredità in java è implementata mediante la parola chiave extends applicato dopo la dichiarazione di una classe

Una classe estende sempre una e una sola altra classe, ma può a sua volta essere estesa da un numero arbitrario di classi, se non specificato la classe estende di norma la classe Object

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 creiamo una classe Quadrato che estende la classe Quadrilatero da cui deriva tutti gli attributi (le variabili di istanza) e tutti i comportamenti (i metodi di istanza) relativi ad un qualunque quadrilatero, salvo poi riscrivere (overriding) quei comportamenti che sono prettamente associati ai quadrati (come ad esempio avere 4 lati uguali).

L'overriding si attua semplicemente scrivendo all'interno della classe che estende (in questo caso la classe Quadrato) il metodo che vogliamo riscrivere, utilizzando la stessa firma del relativo metodo della superclasse (deve avere lo stesso nome e gli stessi attributi, in numero e tipo)

È bene puntualizzare, quindi, che la tecnica dell'ereditarietà serve per specificare e specializzare un determinato comportamento, non viceversa. In java non è prevista l'ereditarietà multipla (una classe può avere al più una superclasse).

L'utilizzo di una interfaccia in java consente a tutti gli oggetti che implementano di unificare il loro comportamento. Ovvero l'oggetto interface in java è una semplice dichiarazione di metodi che tutte le classi che implementano l'interfaccia devono realizzare al loro interno.

Con l'implementazione dell'interfaccia la classe Quadrato deve contenere al suo interno i metodi calcolaPerimetro e calcolaArea propri che non possono essere ereditati dalla classe padre. L'utilizzo delle interfacce viene usato quando si hanno delle gerarchie di oggetti, o oggetti semplici che possiedono delle operazioni comuni (metodi), ma l'implementazione di queste sono differenti una dall'altra.

Java è un linguaggio di programmazione creato da Sun, ma le sue specifiche sono aperte: ne esistono quindi implementazioni sviluppate indipendentemente, ad esempio da IBM o dal Progetto GNU. In questi tempi sta infatti migrando dalla versione free di Sun Microsystems ad una versione open source sotto licenza GPL, voluta dalla stessa Sun. Questo apre nuovi orizzonti soprattuto nell'integrazione del linguaggio in ambienti linux totalmente open source.

Per amore di completezza e di cronaca, riporto quanto scritto su programmazione.it da Antonino Salvatore Cutrì a riguardo:

IcedTea è il nome di un progetto di integrazione e di sviluppo, lanciato da Red Hat lo scorso giugno, con l'obiettivo di rendere l'OpenJDK — l'implementazione free della piattaforma Java, rilasciata da Sun Microsystems nel corso di quest'anno — usabile ed installabile senza richiedere altro software che non sia coperto dalla licenza GPL.

Questo significa, soprattutto per RedHat che ne sponsorizza direttamente il progetto, la possibilità di includere senza problemi di licenza l'OpenJDK nella distribuzione Fedora.

Sostanzialmente IcedTea mette a disposizione degli sviluppatori la possibilità di compilare il codice sorgente dell'OpenJDK usando il GNU Compiler for Java (GCJ) e prendendo elementi del progetto GNU Classpath per sostituire i tool non free ancora presenti all'interno dell'implementazione open source Java di Sun.

Tratto da Wikipedia, l'enciclopedia libera.

Il linguaggio Java è un linguaggio di programmazione orientato agli oggetti, derivato dal C++ (e quindi indirettamente dal C) e creato da James Gosling e altri ingegneri di Sun Microsystems. Il gruppo iniziò a lavorare nel 1991, il linguaggio inizialmente si chiamava Oak. Il nome fu successivamente cambiato in Java a causa di un problema di copyright (il linguaggio di programmazione Oak esisteva già nel 1991). Java fu annunciato ufficialmente il 23 maggio 1995 a SunWorld. La piattaforma di programmazione Java è fondata sul linguaggio stesso, sulla Java Virtual Machine (JVM) e sulle API. Java è un marchio registrato di Sun Microsystems. Il 13 novembre 2006 la Sun Microsystems ha rilasciato la sua implementazione del compilatore Java e della macchina virtuale sotto licenza GPL. L'8 maggio 2007 SUN ha rilasciato anche le librerie (tranne alcune componenti non di sua proprietà) sotto licenza GPL rendendo Java un linguaggio di programmazione la cui implementazione di riferimento è libera.

Java venne creato per soddisfare quattro scopi:

  • 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

Per facilitare il passaggio a questo linguaggio per i programmatori old-fashioned legati in particolare a linguaggi come il C la sintassi di base (cicli, operatori, ...) è stata mantenuta pressoché identica.

In questi mesi spopolano nel web le mappe satellitari del nostro bel pianeta. In prima linea, come sempre, la grande G con GoogleMaps per la versione sito e Google Earth per la versione stand alone. Google non è l'unico però e per il fronte degli sviluppatori Java è disponibile un progetto open source, chiamato GeoTools, che mette a disposizione una serie di librerie per integrare nelle proprie applicazioni proprio queste mappe. Non mi dilungo ulteriormente perché nel sito ufficiale c'è davvero tutto.

http://geotools.codehaus.org/

Pagina 8 di 8

© 2007 - 2019 Bruno Tessaro. My life in the web. All right reserved.