LA CAMPANA

C'è chi legge questa notizia prima di te.
Iscriviti per ricevere articoli freschi.
E-mail
Nome
Cognome
Come vuoi leggere The Bell
Niente spam

Ultimo aggiornamento: 15.04.2018

Oggi, il linguaggio Java è uno dei linguaggi di programmazione più comuni e popolari. La prima versione della lingua apparve nel 1996 nelle viscere di Sun Microsystems, successivamente acquisita da Oracle. Java è stato concepito come un linguaggio di programmazione universale che può essere utilizzato per vari tipi di attività. E finora, Java ha fatto molta strada; sono state pubblicate molte versioni diverse. La versione attuale è Java 12, rilasciata a marzo 2019. E Java si è evoluto da solo un linguaggio universale in un'intera piattaforma ed ecosistema che combina varie tecnologie utilizzate in una serie di attività: dalla creazione di applicazioni desktop alla scrittura di grandi portali e servizi Web. Inoltre, Java viene attivamente utilizzato per creare software per numerosi dispositivi: PC ordinari, tablet, smartphone e cellulari e persino elettrodomestici. Basta ricordare la popolarità del sistema operativo mobile Android, la maggior parte dei programmi per i quali sono scritti specificamente in Java.

Funzionalità Java

Una caratteristica chiave del linguaggio Java è che il suo codice viene prima tradotto in uno speciale bytecode indipendente dalla piattaforma. E quindi questo bytecode viene eseguito da Java Virtual Machine (JVM). A questo proposito, Java differisce dai linguaggi interpretati standard come PHP o Perl, il cui codice viene immediatamente eseguito dall'interprete. Allo stesso tempo, Java non è un linguaggio puramente compilato, come C o C ++.

Tale architettura fornisce la portabilità multipiattaforma e hardware dei programmi Java, grazie alla quale tali programmi possono essere eseguiti senza ricompilazione su varie piattaforme - Windows, Linux, Mac OS, ecc. Ogni piattaforma può avere la propria implementazione della macchina virtuale JVM, ma ognuna di esse può eseguire lo stesso codice.

Java è un linguaggio con sintassi simil-C ed è vicino a questo riguardo a C / C ++ e C #. Pertanto, se hai familiarità con una di queste lingue, sarà più facile padroneggiare Java.

Un'altra caratteristica chiave di Java è che supporta la garbage collection automatica. Ciò significa che non è necessario liberare manualmente la memoria dagli oggetti utilizzati in precedenza, come in C ++, poiché Garbage Collector lo farà automaticamente per te.

Java è un linguaggio orientato agli oggetti. Supporta polimorfismo, eredità, tipizzazione statica. L'approccio orientato agli oggetti consente di risolvere il problema della creazione di applicazioni estese, ma flessibili, scalabili ed espandibili.

Installazione Java

Perché i programmi Java funzionino, Java Runtime Environment (JRE) deve essere installato sul computer di destinazione. JRE introduce un'implementazione minima della macchina virtuale e una libreria di classi. Pertanto, se vogliamo eseguire programmi, allora dobbiamo installare JRE. Ogni piattaforma ha la sua versione di JRE.

Tuttavia, poiché non eseguiremo solo programmi, ma anche li svilupperemo, abbiamo bisogno di uno speciale kit di sviluppo per JDK (Java Development Kit). JDK contiene già JRE e include anche un numero programmi aggiuntivi e utility, in particolare il compilatore Java.

È possibile scaricare e installare la versione appropriata di JDK dal sito Web ufficiale di Oracle: http://www.oracle.com/technetwork/java/javase/downloads/index.html

Quindi, dall'indirizzo sopra, scarica il programma di installazione JDK per l'ultima versione di Java.

Quindi verremo reindirizzati alla pagina in cui è necessario selezionare la versione per il sistema operativo di destinazione - Windows, MacOS o Linux:

Per ciascun sistema operativo, esistono due opzioni di avvio: sotto forma di un programma di installazione o sotto forma di un archivio che non necessita di installazione. Ad esempio, il mio sistema operativo è Windows, quindi scarico il file jdk_12_windows-x64_bin.exe, che rappresenta il programma di installazione.

Dopo il download, eseguire il programma di installazione:

Fai clic sul pulsante Avanti. Nella schermata successiva, è necessario specificare in quale cartella verrà eseguita l'installazione:

Lasciare la selezione della cartella predefinita e fare clic su Avanti per completare l'installazione.

Al termine dell'installazione di JDK, vedremo questa finestra:

Quindi, dopo aver installato JDK, creeremo il primo programma Java.

Nel 1995, il gigante del software Sun Microsystems ha rilasciato una nuova piattaforma chiamata Java. Comprendeva un linguaggio di programmazione e il cosiddetto Java Runtime Environment o runtime per le applicazioni scritte utilizzando Java. A sua volta, JRE includeva il sistema di base del tipo di linguaggio Java, una macchina virtuale, spesso chiamata macchina Java, e un'intera libreria di classi di supporto.



Ovviamente, lo scopo principale dell'innovazione di quel tempo erano le applicazioni multipiattaforma, che fino all'avvento di Java erano fortemente legate all '"hardware" a cui erano destinate. Java consentiva l'esecuzione di applicazioni indipendentemente dalla piattaforma installata sul computer.

Altro su Java

A differenza delle applicazioni create, ad esempio, in C, JRE raccoglie in modo diverso i file di codice sorgente di un'applicazione creata utilizzando il linguaggio Java. Come risultato della compilazione, l'applicazione C passa attraverso la fase di creazione del cosiddetto codice oggetto o codice macchina (fase di assemblaggio), da cui il linker raccoglie un file eseguibile che dipende dalla piattaforma installata sul PC. Un'applicazione scritta utilizzando Java, a seguito del processo di compilazione, crea il cosiddetto bytecode, indipendente dall'ambiente operativo in cui è assemblato. Tuttavia, affinché questo bytecode sia assemblato su una determinata piattaforma in un file eseguibile, è necessario che il runtime JRE sia installato su questa piattaforma. Questo è lo strumento che gli utenti spesso chiedono: "Perché ho bisogno di Java sul mio computer?"


Un po 'sulla popolarità dei programmi Java

Java moderno è diventato uno standard di sviluppo quasi universalmente riconosciuto. In questa lingua, vengono sviluppate applicazioni di rete, giochi, software aziendale, applet note per browser Web, software incorporato e mobile. Secondo le statistiche, nel mondo, Java è installato sul 97 percento dei PC desktop aziendali. Gli strumenti scritti in questa lingua sono utilizzati in tre miliardi di telefoni cellulari. Java è anche popolare tra i dispositivi TV. Quindi la popolarità delle applicazioni create usando il linguaggio di programmazione Java è innegabile. Il motivo di questa popolarità è stata la capacità di condurre lo sviluppo in un ambiente operativo ed eseguire l'applicazione creata in un altro completamente diverso. Questa è la cosiddetta multipiattaforma, basata su un codice byte indipendente, che è stato discusso appena sopra.


Esiste un'alternativa a Java?

Un esempio di alternativa a Java è la piattaforma .Net di un altro gigante del software chiamato Microsoft. Ha anche un componente multipiattaforma nel suo scopo, grazie alla presenza di un codice MSIL, che è un analogo del bytecode Java. Tuttavia, a differenza di Java, la piattaforma Microsoft è installata solo per i sistemi operativi Windows e rimane quindi dipendente dalla piattaforma, anche se si tenta di trasferire questa piattaforma ad altri sistemi operativi sotto forma del progetto Mono. Un vantaggio importante di questa piattaforma è la capacità di svilupparla in molti linguaggi .Net compatibili.

Java - Java dei microsistemi Sun. È stato originariamente sviluppato come linguaggio per la programmazione di dispositivi elettronici, ma in seguito è stato utilizzato per scrivere applicazioni software server. I programmi Java sono multipiattaforma, cioè sono in grado di funzionare su qualsiasi sistema operativo.

Nozioni di base sulla programmazione Java

Java come linguaggio con supporto per l'orientamento agli oggetti soddisfa i principi di base di OOP:

  • eredità;
  • polimorfismo;
  • incapsulamento.

Al centro di "Java", come in altri OOY, c'è un oggetto e una classe con costruttori e proprietà. Per iniziare ad imparare il linguaggio di programmazione Java è meglio non con risorse ufficiali, ma con tutorial per principianti. Tali manuali descrivono in dettaglio le possibilità, forniscono esempi di codice. Libri come "The Java Programming Language for Beginners" spiegano in dettaglio i principi e le caratteristiche di base del linguaggio indicato.

Caratteristiche

