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:

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.

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:

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!");
    }
}

Esegui live su Ideone

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:

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 come int (il modo in cui Java è System.exit() ).

Questo metodo principale accetta:

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 è chiamato args .
  • 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

Corri su ideone

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 .



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow