Informazioni su Java, cos'è e perché è così popolare

Inside Java offre uno sguardo dietro la piattaforma Java e le tecnologie correlate. Nella colonna di questo mese, ti mostrerò una panoramica del linguaggio di programmazione Java.

Java - un'isola dell'Indonesia, un tipo di caffè e un linguaggio di programmazione. Tre significati molto diversi, ognuno con vari gradi di importanza. La maggior parte dei programmatori, tuttavia, è interessata al linguaggio di programmazione Java. In pochi anni (dalla fine del 1995), Java ha preso d'assalto la comunità del software. Il suo fenomenale successo ha reso Java il linguaggio di programmazione in più rapida crescita di sempre. C'è molto clamore su Java e cosa può fare. Molti programmatori e utenti finali sono confusi su esattamente di cosa si tratta e su ciò che Java offre.

Java è un linguaggio rivoluzionario

Le proprietà che rendono così attraente Java sono presenti in altri linguaggi di programmazione. Molte lingue sono ideali per determinati tipi di applicazioni, anche più di Java. Ma Java riunisce tutte queste proprietà in una sola lingua. Questo è un salto in avanti rivoluzionario per l'industria del software.

Diamo un'occhiata ad alcune delle proprietà in modo più dettagliato: -

Orientato agli oggetti

Molte lingue più vecchie, come C e Pascal, erano linguaggi procedurali. Le procedure (dette anche funzioni) erano blocchi di codice che facevano parte di un modulo o di un'applicazione. Procedure passate parametri (tipi di dati primitivi come numeri interi, caratteri, stringhe e numeri in virgola mobile). Il codice è stato trattato separatamente per i dati. Dovevi passare attorno alle strutture dati e le procedure potevano facilmente modificare i loro contenuti.

Java è un linguaggio orientato agli oggetti. Un linguaggio orientato agli oggetti si occupa degli oggetti. Gli oggetti contengono sia dati (variabili membro) che codice (metodi). Ogni oggetto appartiene a una particolare classe, che è un progetto che descrive le variabili membro ei metodi offerti da un oggetto. In Java, quasi ogni variabile è un oggetto di un tipo o di un altro - anche stringhe. La programmazione orientata agli oggetti richiede un modo diverso di pensare, ma è a

Portatile

La maggior parte dei linguaggi di programmazione è progettata per un sistema operativo e un'architettura di processore specifici. Quando il codice sorgente (le istruzioni che compongono un programma) sono compilati, viene convertito in codice macchina che può essere eseguito solo su un tipo di macchina. Questo processo produce codice nativo, che è estremamente veloce.

Un altro tipo di linguaggio è quello che viene interpretato. Il codice interpretato viene letto da un'applicazione software (l'interprete) che esegue le azioni specificate. Il codice interpretato spesso non ha bisogno di essere compilato - è tradotto come viene eseguito. Per questo motivo, il codice interpretato è piuttosto lento, ma spesso portatile tra diversi sistemi operativi e architetture di processore.

Java prende il meglio di entrambe le tecniche. Il codice Java è compilato in un codice macchina neutro rispetto alla piattaforma, che viene chiamato bytecode Java. Un tipo speciale di interprete, noto come Java Virtual Machine (JVM), legge il bytecode e lo elabora. La Figura 1 mostra un disassemblaggio di una piccola applicazione Java. Il bytecode, indicato dalla freccia, è qui rappresentato in forma di testo, ma quando è compilato viene rappresentato come byte per conservare lo spazio.

Multi-filettato

Se hai mai scritto applicazioni complesse in C o PERL, probabilmente avrai già incontrato il concetto di più processi. Un'applicazione può suddividersi in copie separate, che vengono eseguite contemporaneamente. Ogni copia replica codice e dati, con conseguente aumento del consumo di memoria. Ottenere le copie per parlare insieme può essere complesso e frustrante. La creazione di ogni processo comporta una chiamata al sistema operativo, che consuma anche un tempo di CPU extra.

Un modello migliore consiste nell'utilizzare più thread di esecuzione, denominati thread in breve. I thread possono condividere dati e codice, semplificando la condivisione dei dati tra istanze di thread. Inoltre, usano meno memoria e sovraccarico della CPU. Alcuni linguaggi, come C ++, hanno il supporto per i thread, ma sono complessi da usare. Java ha il supporto per più thread di esecuzione incorporati direttamente nella lingua. I thread richiedono un modo diverso di pensare, ma possono essere compresi molto rapidamente. Il supporto dei thread in Java è molto semplice da usare e l'uso dei thread in applicazioni e applet è abbastanza comune.

Garbage collection automatica

No, non stiamo parlando di portare fuori la spazzatura (anche se un computer che potrebbe letteralmente farlo sarebbe abbastanza pulito). Il termine garbage collection si riferisce al recupero dello spazio di memoria non utilizzato. Quando le applicazioni creano oggetti, la JVM alloca lo spazio di memoria per la loro memoria. Quando l'oggetto non è più necessario (nessun riferimento all'oggetto esiste), lo spazio di memoria può essere recuperato per un uso successivo.

Sicuro

La sicurezza è un grosso problema con Java. Poiché le applet Java vengono scaricate in remoto ed eseguite in un browser, la sicurezza è di grande interesse. Non vorremmo applet che leggessero i nostri documenti personali, cancellassero file o causassero guai. A livello di API, esistono forti restrizioni di sicurezza per l'accesso ai file e alla rete per le applet, nonché il supporto per le firme digitali per verificare l'integrità del codice scaricato. A livello di bytecode, vengono effettuati controlli per gli hack evidenti,

Rete e "Internet" consapevoli

Java è stato progettato per essere "Internet" consapevole e per supportare la programmazione di rete. L'API Java fornisce un ampio supporto di rete, da socket e indirizzi IP, a URL e HTTP. È estremamente facile scrivere applicazioni di rete in Java e il codice è completamente portatile tra le piattaforme. Java include anche il supporto per una programmazione di rete più esotica, come l'invocazione del metodo remoto (RMI), CORBA e Jini. Queste tecnologie di sistemi distribuiti rendono Java una scelta interessante per i grandi sistemi distribuiti.