Il codice nel linguaggio di programmazione Java viene tradotto in bytecode, quindi eseguito nella macchina virtuale JVM. La conversione in bytecode viene eseguita su Javac, Jikes, Espresso, GCJ. Esistono compilatori che traducono il linguaggio C in bytecode Java. Pertanto, l'applicazione C può essere eseguita su qualsiasi piattaforma.

La sintassi "Java" è caratterizzata da quanto segue:

  1. I nomi delle classi devono iniziare con una lettera maiuscola. Se il nome è composto da più parole, la seconda dovrebbe iniziare con una maiuscola.
  2. Se per formare un metodo vengono utilizzate più parole, la seconda dovrebbe iniziare con una lettera maiuscola.
  3. L'elaborazione inizia con il metodo main () - fa parte di ogni programma.

tipi

Il linguaggio di programmazione Java ha 8 tipi primitivi. Sono presentati di seguito.

  • Booleano: un tipo booleano, accetta solo due valori true e false.
  • Byte: il più piccolo tipo intero 1 byte di dimensione. Viene utilizzato quando si lavora con o file di dati binari non elaborati. Ha un intervallo da -128 a 127.
  • Short ha un intervallo da -32768 a 32767, usato per rappresentare i numeri. La dimensione delle variabili di questo tipo è di 2 byte.
  • Int indica anche numeri, ma la sua dimensione è di 4 byte. Viene spesso utilizzato per lavorare con dati interi e byte e short a volte aumentano a int.
  • Long sono usati per numeri interi grandi. I valori possibili vanno da -9223372036854775808 a 9223372036854775807.
  • Float e double sono usati per indicare frazionari. La loro differenza è che il galleggiante è conveniente quando non è richiesta un'alta precisione nella parte frazionaria di un numero.
  • Double visualizza tutti i caratteri dopo il separatore ".", E float - solo il primo.
  • String è il tipo di primitiva più utilizzato in base al quale vengono specificate le stringhe.

Classi e oggetti

Un ruolo importante nel libro "Imparare il linguaggio di programmazione Java per principianti" è svolto da classi e oggetti.

Una classe definisce un modello per un oggetto; deve avere attributi e metodi. Per crearlo, usa la parola chiave Class. Se viene creato in un file separato, i nomi di classe e file devono essere gli stessi. Il nome stesso è composto da due parti: nome ed estensione Java.

In Java, è possibile creare una sottoclasse che erediterà i metodi del genitore. Per fare questo, usa la parola estende:

  • class class_name estende superclass_name ();

Un costruttore è un componente di qualsiasi classe, anche se non è specificato in modo esplicito. In questo caso, il compilatore lo crea in modo indipendente:

  • public class Class (public Class () () public Class (String name) ())

Il nome del costruttore è uguale al nome della classe, per impostazione predefinita ha un solo parametro:

  • public Puppy (nome stringa)

L'oggetto viene creato dalla classe utilizzando l'operatore new ():

  • Punto p \u003d nuovo Punto ()

