Qual è la differenza tra Java e JavaScript?

Per coloro che sono appena all'inizio della programmazione, sia lato server o lato client, è inevitabile che si incontrino i linguaggi di programmazione Java e JavaScript.

Se hai qualche esperienza di programmazione nell'uno o nell'altro, allora sai che non sono uguali e probabilmente conosci la differenza tra i due. Ma se hai appena iniziato, questo può essere fonte di confusione per alcuni motivi, il primo è come vengono denominate le lingue.

Sebbene condividano il nome "Java" nel loro nome, condividono pochissimi attributi e caratteristiche. In questo articolo, daremo un'occhiata ad alcune delle principali differenze nelle lingue esaminando alcuni degli attributi di alto livello che ogni lingua offre.

In definitiva, stiamo cercando di aiutare chi di voi è nuovo di zecca nella programmazione e non è sicuro quale lingua si desidera imparare (o imparare prima!). In questo articolo, daremo un'occhiata ad alcune delle principali differenze che esistono nelle lingue e dove ognuno è applicabile un tentativo di fornirti le informazioni necessarie per aiutarti a fare il passo successivo nella tua carriera.

Java e JavaScript

Forse il punto migliore da fare quando si inizia a distinguere queste due lingue è disegnare il confronto in questo modo:

Java è JavaScript come ham è criceto.

Sfortunatamente, non posso rivendicare questa analogia come la mia. Invece, è coniato da Jeremy Keith, ma è un punto eccellente: l'unica cosa che le lingue hanno in comune è che condividono il nome "Java" nel loro nome. 

Una somiglianza è che i linguaggi sono quelli che chiamiamo linguaggi "C-style" in quanto le loro sintassi sono come quelle di C. Cioè, entrambi hanno funzioni, parentesi, parentesi e punti e virgola.

A parte questo, però, c'è ben poca somiglianza. Nel resto di questo articolo, esamineremo ogni lingua ad un livello molto alto per darti un'idea di ciò che ciascuna lingua offre e le caratteristiche di ciascuna. 

Una volta fatto, dovresti essere in grado di vedere una differenza nelle due lingue e, sebbene siano nominate in modo simile e abbiano alcuni sintassi simile, è l'unica cosa che hanno in comune.

Quindi iniziamo.

Cos'è Java?

Abbiamo coperto Java in altri tutorial su questo sito e continueremo a farlo mentre la lingua continua a crescere nel tempo. 

Java è stato concepito con l'idea di "scrivere una volta, eseguire ovunque", il che significa che è possibile scrivere un programma su un computer e quindi distribuirlo su qualsiasi dispositivo con Java Runtime.

Ma aspetta: cos'è il runtime Java? 

Innanzitutto, è importante capire che Java è un linguaggio compilato, sebbene non sia compilato in codice eseguibile binario. Invece, è compilato in bytecode.

Bytecode Java è il set di istruzioni della macchina virtuale Java. Ogni bytecode è composto da uno, o in alcuni casi da due byte che rappresentano l'istruzione (opcode), insieme a zero o più byte per passare i parametri.

Sembra meno che eccitante, vero? Va bene! Come sviluppatori, non siamo responsabili della scrittura del bytecode. Invece, il compilatore Java compila il nostro codice in bytecode.

Questo bytecode viene eseguito in cima al runtime, che viene eseguito nel contesto di un altro sistema operativo. Questo sistema operativo può essere eseguito su un telefono cellulare, può essere eseguito su un altro computer, può essere eseguito su Windows, OS X, Linux o qualsiasi altro sistema su cui è compatibile. Puoi leggere tutto su di esso in questa pagina.

Sembra pulito, giusto? Il fatto è che non è privo di sfide. Sembra molto più semplice di quanto non sia, e questo è qualcosa che gli sviluppatori Java più avanzati affrontano. È al di fuori dello scopo di questo articolo. Invece, ci concentreremo sugli attributi della lingua in modo che possiamo confrontarla e confrontarla con JavaScript.

Ma prima, diamo un'occhiata ad alcune delle facoltà che dobbiamo lavorare in Java. È importante notare che lavoriamo a un livello molto più alto. Ad esempio, possiamo lavorare con i seguenti costruttori:

  • Le classi sono il fondamento di qualsiasi linguaggio basato sugli oggetti. Ci permettono di definire quali caratteristiche e comportamenti un oggetto mostrerà una volta che è stato istanziato.
  • Le funzioni sono le parti delle classi che consentono agli oggetti fare qualcosa. Una classe che rappresenta a File può permetterci di leggere il contenuto di ciò che contiene.
  • Proprietà o attributi sono ciò che descrive una classe. UN File, per esempio, può avere permessi come la capacità di leggere o scrivere su un file system. Può anche avere un percorso che rappresenta dove risiede sul file system.
  • L'ereditarietà è quando una classe può ereditare certe proprietà da un'altra classe. Ciò significa che riceve tutte le funzioni e le proprietà da una classe genitore, e può aggiungere la sua funzionalità unica.

Se non hai mai scritto codice in precedenza, parte di questo potrebbe sembrare un gergo. Comprensibilmente così! Abbiamo alcune risorse disponibili per aiutarti a insegnarti ciò che devi sapere:

  • Introduzione alla programmazione per computer con Java: 101
  • Introduzione alla programmazione per computer con Java: 201
  • Introduzione alla programmazione per computer con Java: 301

Ma prima di saltare troppo in là per prendere una decisione su ciò che vuoi imparare, diamo un'occhiata anche a JavaScript.

Che cos'è JavaScript?

Ho trattato JavaScript in modo molto più dettagliato in un articolo precedente che puoi leggere qui, ma coprirò i punti salienti, come accennato in precedenza, in questo articolo. Per un'immersione molto più profonda, dai un'occhiata a ciò che viene fornito sopra.

