[precedente] Staroffice 4 - Copertina - Indice [successivo]

Articoli


Java sotto Linux

Seconda parte

Perché  Java?

  1. Introduzione
  2. Nell'articolo Java sotto Linux si sono descritti, in termini molto generali, le caratteristiche peculiari del linguaggio; tale  primo articolo, che dà il titolo  e l'avvio alla serie di scritti su Java, è stato pubblicato nel numero di Maggio 1998 del Pluto Journal. In particolare, in quel primo  articolo è stato indicato il modo in cui procurarsi tutto il software e la documentazione necessari per installare  e configurare la Virtual Machine e la libreria API  di Java e, inoltre, sono stati forniti alcuni links a documentazione e codice sorgente disponibili gratuitamente su Internet; tali  strumenti sono necessari (e largamente sufficienti) a chiunque desideri studiare  Java usando la ricchissima messe di documentazione e software disponibile gratuitamente su Internet. 
    Il presente articolo, il Secondo della Serie, riprenderà i concetti fondamentali della programmazione Object Oriented, completando con maggiore dettaglio, e con una prospettiva più ampia, i brevi cenni tecnici dati nel primo articolo; inoltre, si affronteranno alcune considerazioni di natura filosofica (per così dire ...) riguardo alle potenzialità ed alla ambizione di Java; insomma: i fini  ed i mezzi del linguaggio. 
     

  3. Mezzi e Fini

  4.  
    2.1 Ulteriori considerazioni sul concetto di Classe in Java (Mezzi ...)

    Nel primo articolo, per descrivere ed esemplificare il conceto di Classe, si è fatto riferimento ad un oggetto concreto della vita quotidiana: un generico tavolo.  Naturalmente, una Classe è una struttura, costruita con un preciso ordine, contenente dati e algoritmi concepiti appositamente e particolarmente per elaborare proprio i  dati medesimi della Classe; in quanto tale, una Classe può rappresentare qualsiasi concetto, che abbia o meno una corrispondenza concreta nella realtà. Ad esmpio, una Classe può rappresentare il modello per una matrice quadrata di ordine n, in termini di strutture dati ed algoritmi per elaborare tali dati; in tal caso, i metodi (algoritmi e procedure) della Classe potrebbero essere algoritmi per calcolare, ad esempio, la traccia o il determinante o gli autovalori, etc., della matrice; istanziando una tale Classe, si ottengono Oggetti che, concettualmente, si comportano come matrici: sono matrici che possiedono, all'interno della loro struttura (organismo) gli strumenti per elaborare (conoscere) se stesse. Dunque, un Oggetto ha una esistenza propria ed, entro certi limiti, autonoma; esso concede i propri servigi a qualsiasi altro Oggetto glieli richieda invocandone gli  strumenti (metodi) per elaborare i propri dati; l'Oggetto invocato memorizza nelle sue strutture dati interne le informazioni passategli dall'Oggetto richiedente il quale, inoltre, indica la procedura (il metodo) con cui desidera  che l'Oggetto invocato elabori i dati passatigli; quest'ultimo esegue il metodo richiesto sui dati ricevuti e fornisce il risultato dell'elaborazione all'Oggetto richiedente. L'esecuzione di un programma Java può essere schematizzato come una rete di relazioni tra tutti gli Oggetti che concorrono e collaborano alla elaborazione di determinati dati; i fili di una tale rete di relazioni sono costituiti dai messaggi,  dalle chiamate e dal ritorno di dati che gli Oggetti si scambiano vicendevolmente. Il flusso e la diramazione del processo di elaborazione viene diretto dal metodo main della Classe madre, ovvero: dal metodo principale della Classe principale del programma; tale classe coincide, formalmente e sostanzialmente, con il programma medesimo; la Classe principale è il programma, ed essa ha, appunto, lo stesso nome del file sorgente. 
    Ora, la libreria API di Java implementa  (come Classi, Metodi ed Interfacce) la suite TCP/IP dei protocolli di comunicazione e, quindi, Java può aprire una connesione su Internet per collegarsi a qualsiasi nodo della rete; quindi, una Classe usata da un programma Java non deve necessariamente risiedere sulla macchina su cui gira il programma: la Classe può essere definita in una libreria residente su qualsiasi macchina accessibile attraverso  Internet per mezzo di un protocollo di rete come TCP/IP
     

    2.2 La Libreria API

    La libreria API non è altro che un insieme di Classi che implementano, in codice macchina nativo, le funzioni necessarie per usare  le risorse software ed hardware di una determinata piattaforma. Analogamente a come accade per le Classi scritte dal programmatore, per usare le risorse della libreria API occorre instanziarne in Oggetti le Classi di cui si necessita; attraverso tali Oggetti si accederà alle risorse della piattaforma su cui il programma gira. Ad esempio, per manipolare un file occorre innanzitutto  creare un Oggetto di tipo file, istanziando l'apposita Classe della libreria API; quindi, usando i metodi e le strutture di un tale Oggetto, si possono creare file, aprirli, leggerli, cancellarli, aggiornarli, etc. Insomma, la Classe  (e quindi l'Oggetto da essa istanziato) contiene tutti i metodi (funzioni) necessari per operare su un file. 
     

    2.2 La Mente della Rete (... Fini)

    La implementazione del concetto di Classe, e quindi di Oggetto, costituise, a mio avviso, la caratteristica più interessante e più promettente dei linguaggi OOP in generale e, in particolare, di Java. In particolare, la spiccata caratterizzazione di Java come linguaggio multipiattaforma rende tale linguaggio lo strumento ideale per la realizzazione di  applicazioni distribuite su Internet, essendo Internet costituito dalla più diverse e varie piattaforme hardware e software: attualmente, da questo punto di vista, nessun linguaggio di programmazione può competere con Java. Gli Oggetti e le Classi di Java possono essere suggestivamente paragonati a cellule distribuite sulle macchine che costituicono Internet; tali cellule potrebbero essere collegate vicendevolmente attravarso Internet e costituirebbero gli elementi specializzati intelligenti (concetti, nozioni, relazioni logiche) di un struttura (la mente di Internet) che si estenderebbe attraverso tutta la vastita della  rete. 
     

  5. Limiti di Java

  6.  
    Il principale limite di Java è la relativa lentezza della esecuzione del codice, soprattutto in confronto alla velocità di esecuzione del codice macchina nativo generato da un compilatore. Infatti, come si è scritto diffusamente nel primo articolo, il compilatore javac non genera file oggetto in codice macchina nativo,  ma una rappresentazione intermedia del file sorgente; tale rappresentazione intermedia è detta bytecode. Successivamente, il bytecode viene interpretato attraverso l'interprete di Java, invocato con il comando java. È evidente, dunque, come dal punto divista della velocità di esecuzione Java è penalizzato proprio dalla sua stessa progettazione: le caretteristiche che lo rendono unico come linguaggio multipiattaforme sono la causa del suo principale e fondamentale limite.
     

 


Note

API: cfr. l'articolo Java sotto Linux, pubblicato sul Pluto Journal del Maggio 1998

Virtual Machine: ibidem
 


LINK
 

di Francesco Barbuto


[precedente] Staroffice 4 - Copertina - Indice [successivo]