Riceve tutti i metodi e le proprietà della classe con cui interagisce con altri oggetti. Un oggetto può essere utilizzato più volte con variabili diverse.

    Punto p \u003d nuovo Punto ()

    classe TwoPoints (

    public static void main (String args) (

    Punto p1 \u003d nuovo Punto ();

    Punto p2 \u003d nuovo Punto ();

    Le variabili e gli oggetti sono entità completamente diverse. Le variabili oggetto sono riferimenti. Possono puntare a qualsiasi variabile di tipo non primitivo. A differenza del C ++, la loro conversione di tipo è strettamente regolata.

    Campi e metodi

    I campi sono tutte variabili associate a una classe o un oggetto. Per impostazione predefinita, sono locali e non possono essere utilizzati in altre classi. Per accedere ai campi, utilizzare l'operatore ".":

    • classname.variable

    È possibile specificare i campi statici utilizzando la parola chiave statica. Tali campi sono l'unico modo per memorizzare variabili globali. Ciò è dovuto al fatto che semplicemente non ci sono variabili globali in Java.

    Implementata la possibilità di importare variabili per ottenere l'accesso da altri pacchetti:

    • import classname classname;

    Metodo: una subroutine per le classi in cui è dichiarata. È descritto allo stesso livello delle variabili. È impostato come funzione e può essere di qualsiasi tipo, incluso vuoto:

    • classe Point (int x, y;

      void init (int a, int b) (

    Nell'esempio sopra, la classe Point ha numeri interi xey, il metodo init (). L'accesso ai metodi, nonché alle variabili, viene effettuato utilizzando l'operatore ".":

    • Point.init ();

    La proprietà init non restituisce nulla, quindi è di tipo void.

    variabili

    Nel tutorial del linguaggio di programmazione Java, un posto separato è occupato da variabili. Tutte le variabili hanno un tipo specifico, determina il luogo richiesto per memorizzare i valori, l'intervallo di valori possibili, un elenco di operazioni. Prima di manipolare i valori, vengono dichiarate le variabili.

    Diverse variabili possono essere dichiarate contemporaneamente. Una virgola viene utilizzata per elencarli:

    • int a, b, c;

    L'inizializzazione viene eseguita dopo o durante l'annuncio:

    int a \u003d 10, b \u003d 10;

    Ce ne sono di diversi tipi:

    • variabili locali
    • variabili di istanza
    • variabili statiche

    Le variabili locali sono dichiarate in metodi e costruttori; vengono create durante il lancio di quest'ultimo e distrutte dopo il completamento. Per loro è vietato specificare modificatori di accesso e controllare il livello di accessibilità. Non sono visibili al di fuori del blocco dichiarato. In Java, le variabili non hanno un valore iniziale, quindi è obbligatorio assegnarle prima del primo utilizzo.

    Le variabili di istanza devono essere dichiarate all'interno della classe. Sono utilizzati come metodi, ma è possibile accedervi solo dopo aver creato l'oggetto. Una variabile viene distrutta quando un oggetto viene distrutto. Le variabili di istanza, a differenza di quelle locali, hanno valori predefiniti:

    • i numeri sono 0;
    • la logica è falsa;
    • i riferimenti sono nulli.

    Le variabili statiche sono chiamate variabili di classe. I loro nomi iniziano con un carattere maiuscolo e vengono istanziati con il modificatore statico. Vengono utilizzati come costanti, rispettivamente, viene aggiunto un qualificatore dall'elenco:

    • finale;
    • privato
    • pubblico.

    Esegui all'inizio del programma, distrutto dopo l'interruzione dell'esecuzione. Proprio come le variabili di istanza, hanno valori standard assegnati a variabili vuote. I numeri hanno un valore di 0, le variabili booleane sono false, i riferimenti agli oggetti inizialmente sono nulli. Le variabili statiche sono chiamate come segue:

    • ClassName.VariableName.

    Netturbino

    Nella sezione "Linguaggio di programmazione Java per principianti" del Garbage Collector automatico è la più interessante.

    In Java, a differenza del linguaggio C, non è possibile eliminare manualmente un oggetto dalla memoria. Per fare ciò, viene implementato il metodo di rimozione automatica: il Garbage Collector. Con la cancellazione tradizionale via , viene rimosso solo il riferimento all'oggetto e l'oggetto stesso viene eliminato. Esistono metodi di raccolta forzata dei rifiuti, sebbene non siano raccomandati per l'uso nel normale lavoro.

    Il modulo per la rimozione automatica di oggetti inutilizzati funziona in background, si avvia quando il programma è inattivo. Per cancellare oggetti dalla memoria, il programma si arresta; dopo che la memoria è stata liberata, l'operazione interrotta riprende.

    modificatori

    Esistono diversi tipi di modificatori. Oltre a quelli che determinano il metodo di accesso, ci sono modificatori di metodi, variabili e classe. I metodi dichiarati come privati \u200b\u200bsono disponibili solo nella classe dichiarata. Tali variabili non possono essere utilizzate in altre classi e funzioni. Il pubblico dà accesso a qualsiasi classe. Se è necessario ottenere la classe pubblica da un altro pacchetto, è necessario importarla prima.

    Il modificatore protetto è in effetti simile al pubblico: apre l'accesso ai campi della classe. In entrambi i casi, le variabili possono essere utilizzate in altre classi. Ma il modificatore pubblico è disponibile per tutti e il modificatore protetto è disponibile solo per le classi ereditate.

    Il modificatore utilizzato per creare metodi è statico. Ciò significa che il metodo creato esiste indipendentemente dalle istanze della classe. Il modificatore Final non controlla l'accesso, ma indica l'impossibilità di manipolare ulteriormente i valori dell'oggetto. Vieta di modificare l'elemento per il quale è stato specificato.

    La finale per i campi rende impossibile modificare il primo valore di una variabile:

      public static void mthod (String args) (

      int finale Nome \u003d 1;

      int Name \u003d 2; // genererà un errore

    Le variabili con il modificatore finale sono costanti. Di solito sono scritti solo in maiuscolo. CamelStyle e altri metodi non funzionano.

    La finale per i metodi indica un divieto di modificare un metodo in una classe ereditata:

      void finale myMethod () (

      System.out.printIn ("Hello world");

    Finale per le classi significa che non puoi creare eredi di classe:

      classe pubblica finale classe (

    Estratto - modificatore per la creazione di classi astratte. Qualsiasi classe astratta e metodi astratti sono intesi per un'ulteriore espansione in altre classi e blocchi. Modificatore transitorio indica alla macchina virtuale di non elaborare la variabile specificata. In questo caso, semplicemente non verrà salvato. Ad esempio, transient int Name \u003d 100 non verrà salvato, ma int b verrà salvato.

    Piattaforme e versioni

    Famiglie di linguaggi di programmazione Java esistenti:

    • Edizione standard.
    • Edizione Enterprise
    • Micro Edition.
    • Carta.

    1. SE: è il principale, ampiamente utilizzato per creare applicazioni personalizzate per uso personale.
    2. EE è un insieme di specifiche per lo sviluppo di software aziendale. Contiene più funzioni di SE, quindi viene utilizzato commercialmente nelle grandi e medie imprese.
    3. ME - progettato per dispositivi con potenza e memoria limitate, di solito hanno dimensioni ridotte del display. Tali dispositivi sono smartphone e PDA, ricevitori tv digitale.
    4. Card - progettato per dispositivi con risorse di elaborazione estremamente limitate, come smart card, sim card, bancomat. A tal fine, il bytecode è stato modificato, i requisiti della piattaforma che compongono le librerie.

    Applicazione

    I programmi nel linguaggio di programmazione Java sono generalmente più lenti e richiedono più RAM. Un'analisi comparativa dei linguaggi Java e C ha mostrato che C è un po 'più produttivo. Dopo numerose modifiche e ottimizzazioni della macchina virtuale, Java ha migliorato le sue prestazioni.

    È attivamente utilizzato per applicazioni per Android. Il programma viene compilato in un codice byte non standard, viene eseguito sulla macchina virtuale ART. Per la compilazione, viene utilizzato Android Studio. Questo IDE di Google è ufficiale per lo sviluppo di Android.

    Microsoft ha sviluppato la propria implementazione della Java Virtual Machine MSJVM. Aveva tali differenze che rompevano il concetto fondamentale di multipiattaforma: non c'era supporto per alcune tecnologie e metodi, c'erano estensioni non standard che funzionavano solo sulla piattaforma Windows. Microsoft ha rilasciato il linguaggio J #, la cui sintassi e il cui lavoro sono molto simili a Java. Non ha soddisfatto le specifiche ufficiali ed è stato infine escluso dagli strumenti di sviluppo Microsoft standard Visual Studio.

    Linguaggio di programmazione e ambiente Java

    Lo sviluppo del software viene effettuato in tali IDE:

    1. IDE NetBeans.
    2. IDE Eclipse.
    3. IntelliJ IDEA.
    4. JDeveloper.
    5. Java per iOS.
    6. Geany.

    JDK è distribuito da Oracle come kit di sviluppo Java. Include compilatore, librerie standard, utility, sistema esecutivo. I moderni ambienti di sviluppo integrato si basano su JDK.

    È conveniente scrivere codice nel linguaggio di programmazione Java in Netbeans e nell'IDE Eclipse. Si tratta di ambienti di sviluppo integrati gratuiti che si adattano a tutte le piattaforme Java. Utilizzato anche per la programmazione in Python, PHP, JavaScript, C ++.

    Jetbrains IntelliJ IDE è disponibile in due versioni: gratuita e commerciale. Supporta la scrittura di codice in molti linguaggi di programmazione, ci sono plug-in di terze parti di sviluppatori che implementano ancora più PL.

    JDeveloper è un altro sviluppo di Oracle. È completamente scritto in Java, quindi funziona su tutti i sistemi operativi.

Una breve storia del linguaggio Java

Questa sezione descrive brevemente la storia del linguaggio Java. Questa sezione si basa su vari materiali pubblicati (principalmente interviste con i creatori del linguaggio Java nel numero di luglio 1995 di SunWorld e-zine).

La storia di Java risale al 1991, quando un gruppo di ingegneri di Sun guidato da Patrick Naughton e membro del consiglio (e versatile mago del computer) James Gosling iniziò a sviluppare un linguaggio di piccole dimensioni che poteva essere utilizzato per programmare ogni giorno dispositivi, ad esempio controller per il passaggio di canali via cavo (quadri TV via cavo).

Poiché tali dispositivi non consumano molta energia e non dispongono di grandi chip di memoria, ho dovuto essere piccolo e generare programmi molto compatti. Inoltre, poiché diversi produttori possono scegliere diversi processori centrali (CPU), era importante non rimanere bloccati in nessuna architettura di computer. Il progetto ha ricevuto il nome in codice "Verde".

Nel tentativo di inventare un codice piccolo, compatto e indipendente dalla macchina, gli sviluppatori hanno rilanciato il modello utilizzato nell'implementazione delle prime versioni del linguaggio Pascal dell'epoca computer personale. Nicklaus Wirth, creatore del linguaggio Pascal, un tempo sviluppò un linguaggio indipendente dalla macchina che genera un codice intermedio per una macchina ipotetica. Questo linguaggio è diventato un prodotto commerciale chiamato UCSD Pascal. (Tali macchine ipotetiche sono spesso chiamate virtuali, ad esempio Java Virtual Machine o JVM.)
Questo codice intermedio può essere eseguito su qualsiasi macchina che abbia un interprete appropriato. Gli ingegneri che hanno lavorato al progetto Green hanno anche usato una macchina virtuale, che ha risolto il loro problema principale.

Tuttavia, la maggior parte dei dipendenti Sun ha avuto esperienza di lavoro con il sistema operativo UNIX, quindi il linguaggio che ha sviluppato era basato su C ++ anziché su Pascal. In particolare, hanno reso il linguaggio orientato agli oggetti piuttosto che orientato alle procedure.

Come ha detto Gosling in un'intervista: " La lingua è sempre un mezzo, non un fine"Gosling decise inizialmente di chiamarlo" Oak "(" Oak "). (Forse perché gli piaceva guardare la quercia che cresceva proprio sotto le finestre del suo ufficio Sun). Quindi, i dipendenti Sun hanno appreso che la parola Oak era già usata in come nome di un linguaggio di programmazione creato in precedenza e modificato il nome di Java.

Nel 1992, il primo prodotto chiamato Green è stato lanciato nell'ambito del progetto Green.
"* 7". Era un mezzo estremamente intellettuale telecomando. (Aveva potere stazione di lavoro SPARK si inserisce in una scatola da 6x4x4 pollici compagnie manifatturiere la tecnologia elettronica non è interessata a questa invenzione.

Quindi il gruppo ha iniziato a sviluppare un dispositivo televisivo via cavo in grado di fornire nuovi tipi di servizi, ad esempio un sistema video su richiesta. E ancora, non hanno ricevuto un unico contratto. (È divertente che una delle società che ha rifiutato di firmare un contratto con loro fosse guidata da Jim Clark, il fondatore di Netscape, che in seguito ha fatto molto per il successo del linguaggio Java.)

Per tutto il 1993 e la metà del 1994, è proseguita la ricerca senza successo degli acquirenti di prodotti sviluppati nell'ambito del progetto Green (con il nuovo nome First Person, Inc.). (Patrick Naughton, uno dei fondatori del gruppo, che successivamente si dedicò principalmente al marketing, volò per un totale di oltre 300 mila miglia nel tentativo di vendere la tecnologia sviluppata.) Progetto "First Person, Inc." Fu interrotto nel 1994.

Nel frattempo, il World Wide Web si stava espandendo su Internet. La chiave di questa rete è un browser che trasforma l'ipertesto in un'immagine sullo schermo.
Nel 1994, la maggior parte delle persone utilizzava il browser Mosaic, un browser Web no profit sviluppato nel 1993 presso il centro di supercomputer dell'Università dell'Illinois. (Questo browser è stato in parte scritto da Mark Andreessen per $ 6,85 l'ora. Mark si è laureato all'università in quel momento e il browser era il suo lavoro di diploma. Quindi è diventato uno dei fondatori e capo programmatore di Netscape, ed è diventato famoso e ricchezza.)

In un'intervista con la rivista Sun World, Gosling ha affermato che a metà del 1994, gli sviluppatori linguistici hanno realizzato: "Dobbiamo creare un browser davvero interessante. Tale browser dovrebbe essere una delle poche applicazioni della tecnologia client-server alla moda in cui è vitale che quello che abbiamo fatto: indipendenza architettonica, esecuzione in tempo reale, affidabilità, sicurezza - problemi che non erano estremamente importanti per le workstation. E abbiamo creato un browser del genere. "

In effetti, il browser è stato sviluppato da Patrick Naughton e Jonathan Payne. Successivamente si è evoluto nel moderno browser HotJava. Questo browser è stato scritto in Java per dimostrare la sua piena potenza. Tuttavia, gli sviluppatori non si sono dimenticati dei potenti strumenti, che ora vengono chiamati applet, che offrono al browser la possibilità di eseguire codice all'interno delle pagine Web. La dimostrazione tecnologica è stata presentata al Sun World 95 il 23 maggio 1995 e ha causato una follia diffusa su Java, che continua ancora oggi.

Sun ha rilasciato la prima versione di Java all'inizio del 1996. Pochi mesi dopo, apparve Java 1.02. Le persone hanno presto capito che Java 1.02 non era adatto allo sviluppo di applicazioni serie. Naturalmente, questa versione può essere utilizzata per sviluppare pagine Web con gente che balla, ma nella versione 1.02 di Java non è nemmeno possibile stampare nulla.

Onestamente, Java 1.02 era ancora grezzo. Il suo successore, Java 1.1, ha colmato la maggior parte delle lacune, migliorando notevolmente la capacità di riflettere e aggiungendo un nuovo modello di eventi per la programmazione grafica interfaccia utente. Nonostante ciò, era ancora piuttosto limitata.

Il rilascio di Java 1.2 è stata la principale novità della conferenza JavaOne nel 1998. Nella nuova versione, strumenti deboli per la creazione di un'interfaccia utente grafica e applicazioni grafiche sono stati sostituiti da strumenti complessi e su larga scala. È stato un passo avanti verso l'implementazione dello slogan "Write Once, Run Anywhere" ™, presentato durante lo sviluppo delle versioni precedenti.

Nel dicembre 1998, tre giorni (!) Dopo la pubblicazione del nome della nuova versione è stata cambiata la frase voluminosa Java 2 Standart Edition Software Development Kit Versione 1.2 (Standard Edition del pacchetto software per lo sviluppo software in Java 2, versione 1.2).

Oltre all'edizione standard del pacchetto ("Standart Edition"), sono state proposte altre due opzioni: "micro edition" ("Micro Edition") per dispositivi portatili, ad esempio per telefoni cellulari e. "Enterprise Edition" per la creazione di applicazioni server. Il nostro libro si concentra sull'edizione standard.

Le versioni 1.3 e 1.4 dell'edizione standard del toolkit sono molto più avanzate rispetto alla versione iniziale di Java 2. Hanno nuove funzionalità e, ovviamente, contengono molti meno errori. Sul tavolo. 1 1 mostra la rapida crescita della libreria API quando sono disponibili nuove versioni dell'edizione standard dell'SDK.

Tabella 1.1 La crescita della libreria API dalla Java Standart Edition

Numero di classi e interfacce

Numero di metodi e campi

Idee sbagliate comuni su Java

Questa sezione elenca e commenta alcune delle idee sbagliate comuni riguardanti Java.

Java è un'estensione linguaggio HTML.

Java è un linguaggio di programmazione e HTML è un modo per descrivere la struttura delle pagine Web. Non c'è nulla in comune tra loro, ad eccezione delle estensioni al linguaggio HTML che consentono di posizionare applet scritte in linguaggio Java su pagine Web.

Lavoro in XML, quindi non ho bisogno di Java.

Java è un linguaggio di programmazione e XML è solo un modo per descrivere i dati. I dati descritti utilizzando XML possono essere elaborati utilizzando programmi scritti in qualsiasi linguaggio di programmazione, ma solo la libreria API Java contiene eccellenti strumenti di supporto per l'elaborazione di tali dati. Inoltre, il linguaggio Java implementa molte funzionalità del linguaggio XML. Sono descritti più dettagliatamente nel secondo volume.

Java è facile da imparare.

Non esiste un solo linguaggio di programmazione potente come il linguaggio Java che possa essere facilmente appreso. Scrivere programmi giocattolo è abbastanza semplice, ma fare un lavoro serio è sempre difficile. Inoltre, si noti che in questo libro, solo quattro capitoli sono dedicati alla discussione del linguaggio Java stesso. I capitoli rimanenti spiegano come lavorare con le sue librerie contenenti migliaia di classi e interfacce, nonché molte migliaia di funzioni. Fortunatamente, non è necessario conoscerli tutti, ma sorprendentemente è richiesta molta conoscenza da parte dell'utente per completare un progetto reale.

Java è facile da programmare.

Java SDK Toolkit non è facile da usare per tutti tranne i programmatori che sono abituati alla modalità riga di comando. Esistono ambienti di programmazione integrati, tra cui editor di testo, compilatori, strumenti per la creazione di moduli mediante la tecnologia di trascinamento della selezione, ma per un principiante sembrano troppo complicati e intimidatori. Inoltre, generano spesso programmi costituiti da centinaia di righe. Ci sembra che iniziare ad imparare il linguaggio Java con programmi lunghi generati automaticamente e pieni di commenti come "NON TOCCARLO CON LE MANI!" Non è una buona idea. Riteniamo che sia meglio imparare il linguaggio Java usando un editor di testo familiare. Questo è ciò che faremo.

Il linguaggio Java diventerà infine un linguaggio di programmazione universale per tutte le piattaforme.

È teoricamente possibile. Questo è ciò che tutti i produttori di software sognano, tranne Microsoft. Tuttavia, ci sono molte applicazioni che funzionano perfettamente su personal computer che non funzionano altrettanto bene su altri dispositivi o sotto il controllo di un browser. Inoltre, queste applicazioni sono state scritte per massimizzare le capacità dei processori e delle librerie dipendenti dalla macchina. In ogni caso, sono già stati portati su tutte le piattaforme importanti. Tali applicazioni includono editor di testo e immagini, nonché browser Web. In genere, queste applicazioni sono scritte in C o C ++ e l'utente non otterrà nulla se le riscrivi in \u200b\u200bJava. Tra l'altro, dopo aver riscritto in linguaggio Java, questi programmi diventeranno più lenti e meno efficienti, almeno nel prossimo futuro.

Il linguaggio Java è solo un altro linguaggio di programmazione.

Java è un ottimo linguaggio di programmazione. Molti programmatori lo preferiscono, e non i linguaggi C o C ++. Tuttavia, ci sono centinaia di eccellenti linguaggi di programmazione nel mondo che non sono mai stati ampiamente adottati, mentre i linguaggi con evidenti difetti, come C ++ e Visual Basic, hanno ottenuto un successo travolgente.

Perché? Il successo di qualsiasi linguaggio di programmazione è principalmente determinato dalla praticità del suo sistema di supporto, piuttosto che dall'eleganza della sua sintassi. Esistono librerie utili, convenienti e standard che ti consentono di fare esattamente ciò di cui un programmatore ha bisogno? Esiste un ambiente conveniente per la creazione e il debug di programmi? La lingua e i suoi strumenti sono integrati nell'infrastruttura informatica? Il linguaggio Java ha avuto successo nelle applicazioni server perché le sue librerie di classi rendono facile fare ciò che prima era difficile, come supportare la rete e il multithreading. Anche il fatto che il linguaggio Java abbia ridotto il numero di errori associati ai puntatori parla a suo favore. Grazie a ciò, la produttività dei programmatori è aumentata. Tuttavia, questo non è il motivo del suo successo.

I programmi Java vengono interpretati, il che significa che le applicazioni serie verranno eseguite troppo lentamente su una particolare piattaforma.

Molti programmi trascorrono la maggior parte del loro tempo a interagire con l'interfaccia utente o ad attendere i dati dalla rete. Tutti i programmi, indipendentemente dalla lingua in cui sono scritti, devono rispondere a un clic del mouse in un determinato periodo di tempo. Naturalmente, non è necessario eseguire attività che richiedono prestazioni elevate processore centraleutilizzando un interprete Java. Tuttavia, su piattaforme che consentono la compilazione sincrona, è sufficiente eseguire i codici byte per l'esecuzione e la maggior parte delle domande semplicemente scompare.

Dopotutto, il linguaggio Java è ottimo per lo sviluppo di programmi di rete. L'esperienza ha dimostrato che mantiene facilmente un'alta velocità di trasferimento di rete anche durante elaborazioni intensive come la crittografia. Poiché la velocità di lavoro in Java è superiore alla velocità di trasmissione dei dati nella rete, non è importante che i programmi C ++ possano essere eseguiti anche più velocemente. Java è più facile da programmare e i programmi in esso scritti sono indipendenti dalla macchina.

Tutti i programmi Java vengono eseguiti sotto il controllo dei browser Web.

Tutte le applet scritte in Java sono in realtà gestite da browser web. In realtà, questa è la definizione di un'applet, un programma eseguito da un browser Web. Tuttavia, è del tutto possibile e appropriato creare programmi Java autonomi eseguiti indipendentemente da un browser Web.

Questi programmi (comunemente chiamati applicazioni) sono completamente indipendenti dalla macchina. Prendi semplicemente il programma ed eseguilo su un'altra macchina! Poiché Java è più conveniente e meno soggetto a errori rispetto al C ++, rappresenta una buona scelta. Combinato con strumenti di accesso al database come la suite Java Database Connectivity, il linguaggio Java è semplicemente avvincente. È particolarmente conveniente studiarlo come primo linguaggio di programmazione.
La maggior parte dei programmi di questo libro sono completamente indipendenti. Certo, le applet sono molto divertenti. Tuttavia, le applicazioni Java sono più importanti e utili nella pratica.

Le applet Java rappresentano un grave pericolo per il sistema di sicurezza.

Sono stati pubblicati numerosi report di bug su problemi di sicurezza di Java. La maggior parte riguardava l'implementazione del linguaggio Java utilizzando un browser specifico. I ricercatori hanno preso questo come una sfida e hanno iniziato a cercare delle lacune nel sistema di sicurezza del linguaggio Java per superare la forza e la complessità del modello di sicurezza dell'applet. Gli errori tecnici scoperti sono stati presto corretti e, per quanto ne sappiamo, nessun sistema reale è mai stato compromesso. Per valutare l'importanza di questo fatto, pensa ai milioni di virus sui file eseguibili del sistema operativo Windows e alle macro dell'elaboratore di testi di Word, che hanno causato molti problemi e critiche sorprendentemente senza denti delle debolezze della piattaforma attaccata. Inoltre, il meccanismo ActiveX in Internet Explorer potrebbe causare molte lamentele, ma i metodi per romperlo sono così evidenti che solo pochi esperti si sono preoccupati di pubblicare le loro ricerche.

Alcuni amministratori di sistema hanno persino iniziato a disattivare i sistemi di sicurezza del linguaggio Java nei loro browser in modo che gli utenti potessero, come prima, scaricare file eseguibili, controlli ActiveX e documenti creati utilizzando il word processor. È strano che al momento la probabilità di superare il sistema di protezione dell'applet Java sia paragonabile alla probabilità di morire in un incidente aereo, mentre il rischio di infettare un computer aprendo un documento creato da un word processor è paragonabile al rischio di morire sotto le ruote di un'auto, attraversando la strada in un'ora picco.

JavaScript è una versione semplificata del linguaggio Java.

JavaScript è un linguaggio di scripting che può essere utilizzato nelle pagine Web. È stato sviluppato da Netscape ed è stato inizialmente chiamato LiveScript. La sintassi del linguaggio JavaScript ricorda la sintassi del linguaggio Java, ma è qui che finiscono le loro somiglianze (tranne il nome, ovviamente). Un sottoinsieme del linguaggio JavaScript è stato standardizzato con il nome ECMA-262, tuttavia le sue estensioni sono necessarie per vero lavoronon erano standardizzati.

Linguaggio Java. introduzione

Per molto tempo, è stato difficile immaginare una rivista di computer senza un articolo sul linguaggio Java. Perfino giornali e riviste popolari come Il nuovo York Times, Washington Post e Business Week.

È impossibile ricordare che la National Public Radio dedica mai una trasmissione di dieci minuti a un linguaggio di programmazione. Nel bene o nel male, dipende dal punto di vista. E l'investimento di $ 100 milioni investito nella produzione di software creato utilizzando un linguaggio di programmazione specifico ?! CNN, CNBC e altri media mass media hanno appena parlato e ora stanno parlando di come il linguaggio Java può farlo, e lo farà.

Tuttavia, questo libro è destinato a programmatori seri e poiché il linguaggio Java è un linguaggio di programmazione serio, abbiamo qualcosa da dire. Quindi, non ci immergeremo nell'analisi delle promesse pubblicitarie e cercheremo di scoprire cosa è vero in esse e cos'è la finzione. Invece, descriviamo il linguaggio Java in modo sufficientemente dettagliato proprio come un linguaggio di programmazione (comprese, ovviamente, le funzionalità che ne consentono l'uso su Internet, che, di fatto, ha causato così tanto clamore). Successivamente, proveremo a separare la realtà dalle fantasie spiegando che il linguaggio Java può davvero e cosa no.

Inizialmente, c'era un abisso tra le promesse pubblicitarie e le reali possibilità del linguaggio Java. Con la maturazione, la tecnologia è diventata più stabile e affidabile e le aspettative sono scese a un livello ragionevole. Ora il linguaggio Java viene sempre più utilizzato per creare "middleware" (middleware) che supporta la comunicazione tra client e risorse del server (ad esempio database).

Nonostante il fatto che queste importanti applicazioni non siano sorprendenti, è stato in quest'area che il linguaggio Java è stato più utile grazie alla sua indipendenza dalle macchine, al multithreading e alle capacità di programmazione della rete. Inoltre, il linguaggio Java ha assunto un ruolo guida nei sistemi embedded, diventando di fatto lo standard per dispositivi portatili, chioschi virtuali, computer di bordo per auto, ecc. Tuttavia, i primi tentativi di riscrivere programmi ampiamente distribuiti per personal computer in Java non ebbero successo: le applicazioni risultanti furono a bassa potenza e lente. Con l'avvento della nuova versione, alcuni di questi problemi sono stati risolti, e tuttavia bisogna riconoscere che gli utenti, in generale, sono completamente indifferenti alla lingua in cui sono scritti i programmi acquistati. Riteniamo che i principali vantaggi del linguaggio Java si manifesteranno quando si creano nuovi tipi di dispositivi e applicazioni e non quando si riscrivono i programmi esistenti.

Linguaggio Java come strumento di programmazione

Come linguaggio di programmazione, Java ha adempiuto in modo eccessivo alle promesse pubblicitarie. Indubbiamente, questa è una delle migliori lingue disponibili per i programmatori seri. Potenzialmente, Java ha tutti i prerequisiti per diventare un ottimo linguaggio di programmazione, tuttavia, probabilmente ora è troppo tardi. Quando appare un nuovo linguaggio di programmazione, sorge immediatamente un problema spiacevole della sua compatibilità con il software creato in precedenza. Inoltre, anche se è possibile apportare modifiche a questi programmi senza interferire con il loro testo, è difficile per i creatori di una lingua che è stata accolta calorosamente dal pubblico, come Java, dire: "Sì, forse abbiamo fatto un errore durante lo sviluppo della versione X, ma la versione Y andrà meglio. " Di conseguenza, in attesa di ulteriori miglioramenti, dobbiamo dire che la struttura del linguaggio Java non cambierà in modo significativo nel prossimo futuro.

La domanda ovvia è: " Come hai migliorato il linguaggio Java?"Si scopre che ciò non è stato fatto migliorando il linguaggio di programmazione stesso, ma cambiando sostanzialmente le librerie di programmi scritti in linguaggio Java. Sun Microsystems ha cambiato tutto: a partire dai nomi delle singole funzioni delle librerie (rendendole più significative) e dai metodi di lavoro dei moduli grafici ( cambiare il metodo di elaborazione degli eventi e riscrivere parzialmente i programmi di lavoro), e terminare con la creazione di nuove proprietà del linguaggio, ad esempio, significa stampare informazioni che non erano in Java 1.0, il che si è tradotto in una piattaforma software molto più utile di tutte le versioni precedenti del linguaggio Java.

Microsoft ha rilasciato il proprio prodotto, chiamato J ++, relativo al linguaggio Java. Il linguaggio J ++ viene interpretato da una macchina virtuale compatibile con la macchina virtuale Java (Java Virtual Machine) durante l'esecuzione di bytecode, ma le interfacce con codici esterni per queste lingue sono significativamente diverse. I linguaggi J ++ e Java hanno quasi la stessa sintassi. Tuttavia, Microsoft ha creato costrutti di linguaggio aggiuntivi. Tutti hanno un valore piuttosto dubbio, ad eccezione dell'interfaccia API di Windows. Oltre al fatto che questi linguaggi hanno la stessa sintassi, le loro principali librerie (stringhe, utility, strumenti di programmazione di rete, strumenti di supporto multithreading, librerie matematiche, ecc.) Coincidono sostanzialmente.

Tuttavia, le librerie grafiche, l'interfaccia utente e l'accesso agli oggetti remoti in queste lingue sono completamente diversi. Microsoft attualmente non supporta più J ++ sviluppando un nuovo linguaggio C # che ha molto in comune con Java ma utilizza una macchina virtuale diversa. In questo libro, né J ++ né C # sono descritti.

Vantaggi di Java

1) Uno dei principali vantaggi del linguaggio Java è indipendenza della piattaforma su cui sono in esecuzione i programmi: lo stesso codice può essere eseguito sotto il controllo del funzionamento sistemi Windows, Solaris, Linux, Machintosh, ecc.
Ciò è veramente necessario quando i programmi vengono scaricati via Internet per la successiva esecuzione sotto il controllo di diversi sistemi operativi.

2) Un altro vantaggio è quello la sintassi del linguaggio Java è simile alla sintassi del linguaggio C ++ e, per i programmatori che conoscono il C e il C ++, l'apprendimento non è difficile. È vero, per i programmatori che conoscono il linguaggio Visual Basic, questa sintassi può essere insolita.

Se non hai mai programmato in C ++, alcuni dei termini utilizzati in questa sezione non ti saranno chiari. In questo caso, puoi saltarlo. Man mano che arriverai alla fine del capitolo 6, questi termini ti diventeranno familiari.

3) Inoltre, Java - linguaggio completamente orientato agli oggetti, ancor più di C ++. Tutte le entità in linguaggio Java sono oggetti, ad eccezione di alcuni tipi di base (tipi primitivi), come i numeri. (Poiché è facile sviluppare progetti complessi utilizzando la programmazione orientata agli oggetti, ha sostituito la precedente programmazione strutturale. Se non si ha familiarità con la programmazione orientata agli oggetti, i capitoli 3-6 ti forniranno tutte le informazioni necessarie al riguardo.)

Tuttavia, per sviluppare un altro dialetto leggermente migliorato del linguaggio C ++ non è sufficiente. È di fondamentale importanza che lo sviluppo di programmi che non contengano errori sia più semplice nel linguaggio Java che nel linguaggio C ++. Perché? Gli sviluppatori Java hanno riflettuto a lungo sul perché i programmi scritti in C ++ sono così inclini a errori. Fornirono a Java strumenti per eliminare la possibilità stessa di creare programmi che nascondessero gli errori più comuni. Per questo, è stato fatto quanto segue in linguaggio Java.

4) È esclusa la possibilità di allocazione esplicita e liberazione della memoria.
La memoria Java viene liberata automaticamente utilizzando il meccanismo di garbage collection. Il programmatore è garantito contro errori associati all'uso improprio della memoria.

5) Vengono introdotte vere matrici e l'aritmetica del puntatore è vietata.
Ora i programmatori, in linea di principio, non possono cancellare i dati dalla memoria a causa di un uso improprio dei puntatori.

6) È esclusa la possibilità di confondere l'operatore di assegnazione con l'operatore di confronto per l'uguaglianza.
Ora non puoi nemmeno compilare l'espressione if (ntries \u003d 3). . . (I programmatori di Visual Basic potrebbero non notare alcun problema qui, poiché questo errore è la fonte della maggior parte dei malintesi in C e C ++).

7) Eredità multipla esclusa. È sostituito da un nuovo concetto: un'interfaccia presa in prestito dall'obiettivo C.
L'interfaccia offre al programmatore quasi tutto ciò che può ottenere dall'ereditarietà multipla, evitando le difficoltà legate alla gestione delle gerarchie di classi.

Funzionalità Java

pianura
Interpretato
distribuito
Affidabile
Sicuro
Macchina indipendente
Orientato agli oggetti
Alte prestazioni
multithread
Dinamico
Architettura del computer indipendente

Nell'ultima sezione, abbiamo già toccato alcuni di questi punti. In questa sezione, citiamo: citazioni dal manuale del linguaggio Java che rivelano le caratteristiche del linguaggio; condivideremo con i lettori le nostre opinioni sulle singole proprietà della lingua, in base alla nostra esperienza con l'ultima versione.

pianura

Volevamo creare un sistema che è facilmente programmabile, non richiede formazione aggiuntiva e tiene conto delle prassi prevalenti e degli standard di programmazione. Pertanto, nonostante il fatto che abbiamo considerato il linguaggio C ++ inadatto a questi scopi, il linguaggio Java è stato progettato per essere il più simile possibile per rendere il sistema più accessibile. Non ci sono molti mezzi usati raramente, oscuri e oscuri del linguaggio C ++ nel linguaggio Java, che, a nostro avviso, fanno più male che bene.

La sintassi Java è essenzialmente una versione ripulita della sintassi C ++. Questo linguaggio non ha file di intestazione, aritmetica di puntatori (e puntatori stessi), strutture, sindacati, sovraccarico dell'operatore, classi di base virtuali, ecc. (Le differenze tra i linguaggi Java e C ++ sono descritte nelle note sul linguaggio C ++ sparse nel libro.) Tuttavia, gli sviluppatori non hanno cercato di correggere tutti i difetti del linguaggio C ++.

Ad esempio, la sintassi dell'istruzione switch in Java è rimasta invariata. Conoscere il linguaggio C ++, passare alla sintassi Java sarà facile.
Se di solito usi un ambiente di programmazione visiva (come Visual Basic), il linguaggio Java ti sembrerà difficile.
La sua sintassi sembra spesso piuttosto strana (sebbene comprendere il significato di un'espressione sia semplice). Ancora più importante, quando si lavora in Java, è necessario programmare molto di più. La bellezza del linguaggio Visual Basic è che il suo ambiente di programmazione visiva consente di creare quasi automaticamente l'infrastruttura dell'applicazione. Per ottenere lo stesso risultato utilizzando il linguaggio Java, è necessario programmare manualmente, ma si ottengono programmi molto più brevi.

Tuttavia, esiste un terzo tipo di ambiente di programmazione che consente di creare programmi utilizzando la tecnologia di trascinamento della selezione.

Un altro aspetto della semplicità è la brevità. Uno degli obiettivi del linguaggio Java è garantire lo sviluppo di programmi che possono essere eseguiti in modo completamente indipendente su macchine di piccole dimensioni. La dimensione dell'interprete principale e degli strumenti di supporto di classe è di circa 40 Kbyte; le librerie standard e gli strumenti di supporto dei thread (in particolare il microkernel autonomo) occupano altri 17: Kbyte.
Questo è un enorme successo. Si noti, tuttavia, che le librerie di supporto dell'interfaccia utente grafica sono significativamente più grandi.

Orientato agli oggetti

In parole povere, la programmazione orientata agli oggetti è un metodo di programmazione che si concentra sui dati (cioè gli oggetti) e sui loro mezzi di accesso. Disegnando un'analogia con la falegnameria, possiamo dire che l'artigiano orientato agli oggetti si concentra principalmente sulla sedia che produce, e solo secondariamente è interessato agli strumenti necessari per questo; allo stesso tempo, un falegname senza oggetto pensa solo ai suoi strumenti. Le proprietà orientate agli oggetti di Java e C ++ sono essenzialmente le stesse.

L'orientamento agli oggetti negli ultimi 30 anni ha già dimostrato il suo valore e senza di esso è impossibile immaginare un linguaggio di programmazione moderno. In effetti, le funzionalità orientate agli oggetti del linguaggio Java sono paragonabili al linguaggio C ++. La principale differenza tra i due è il meccanismo di ereditarietà multipla, per il quale, nel linguaggio Java, la migliore decisione, nonché nel modello di metaclasse Java.

I meccanismi di riflessione (capitolo 5) e la serializzazione degli oggetti (capitolo 12) consentono di implementare oggetti e strumenti stabili per la creazione di interfacce utente grafiche basate su componenti già pronti.

Se non hai mai programmato in lingue orientate agli oggetti, studia attentamente i capitoli 4-6. Questi capitoli delineano le basi della programmazione orientata agli oggetti e mostrano i suoi vantaggi nello sviluppo di progetti complessi rispetto a linguaggi tradizionali orientati alla procedura come C o Basic.

distribuito

Java ha una vasta libreria di programmi di trasferimento dati basati su TCP / IP (Transmission Control Protocol / Internet Protocol), come HTTP (Hypertext Transfer Protocol) o FTP (File Transfer Protocol- File Transfer Protocol). Le applicazioni scritte in linguaggio Java possono aprire oggetti e accedervi attraverso la rete usando eURL (Uniform Resource Location) facili come av rete locale.

Il linguaggio Java offre strumenti potenti e convenienti per lavorare in rete. Chiunque abbia mai provato a scrivere programmi per lavorare su Internet in altre lingue rimarrà piacevolmente sorpreso dalla facilità con cui le attività più difficili, come l'apertura della connessione a socket, vengono facilmente risolte in Java. L'elegante meccanismo, costituito dai cosiddetti servlet, rende estremamente efficiente il lavoro sul server.

I servlet sono supportati da molti server Web popolari. (La rete verrà descritta nel secondo volume.) La comunicazione tra oggetti distribuiti in linguaggio Java è fornita da un meccanismo per chiamare metodi remoti (questo argomento è anche descritto nel secondo volume).

Affidabile

Il linguaggio Java è progettato per creare programmi che dovrebbero funzionare in modo affidabile in qualsiasi situazione. L'obiettivo principale del linguaggio Java è il rilevamento tempestivo di possibili errori, la verifica dinamica (durante l'esecuzione del programma), nonché l'eliminazione di situazioni soggette a errori ... L'unica differenza significativa tra il linguaggio Java e il linguaggio C ++ è il modello di puntatore adottato nel linguaggio Java, che esclude la capacità di sovrascrivere un pezzo di memoria e corruzione dei dati.

Questa proprietà è anche molto utile. Il compilatore Java rileva errori rilevati in altre lingue solo nella fase di esecuzione del programma. Inoltre, i programmatori che trascorrono molte ore alla ricerca di un errore che ha causato il danneggiamento della memoria a causa di un puntatore non valido saranno molto contenti che tali problemi in linea di principio non possano sorgere nel linguaggio Java.

Se si era soliti programmare in linguaggi Visual Basic o COBOL in cui i puntatori non vengono utilizzati in modo esplicito, è possibile che non si capisca perché sia \u200b\u200bcosì importante. I programmatori C sono stati molto meno fortunati. Hanno bisogno di puntatori per accedere a stringhe, array, oggetti e persino file. Durante la programmazione in Visual Basic, nulla di tutto ciò è necessario e il programmatore potrebbe non doversi preoccupare dell'allocazione di memoria per queste entità. D'altra parte, molte strutture di dati in un linguaggio senza puntatore sono molto difficili da implementare. Per strutture ordinarie come stringhe e matrici, i puntatori non sono necessari. Tutta la potenza dei puntatori appare solo dove non puoi farne a meno, ad esempio quando crei elenchi collegati. Un programmatore Java è sempre libero da puntatori errati, errori di allocazione e perdite di memoria.

Sicuro

Il linguaggio Java è destinato all'uso in una rete o in un ambiente distribuito. Per questo motivo, molta attenzione è stata dedicata alla sicurezza. Il linguaggio Java consente di creare sistemi protetti da virus e estranei.

Nella prima edizione, abbiamo scritto: "Mai dire mai", e avevamo ragione. Un gruppo di esperti di sicurezza dell'Università di Princeton ha scoperto i primi difetti di sicurezza in Java 1.0 poco dopo la vendita della prima versione del toolkit JDK. Inoltre, sia loro che altri specialisti hanno continuato e successivamente hanno riscontrato sempre più errori nei meccanismi di sicurezza di tutte le versioni successive del linguaggio Java.

Il lato positivo di questa situazione è che il team di sviluppo del linguaggio Java ha dichiarato la sua intolleranza a eventuali errori nel sistema di sicurezza e ha immediatamente proceduto alla risoluzione di tutti i problemi riscontrati nel meccanismo di sicurezza dell'applet. In particolare, pubblicando le specifiche interne per l'interprete del linguaggio Java, Sun ha reso molto più facile trovare errori di sicurezza nascosti e ha portato esperti indipendenti a cercarli.

Ciò ha aumentato la probabilità che tutti gli errori nel sistema di sicurezza vengano rilevati presto. In ogni caso, è estremamente difficile ingannare il sistema di sicurezza del linguaggio Java. Gli errori scoperti finora erano quasi elusivi; inoltre, il loro numero è (relativamente) piccolo.

La pagina Web di sicurezza di Sun ha il seguente URL: http://java.sun.com/sfaq/.

Elenchiamo alcune situazioni che impediscono il verificarsi della sicurezza del linguaggio Java.

1) Lo stack overflow di un programma eseguibile, che ha portato al famigerato "worm" che si diffonde su Internet.

2) Danneggiamento di aree di memoria esterne allo spazio assegnato al processo.