Il javascript, nella sua essenza, è un linguaggio dinamico che non è tipizzato, ed è interpretato. Questo significa:

  • Noi, come sviluppatori, possiamo facilmente estendere alcuni aspetti della lingua aggiungendo il nostro codice a oggetti preesistenti come l'oggetto Stringa.
  • La natura non tipizzata del linguaggio significa che possiamo dichiarare stringhe, booleani e numeri (rispetto a interi, float e decimali) senza dover dichiarare esplicitamente il loro tipo come facciamo in Java (e in altre lingue).
  • Il linguaggio è interpretato, il che significa che non è compilato in un eseguibile. Invece, è interpretato da un browser web o da un altro software sul tuo computer che traduce le tue istruzioni in codice macchina.

Se sei confuso da tutto ciò, non preoccuparti! Siamo stati tutti lì:

  • Definire le variabili?
  • Funzioni di implementazione?
  • Creare oggetti?
  • Impostazione di istruzioni condizionali?
  • E altro ancora.

È molto. Lo so. Ma la cosa bella è che abbiamo abbondanza di risorse per aggiornarti con JavaScript. E una volta apprese le sfumature della lingua, diventa più facile e più facile lavorare all'interno dei suoi confini.

Ricorda, tutto il "Non sono sicuro di quello che sto facendo" è naturale e fa parte della curva di apprendimento. Se lo hai mai visto qualsiasi programmazione relativa a JavaScript, quindi consiglio vivamente di verificare un paio dei seguenti corsi:

  • Principi fondamentali di JavaScript
  • Strumenti essenziali per sviluppatori JavaScript
  • JavaScript orientato agli oggetti con ES6
  • Cosa sta arrivando a JavaScript

Una volta acquisita familiarità con la lingua, è anche importante utilizzare strumenti adeguati per lo sviluppo delle applicazioni. Ciò include l'uso di strumenti come un debugger (che include la maggior parte dei browser moderni). Questo è fuori portata per questo particolare articolo, però.

Una nota sull'Orientamento degli oggetti

Un'altra importante distinzione da fare è che JavaScript e Java sono entrambi considerati linguaggi orientati agli oggetti, ma per ragioni diverse.

Java ci consente di creare istanze di oggetti dalle classi che creiamo. Al contrario, tutto in JavaScript è un oggetto. Ciò significa che non ci sono classi. E poiché tutto è un oggetto, tutto ha metodi e proprietà che possiamo usare. 

In Java, quando si crea un'istanza di una classe, si ha accesso ai metodi e alle proprietà che si espongono attraverso la definizione della classe. Se disponi di proprietà pubbliche, funzioni pubbliche e così via, lo sviluppatore può utilizzarle.

In JavaScript, quando si crea una variabile, un oggetto o anche una funzione, si ha la possibilità di chiamare funzioni che esistono non solo su quell'oggetto ma sugli oggetti da cui l'oggetto dato ricava le sue proprietà. Questo ha a che fare con la natura dell'ereditarietà prototipale di JavaScript, che puoi leggere di più in questo articolo.

Quale dovrei scegliere?

Come puoi vedere dal contenuto precedente, le due lingue, benché entrambe siano ispirate a C per quanto riguarda la loro sintassi, sono molto diverse. Ognuno ha anche uno scopo diverso.

Sebbene tu possa scrivere JavaScript sul server con tecnologie come Node.js, non sono lo stesso tipo di applicazioni create con Java. Inoltre, sebbene sia possibile scrivere applicazioni lato server con Java, non sono lo stesso tipo di applicazioni che in genere si scrive con JavaScript.

Al contrario, è spesso utile pensare che JavaScript sia un linguaggio più adatto allo sviluppo sul lato client, per applicazioni che verranno eseguite in un browser Web o per applicazioni a pagina singola. Ed è meglio pensare a Java come linguaggio di programmazione che è meglio utilizzato per scrivere applicazioni server o desktop che possono essere eseguite su una varietà di sistemi operativi e dispositivi diversi.

Conclusione

Apparentemente, ognuna di queste lingue offre i loro unici set di vantaggi e svantaggi. Onestamente, penso che molto di ciò che ci spinge a scegliere una lingua sull'altra abbia a che fare con ciò che vogliamo fare in termini di creazione di soluzioni per noi stessi e gli altri.

Se desideri lavorare sul web, allora JavaScript è probabile la tua scelta migliore Se invece vuoi scrivere applicazioni desktop, allora Java non è una cattiva scelta.

Per coloro che sono interessati, vale la pena notare che JavaScript è diventato una delle lingue di fatto di lavorare sul web. Non è senza le curve di apprendimento, e ci sono un sacco di quadri e librerie per tenerti occupato, pure. Se stai cercando ulteriori risorse da studiare o da utilizzare nel tuo lavoro, dai un'occhiata a ciò che abbiamo a disposizione sul mercato Envato.

Trascorro la maggior parte del mio tempo lavorando con WordPress e creando soluzioni su di esso; tuttavia, sono anche un fan di JavaScript e blog su di esso di volta in volta. Se sei interessato ad altri corsi ed esercitazioni che ho scritto per Envato, consulta la mia pagina del profilo. Inoltre, puoi leggere altri articoli su WordPress e lo sviluppo di JavaScript sul mio blog. Sentiti libero di seguirmi su Twitter anche su @tommcfarlin.

Detto questo, si prega di lasciare qualsiasi e tutti i feedback nel feed dei commenti qui sotto.

Scopri JavaScript: la guida completa

Abbiamo creato una guida completa per aiutarti a imparare JavaScript, sia che tu stia appena iniziando come sviluppatore web o che desideri esplorare argomenti più avanzati.