Java Language Tutorial
Iniziare con Java Language
Ricerca…
Osservazioni
Il linguaggio di programmazione Java è ...
Scopo generale : è progettato per essere utilizzato per la scrittura di software in una vasta gamma di domini applicativi e privo di funzioni specializzate per qualsiasi dominio specifico.
Basato sulla classe : la sua struttura dell'oggetto è definita in classi. Le istanze di classe hanno sempre quei campi e metodi specificati nelle loro definizioni di classe (vedi Classi e Oggetti ). Questo è in contrasto con linguaggi non basati su classi come JavaScript.
Caratterizzato staticamente : il compilatore verifica al momento della compilazione che i tipi di variabili siano rispettati. Ad esempio, se un metodo prevede un argomento di tipo
String
, tale argomento deve essere effettivamente una stringa quando viene chiamato il metodo.Orientato agli oggetti : la maggior parte delle cose in un programma Java sono istanze di classe, cioè bundle di stato (campi) e comportamento (metodi che operano su dati e formano l' interfaccia dell'oggetto con il mondo esterno).
Portatile : può essere compilato su qualsiasi piattaforma con
javac
e i file di classe risultanti possono essere eseguiti su qualsiasi piattaforma dotata di JVM.
Java ha lo scopo di consentire agli sviluppatori di applicazioni di "scrivere una volta, eseguire ovunque" (WORA), il che significa che il codice Java compilato può essere eseguito su tutte le piattaforme che supportano Java senza necessità di ricompilazione.
Il codice Java è compilato in bytecode (i file .class
) che a sua volta viene interpretato dalla Java Virtual Machine (JVM). In teoria, il bytecode creato da un compilatore Java dovrebbe funzionare allo stesso modo su qualsiasi JVM, anche su un diverso tipo di computer. La JVM potrebbe (e nei programmi del mondo reale) scegliere di compilare in comandi macchina nativi le parti del bytecode che vengono eseguite spesso. Questa è chiamata "compilazione Just-in-time (JIT)".
Edizioni Java e versioni
Esistono tre "edizioni" di Java definite da Sun / Oracle:
- Java Standard Edition (SE) è l'edizione progettata per uso generale.
- Java Enterprise Edition (EE) aggiunge una gamma di servizi per la creazione di servizi "di livello enterprise" in Java. Java EE è coperto separatamente .
- Java Micro Edition (ME) è basato su un sottoinsieme di Java SE ed è destinato all'uso su dispositivi di piccole dimensioni con risorse limitate.
Esiste un argomento separato sulle edizioni Java SE / EE / ME .
Ogni edizione ha più versioni. Le versioni di Java SE sono elencate di seguito.
Installazione di Java
C'è un argomento separato su Installazione di Java (Standard Edition) .
Compilazione ed esecuzione di programmi Java
Ci sono argomenti separati su:
- Compilazione del codice sorgente Java
- Implementazione di Java inclusa la creazione di file JAR
- Esecuzione di applicazioni Java
- Il percorso di classe
Qual'è il prossimo?
Ecco i collegamenti alle materie per continuare ad apprendere e comprendere il linguaggio di programmazione Java. Questi argomenti sono le basi della programmazione Java per iniziare.
- Tipi di dati primitivi in Java
- Operatori in Java
- Archi in Java
- Strutture di controllo di base in Java
- Classi e oggetti in Java
- Array in Java
- Standard di codice Java
analisi
Mentre Java non ha alcun supporto per i test nella libreria standard, esistono librerie di terze parti progettate per supportare il test. Le due librerie di test unità più popolari sono:
- JUnit ( sito ufficiale )
- TestNG ( sito ufficiale )
Altro
- I modelli di progettazione per Java sono trattati in Design Patterns .
- La programmazione per Android è coperta in Android .
- Le tecnologie Java Enterprise Edition sono trattate in Java EE .
- Le tecnologie Oracle JavaFX sono trattate in JavaFX .
1. Nella sezione Versioni la data di fine vita (gratuita) è quando Oracle interromperà la pubblicazione di ulteriori aggiornamenti di Java SE nei propri siti di download pubblici. I clienti che necessitano di un accesso continuo a correzioni di errori critici e correzioni di sicurezza, nonché una manutenzione generale per Java SE possono ottenere supporto a lungo termine tramite il supporto Oracle Java SE .
Versioni
Versione Java SE | Nome in codice | Fine vita (gratis 1 ) | Data di rilascio |
---|---|---|---|
Java SE 9 (accesso anticipato) | Nessuna | futuro | 2017/07/27 |
Java SE 8 | Ragno | futuro | 2014/03/18 |
Java SE 7 | Delfino | 2015/04/14 | 2011-07-28 |
Java SE 6 | Mustang | 2013/04/16 | 2006-12-23 |
Java SE 5 | Tigre | 2009-11-04 | 2004-10-04 |
Java SE 1.4 | smeriglio | prima del 2009-11-04 | 2002/02/06 |
Java SE 1.3 | Gheppio | prima del 2009-11-04 | 2000/05/08 |
Java SE 1.2 | Terreno di gioco | prima del 2009-11-04 | 1998/12/08 |
Java SE 1.1 | Nessuna | prima del 2009-11-04 | 1997/02/19 |
Java SE 1.0 | Quercia | prima del 2009-11-04 | 1996/01/21 |
Creare il tuo primo programma Java
Crea un nuovo file nell'editor di testo o IDE denominato HelloWorld.java
. Quindi incolla questo blocco di codice nel file e salva:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
Nota: affinché Java riconosca questo come una public class
(e non genera un errore di compilazione ), il nome del file deve essere uguale al nome della classe ( HelloWorld
in questo esempio) con un'estensione .java
. Dovrebbe esserci anche un modificatore di accesso public
prima di esso.
Le convenzioni di denominazione raccomandano che le classi Java inizino con un carattere maiuscolo e siano in formato cammello (in cui la prima lettera di ogni parola è in maiuscolo). Le convenzioni raccomandano rispetto ai caratteri di sottolineatura ( _
) e ai simboli del dollaro ( $
).
Per compilare, apri una finestra di terminale e vai alla directory di HelloWorld.java
:
cd /path/to/containing/folder/
Nota: cd è il comando del terminale per cambiare directory.
Immettere javac
seguito dal nome e dall'estensione del file come segue:
$ javac HelloWorld.java
È abbastanza comune ottenere l'errore 'javac' is not recognized as an internal or external command, operable program or batch file.
anche quando hai installato JDK
e sei in grado di eseguire il programma da IDE
ex. eclipse
ecc. Poiché il percorso non viene aggiunto all'ambiente per impostazione predefinita.
Nel caso in cui si ottenga questo su Windows, per risolverlo, provare prima a navigare sul percorso di javac.exe
, è molto probabilmente in C:\Program Files\Java\jdk(version number)\bin
. Quindi prova a eseguirlo con sotto.
$ C:\Program Files\Java\jdk(version number)\bin\javac HelloWorld.java
In precedenza, quando stavamo chiamando javac
, era lo stesso del comando precedente. Solo in quel caso il tuo OS
sapeva dove risiedeva javac
. Quindi diciamolo ora, in questo modo non è necessario digitare l'intero percorso ogni volta. Dovremmo aggiungere questo al nostro PATH
Per modificare la variabile di ambiente PATH
in Windows XP / Vista / 7/8/10:
- Pannello di controllo ⇒ Sistema ⇒ Impostazioni di sistema avanzate
- Passare alla scheda "Avanzate" ⇒ Variabili d'ambiente
- In "Variabili di sistema", scorrere verso il basso per selezionare "PERCORSO" ⇒ Modifica
Non puoi annullare questo, quindi fai attenzione. Prima copia il tuo percorso esistente sul blocco note. Quindi, per ottenere l'esatto PERCORSO sul tuo javac
cerca manualmente nella cartella in cui risiede javac
e fai clic sulla barra degli indirizzi e poi copialo. Dovrebbe sembrare qualcosa come c:\Program Files\Java\jdk1.8.0_xx\bin
Nel campo "Valore variabile", incolla questo IN FRONTE di tutte le directory esistenti, seguito da un punto e virgola (;). NON CANCELLARE le voci esistenti.
Variable name : PATH
Variable value : c:\Program Files\Java\jdk1.8.0_xx\bin;[Existing Entries...]
Ora questo dovrebbe risolversi.
Per i sistemi basati su Linux, prova qui .
Nota: il comando javac
richiama il compilatore Java.
Il compilatore genererà quindi un file bytecode chiamato HelloWorld.class
che può essere eseguito nella Java Virtual Machine (JVM) . Il compilatore del linguaggio di programmazione Java, javac
, legge i file sorgente scritti nel linguaggio di programmazione Java e li compila in file di classe bytecode
. Facoltativamente, il compilatore può anche elaborare annotazioni trovate nei file di origine e di classe utilizzando l'API Pluggable
Annotation Processing. Il compilatore è uno strumento da riga di comando, ma può anche essere richiamato utilizzando l'API Java Compiler.
Per eseguire il tuo programma, inserisci java
seguito dal nome della classe che contiene il metodo main
( HelloWorld
nel nostro esempio). Nota come viene omessa la .class
.
$ java HelloWorld
Nota: il comando java
esegue un'applicazione Java.
Questo verrà prodotto nella tua console:
Ciao mondo!
Hai codificato e costruito con successo il tuo primo programma Java!
Nota: affinché i comandi Java ( java
, javac
, ecc.) javac
riconosciuti, è necessario accertarsi che:
- È installato un JDK (ad es. Oracle , OpenJDK e altre fonti)
- Le variabili di ambiente sono configurate correttamente
Dovrai utilizzare un compilatore ( javac
) e un executor ( java
) fornito da JVM. Per scoprire quali versioni sono state installate, immettere java -version
e javac -version
nella riga di comando. Il numero di versione del programma verrà stampato nel terminale (ad es. 1.8.0_73
).
Uno sguardo più da vicino al programma Hello World
Il programma "Hello World" contiene un singolo file, che consiste in una definizione di classe HelloWorld
, un metodo main
e un'istruzione all'interno del metodo main
.
public class HelloWorld {
La class
parola chiave inizia la definizione di classe per una classe denominata HelloWorld
. Ogni applicazione Java contiene almeno una definizione di classe ( Ulteriori informazioni sulle classi ).
public static void main(String[] args) {
Questo è un metodo del punto di ingresso (definito dal nome e dalla firma del public static void main(String[])
) da cui JVM
può eseguire il programma. Ogni programma Java dovrebbe averne uno. È:
-
public
: il che significa che il metodo può essere chiamato da qualsiasi parte anche al di fuori del programma. Vedi Visibilità per maggiori informazioni su questo. -
static
: significa che esiste e può essere eseguito da solo (a livello di classe senza creare un oggetto). -
void
: il significato non restituisce alcun valore. Nota: questo è diverso da C e C ++ in cui è previsto un codice di ritorno comeint
(il modo in cui Java èSystem.exit()
).
Questo metodo principale accetta:
- Una matrice (in genere chiamata
args
) diString
s passata come argomenti alla funzione principale (ad esempio, dagli argomenti della riga di comando ).
Quasi tutto ciò è richiesto per un metodo di punto di ingresso Java.
Parti non richieste:
- Il nome
args
è un nome variabile, quindi può essere chiamato qualsiasi cosa tu voglia, anche se in genere è chiamatoargs
. - Se il suo tipo di parametro è un array (
String[] args
) o Varargs (String... args
) non ha importanza perché gli array possono essere passati in vararg.
Nota: una singola applicazione può avere più classi contenenti un metodo del punto di ingresso ( main
). Il punto di ingresso dell'applicazione è determinato dal nome della classe passato come argomento al comando java
.
All'interno del metodo principale, vediamo la seguente dichiarazione:
System.out.println("Hello, World!");
Analizziamo questa affermazione elemento per elemento:
Elemento | Scopo |
---|---|
System | questo denota che l'espressione successiva invocherà la classe System , dal pacchetto java.lang . |
. | questo è un "punto operatore". Gli operatori di punti forniscono l'accesso a membri di classi 1 ; cioè i suoi campi (variabili) e i suoi metodi. In questo caso, questo operatore punto consente di fare riferimento al out campo statico all'interno del System di classe. |
out | questo è il nome del campo statico di tipo PrintStream all'interno della classe System contenente la funzionalità di output standard. |
. | questo è un altro operatore punto. Questo operatore punto fornisce accesso al metodo println all'interno della variabile out . |
println | questo è il nome di un metodo all'interno della classe PrintStream. Questo metodo in particolare stampa il contenuto dei parametri nella console e inserisce una nuova riga dopo. |
( | questa parentesi indica che si sta accedendo a un metodo (e non a un campo) e inizia i parametri passati nel metodo println . |
"Hello, World!" | questo è il letterale String che viene passato come parametro nel metodo println . Le doppie virgolette su ciascuna estremità delimitano il testo come una stringa. |
) | questa parentesi significa la chiusura dei parametri passati nel metodo println . |
; | questo punto e virgola segna la fine della dichiarazione. |
Nota: ogni istruzione in Java deve terminare con un punto e virgola ( ;
).
Il corpo del metodo e il corpo della classe vengono quindi chiusi.
} // end of main function scope
} // end of class HelloWorld scope
Ecco un altro esempio che dimostra il paradigma OO. Modelliamo una squadra di calcio con un membro (sì, uno!). Ce ne possono essere di più, ma ne parleremo quando arriveremo agli array.
Per prima cosa, definiamo la nostra classe Team
:
public class Team {
Member member;
public Team(Member member) { // who is in this Team?
this.member = member; // one 'member' is in this Team!
}
}
Ora, definiamo la nostra classe Member
:
class Member {
private String name;
private String type;
private int level; // note the data type here
private int rank; // note the data type here as well
public Member(String name, String type, int level, int rank) {
this.name = name;
this.type = type;
this.level = level;
this.rank = rank;
}
}
Perché usiamo private
qui? Beh, se qualcuno volesse sapere il tuo nome, dovrebbe chiederti direttamente, invece di prendere in tasca e tirare fuori la tua tessera di previdenza sociale. Questo private
fa qualcosa del genere: impedisce alle entità esterne di accedere alle tue variabili. È possibile restituire solo membri private
tramite le funzioni getter (mostrate sotto).
Dopo aver messo tutto insieme e aggiunto i getter e il metodo principale come discusso in precedenza, abbiamo:
public class Team {
Member member;
public Team(Member member) {
this.member = member;
}
// here's our main method
public static void main(String[] args) {
Member myMember = new Member("Aurieel", "light", 10, 1);
Team myTeam = new Team(myMember);
System.out.println(myTeam.member.getName());
System.out.println(myTeam.member.getType());
System.out.println(myTeam.member.getLevel());
System.out.println(myTeam.member.getRank());
}
}
class Member {
private String name;
private String type;
private int level;
private int rank;
public Member(String name, String type, int level, int rank) {
this.name = name;
this.type = type;
this.level = level;
this.rank = rank;
}
/* let's define our getter functions here */
public String getName() { // what is your name?
return this.name; // my name is ...
}
public String getType() { // what is your type?
return this.type; // my type is ...
}
public int getLevel() { // what is your level?
return this.level; // my level is ...
}
public int getRank() { // what is your rank?
return this.rank; // my rank is
}
}
Produzione:
Aurieel
light
10
1
Ancora una volta, il metodo main
all'interno della classe Test
è il punto di ingresso al nostro programma. Senza il metodo main
, non possiamo dire a Java Virtual Machine (JVM) da dove iniziare l'esecuzione del programma.
1 - Poiché la classe HelloWorld
ha una scarsa relazione con la classe System
, può solo accedere public
dati public
.