3) Leggere e scrivere file locali quando si utilizza un programma di caricamento classi sicuro, ad esempio un browser Web, che vieta tale accesso ai file.

Tutte queste misure di sicurezza sono abbastanza appropriate e di solito funzionano in modo impeccabile, ma la prudenza non farà mai male. Sebbene gli errori scoperti finora siano stati tutt'altro che banali e tutti i dettagli della loro ricerca siano spesso tenuti segreti, si dovrebbe riconoscere che è probabilmente impossibile dimostrare la sicurezza del linguaggio Java.

Nel tempo, nuove funzionalità di sicurezza sono state aggiunte alla lingua. A partire dalla versione 1.1, il concetto di classi con firma digitale è apparso in linguaggio Java. Utilizzando una classe con una firma digitale, puoi essere sicuro del suo autore. Se ti fidi di lui, puoi concedere a questa classe tutti i privilegi disponibili sul tuo computer.

Il meccanismo alternativo di consegna del codice di Microsoft si basa sulla tecnologia ActiveX e utilizza solo firme digitali per la sicurezza. Ovviamente, questo non è abbastanza: qualsiasi utente del software Microsoft può confermare che i programmi di noti produttori spesso falliscono, creando così il rischio di corruzione dei dati. Il sistema di sicurezza in Java è molto più affidabile della tecnologia ActiveX, perché controlla l'applicazione dal momento in cui viene avviata e non consente di causare danni.

Architettura indipendente

Il compilatore genera un file oggetto, il cui formato non dipende dall'architettura del computer: il programma compilato può essere eseguito su qualsiasi processore sotto il controllo del sistema di esecuzione del programma Java. Per questo, il compilatore del linguaggio Java genera comandi bytecode indipendenti dall'architettura specifica del computer. Il codice byte è progettato in modo tale da poter essere facilmente interpretato su qualsiasi macchina o trasferito al volo a un codice dipendente dalla macchina.

Non è nuova idea. Più di 20 anni fa, la stessa tecnologia è stata utilizzata nel sistema di implementazione del linguaggio Pascal sviluppato da Niclaus Wirth e dal sistema UCSD Pascal. L'uso dei codici byte dà un grande guadagno durante l'esecuzione di un programma (sebbene la compilazione sincrona lo compensi in molti casi). Gli sviluppatori del linguaggio Java hanno fatto un ottimo lavoro nello sviluppo di una serie di istruzioni bytecode che funzionano perfettamente sulla maggior parte dei computer moderni, traducendosi facilmente in istruzioni di macchine reali.

Macchina indipendente

A differenza dei linguaggi C e C ++, la specifica Java non ha aspetti specifici dell'implementazione. Sia la dimensione dei principali tipi di dati che le operazioni aritmetiche su di essi sono definite con precisione.

Ad esempio, int in Java significa sempre un numero intero a 32 bit. In C e C ++, il tipo int può significare un numero intero a 16 o 32 bit, nonché un numero intero di qualsiasi dimensione, a seconda della scelta dello sviluppatore di un particolare compilatore. L'unica limitazione è che la dimensione del tipo int non può essere inferiore alla dimensione del tipo int corto e oversize di tipo long int. La dimensione fissa dei tipi numerici evita molti dei problemi associati all'esecuzione di programmi su computer diversi. I dati binari vengono archiviati e trasmessi in un formato fisso, il che evita anche incomprensioni legate al diverso ordine di scrittura dei byte su piattaforme diverse (conflitto "big endian / little endian"). Le righe sono archiviate in formato standard Unicode

Le librerie che fanno parte del sistema definiscono un'interfaccia indipendente dalla macchina. Ad esempio, il linguaggio fornisce una classe Window astratta e la sua implementazione per i sistemi operativi Unix, Windows e Macintosh.

Chiunque abbia mai provato a scrivere un programma che funziona ugualmente bene su Windows, Macintosh e dieci versioni del sistema Unix sa che questo è un compito molto difficile. La versione Java ha fatto un eroico tentativo di risolvere questo problema fornendo un semplice toolkit che adatta i soliti elementi dell'interfaccia utente a un gran numero di piattaforme software. Sfortunatamente, la biblioteca, che ha richiesto molto lavoro, non ha permesso di raggiungere risultati accettabili su piattaforme diverse. (Allo stesso tempo, sono comparsi diversi errori su piattaforme diverse nei programmi di grafica.)

Tuttavia, questo è stato solo l'inizio. In molte applicazioni, l'indipendenza della macchina è molto più importante della sofisticata interfaccia utente grafica. Queste applicazioni hanno beneficiato del rilascio di Java 1.0. Tuttavia, ora il toolkit per la creazione di un'interfaccia utente grafica è stato completamente riprogettato e non dipende più dall'interfaccia utente sul computer host. La nuova versione è più significativa e, a nostro avviso, più attraente per l'utente rispetto alle precedenti.

Interpretato

L'interprete Java può essere inoltrato a qualsiasi macchina ed eseguire bytecode direttamente su di esso. Poiché la modifica dei collegamenti è un processo più semplice, lo sviluppo del programma può essere molto più rapido ed efficiente.

Forse questo offre un vantaggio nello sviluppo di applicazioni, ma la citazione è una chiara esagerazione. In ogni caso, il compilatore Java incluso nel Java Software Development Kit (JSDK) è piuttosto lento. (Alcuni compilatori appartenenti al terzo tipo, ad esempio i compilatori IBM, funzionano molto più velocemente.) La velocità della ricompilazione è solo uno dei fattori che caratterizzano l'efficacia dell'ambiente di programmazione. Confrontando la velocità degli ambienti di programmazione Java con Visual Basic, potresti rimanere deluso.

Alte prestazioni

Sebbene i codici byte interpretati comunemente abbiano prestazioni più che sufficienti, ci sono situazioni in cui sono richieste prestazioni ancora più elevate. I codici byte possono essere "al volo" (in fase di esecuzione) tradotti in codici macchina per il processore specifico su cui è in esecuzione l'applicazione.

Se un interprete viene utilizzato per eseguire bytecode, la frase " alte prestazioni". Tuttavia, su molte piattaforme, è possibile un diverso tipo di compilazione, fornita da compilatori sincroni (compilatori just-in-time-JIT). Traducono il bytecode in codice dipendente dalla macchina, memorizzano il risultato in memoria e quindi lo chiamano se necessario. Perché l'interpretazione eseguito solo una volta, questo approccio molte volte aumenta la velocità di lavoro.

Nonostante il fatto che i compilatori sincroni siano ancora più lenti dei compilatori dipendenti dalla macchina, funzionano comunque molto più velocemente degli interpreti, fornendo alcuni programmi con un'accelerazione di 10 o addirittura 20 volte. Questa tecnologia viene costantemente migliorata e alla fine può raggiungere una velocità che i compilatori tradizionali non supereranno mai. Ad esempio, un compilatore sincrono può determinare quale pezzo di codice viene eseguito più spesso e ottimizzarlo per la velocità di esecuzione.

multithread

Fornisce una migliore interattività ed esecuzione del programma.

Se hai mai provato ad organizzare calcoli multi-thread in qualche altro linguaggio di programmazione, rimarrai piacevolmente sorpreso da quanto sia facile farlo nel linguaggio Java. I thread in linguaggio Java possono trarre vantaggio dai sistemi multiprocessore se il sistema operativo lo consente. Sfortunatamente, le implementazioni dei thread sulla maggior parte delle piattaforme sono molto diverse l'una dall'altra e gli sviluppatori Java non tentano di ottenere l'uniformità. Solo il codice per chiamare i thread rimane lo stesso per tutte le macchine; Il linguaggio Java sposta l'implementazione del multithreading sul sistema operativo o sulla libreria thread sottostante. (Gli stream sono descritti nel secondo volume.) Ciononostante, è la facilità di organizzazione dell'elaborazione multi-thread che rende Java così attraente per lo sviluppo di software server.

Dinamico

In molti modi, Java è più dinamico di C o C ++. È stato progettato per adattarsi facilmente a un ambiente in costante cambiamento. È possibile aggiungere liberamente nuovi metodi e oggetti alle librerie senza causare alcun danno. Il linguaggio Java consente di ottenere facilmente informazioni sull'avanzamento di un programma.

Questo è molto importante nei casi in cui è necessario aggiungere codice a un programma già in esecuzione. Un esempio lampante di questo è il codice che viene scaricato da Internet per l'esecuzione da un browser. In Java 1.0, non è stato affatto facile ottenere informazioni sullo stato di avanzamento di un programma eseguibile, tuttavia, l'attuale versione del linguaggio Java rivela al programmatore sia la struttura che il comportamento degli oggetti del programma eseguibile.
Questo è molto utile per i sistemi che devono analizzare oggetti durante l'esecuzione del programma. Tali sistemi includono strumenti di interfaccia utente grafica, debugger intelligenti, componenti plug-in e database di oggetti.

Java e Internet

L'idea è semplice: gli utenti scaricano i byte Java da Internet e li eseguono sui loro computer. I programmi Java che eseguono browser Web sono chiamati applet. Per utilizzare l'applet, è necessario un browser Web che supporti il \u200b\u200blinguaggio Java e sia in grado di interpretare i codici byte. La licenza del codice sorgente Java è di proprietà di Sun, che insiste sull'immutabilità del linguaggio stesso e della struttura delle sue librerie principali. Sfortunatamente, la realtà non è così. Diverse versioni dei browser Netscape e Internet Explorer supportano diverse versioni del linguaggio Java, alcune delle quali sono notevolmente obsolete. Questa spiacevole situazione pone un crescente ostacolo allo sviluppo di applet per sfruttare l'ultima versione del linguaggio Java. Per risolvere questo problema, Sun ha sviluppato il programma Plug-in Java, che consente di creare l'ambiente più avanzato per l'esecuzione di programmi Java basati su browser Netscape e Internet Explorer.

Scaricare un'applet è come incorporare un'immagine in una pagina Web. L'applet diventa parte della pagina e il testo avvolge lo spazio che occupa. Tuttavia, la differenza è che l'immagine è ora viva. Risponde ai comandi dell'utente, cambia il suo aspetto e fornisce il trasferimento di dati tra il computer su cui è visualizzata l'applet e il computer che controlla questa applet.

Scaricare un'applet è come inserire un'immagine in una pagina Web. L'applet diventa parte della pagina e il testo si avvolge attorno al suo posto. Il fatto è che l'immagine è "live". Risponde ai comandi dell'utente, cambia aspetto ed esegue il trasferimento dei dati tra il computer su cui è in esecuzione l'applet e il computer che controlla questa applet.

In fig. 1.1 mostrato buon esempio Una pagina Web dinamica che esegue calcoli complessi e utilizza un'applet per rappresentare le molecole. Per comprendere meglio la struttura della molecola, puoi ruotarla o ingrandire usando il mouse. Tali manipolazioni non possono essere implementate su pagine Web statiche, ma le applet lo rendono possibile. (Questa applet è disponibile all'indirizzo http: //jmol.sourceforge.net.)

Figura. 1.1. Applet Jmol

Utilizzando le applet, è possibile aggiungere nuovi pulsanti e campi di testo a una pagina Web. Tuttavia, tali applet si caricano lentamente sulla linea telefonica.

Quasi lo stesso può essere fatto usando il linguaggio HTML dinamico, i moduli del linguaggio HTML (Hypertext Markup Language - Hypertext Markup Language) o un linguaggio di scripting come JavaScript. Naturalmente, le prime applet erano destinate all'animazione: globi rotanti, personaggi dei cartoni animati danzanti, testi artistici, ecc. Tuttavia, la maggior parte di quanto sopra può fare GIF animate e Dynamic HTML, combinato con gli script, fa molto di più delle applet.

A causa dell'incompatibilità dei browser e delle incoerenze nel processo di download attraverso connessioni di rete lente, le applet progettate per le pagine Web non sono state un grande risultato. Nelle reti locali (intranet) la situazione è completamente diversa. Di solito non hanno problemi associati la larghezza di banda canale, quindi il tempo di caricamento dell'applet non è significativo. Sulla rete locale, è possibile selezionare il browser desiderato o utilizzare il programma plug-in Java. I dipendenti non possono spostare il programma consegnato tramite la rete in un posto sbagliato o installarlo in modo errato e l'amministratore di sistema non deve bypassare tutti i computer client e aggiornare i programmi su di essi. Un gran numero di programmi progettati per la contabilità delle merci, la pianificazione delle vacanze, il rimborso dei costi di trasporto e simili, sono stati sviluppati da molte società sotto forma di applet che utilizzano i browser.

Mentre stavamo scrivendo il libro, il pendolo oscillava di nuovo dai programmi client alla programmazione lato server. In particolare, i server delle applicazioni possono utilizzare le capacità di monitoraggio della macchina virtuale Java per bilanciare automaticamente il carico, combinare le connessioni al database, sincronizzare gli oggetti, arrestare e ricaricare in sicurezza, nonché eseguire altri processi necessari per applicazioni server scalabili, che sono quasi impossibili da implementare correttamente. Pertanto, i programmatori che hanno creato applicazioni hanno avuto l'opportunità di acquistare questi meccanismi complessi, invece di svilupparli da soli. Ciò ha aumentato la produttività dei programmatori: si sono concentrati sulla logica dei loro programmi, senza essere distratti dai dettagli relativi al funzionamento dei server.

LA CAMPANA

C'è chi legge questa notizia prima di te.
Iscriviti per ricevere articoli freschi.
E-mail
Nome
Cognome
Come vuoi leggere The Bell
Niente spam