Suche…


Bemerkungen

Die Java-Programmiersprache ist ...

  • Allzweck : Es ist für das Schreiben von Software in einer Vielzahl von Anwendungsdomänen vorgesehen und verfügt über keine speziellen Funktionen für eine bestimmte Domäne.

  • Klassenbasiert : Seine Objektstruktur ist in Klassen definiert. Klasseninstanzen haben immer diese Felder und Methoden in ihren Klassendefinitionen angegeben (siehe Klassen und Objekte ). Dies steht im Gegensatz zu nicht klassenbasierten Sprachen wie JavaScript.

  • Statisch typisiert : Der Compiler prüft zur Kompilierzeit, ob Variablentypen beachtet werden. Wenn eine Methode beispielsweise ein Argument des Typs String erwartet, muss dieses Argument beim Aufruf der Methode tatsächlich eine Zeichenfolge sein.

  • Objektorientiert : Die meisten Dinge in einem Java-Programm sind Klasseninstanzen, dh Zustandsbündel (Felder) und Verhalten (Methoden, die Daten verarbeiten und die Schnittstelle des Objekts zur Außenwelt bilden).

  • Portable : Es kann auf jeder Plattform mit javac kompiliert werden, und die resultierenden Klassendateien können auf jeder Plattform mit JVM ausgeführt werden.

Java soll Anwendungsentwicklern das "einmalige Schreiben, überall ausführen" (WORA) ermöglichen. Das bedeutet, dass kompilierter Java-Code auf allen Plattformen, die Java unterstützen, ohne Neukompilierung ausgeführt werden kann.

Java-Code wird zu Bytecode (den .class Dateien) kompiliert, die wiederum von der Java Virtual Machine (JVM) interpretiert werden. In der Theorie sollte der von einem Java-Compiler erstellte Bytecode auf jeder JVM auf die gleiche Art und Weise laufen, selbst auf einem anderen Computer. Die JVM kann (und in realen Programmen) die häufig ausgeführten Teile des Bytecodes in native Maschinenbefehle kompilieren. Dies wird als "Just-in-Time-Kompilierung (JIT)" bezeichnet.

Java-Editionen und -Versionen

Es gibt drei "Ausgaben" von Java, die von Sun / Oracle definiert werden:

  • Java Standard Edition (SE) ist die Edition, die für den allgemeinen Gebrauch bestimmt ist.
  • Java Enterprise Edition (EE) fügt eine Reihe von Möglichkeiten hinzu, um "Enterprise-Grade" -Dienste in Java zu erstellen. Java EE wird separat behandelt .
  • Java Micro Edition (ME) basiert auf einer Teilmenge von Java SE und ist für den Einsatz auf kleinen Geräten mit begrenzten Ressourcen vorgesehen.

Zu den Java SE / EE / ME-Editionen gibt es ein eigenes Thema.

Jede Ausgabe hat mehrere Versionen. Die Java SE-Versionen sind unten aufgeführt.

Java installieren

Es gibt ein eigenes Thema zum Installieren von Java (Standard Edition) .

Java-Programme kompilieren und ausführen

Es gibt separate Themen zu:

Was kommt als nächstes?

Hier finden Sie Links zu Themen, um die Java-Programmiersprache weiter zu erlernen und zu verstehen. Diese Themen sind die Grundlagen der Java-Programmierung, um Ihnen den Einstieg zu erleichtern.

Testen

Java bietet zwar keine Unterstützung für Tests in der Standardbibliothek, es gibt jedoch Bibliotheken von Drittanbietern, die Tests unterstützen. Die zwei beliebtesten Unit-Test-Bibliotheken sind:

Andere

1. Im Abschnitt " Versionen " endet das Ende der Lebensdauer (kostenlos), wenn Oracle keine weiteren Updates von Java SE auf seinen öffentlichen Download-Sites mehr veröffentlichen wird. Kunden, die weiterhin Zugriff auf wichtige Fehlerbehebungen und Sicherheitsupdates sowie allgemeine Wartungsarbeiten für Java SE benötigen, können über den Oracle Java SE-Support langfristig Unterstützung erhalten.

Versionen

Java SE-Version Code Name Ende des Lebens (kostenlos 1 ) Veröffentlichungsdatum
Java SE 9 (früher Zugriff) Keiner Zukunft 2017-07-27
Java SE 8 Spinne Zukunft 2014-03-18
Java SE 7 Delphin 2015-04-14 2011-07-28
Java SE 6 Mustang 2013-04-16 2006-12-23
Java SE 5 Tiger 2009-11-04 2004-10-04
Java SE 1.4 Merlin vor dem 2009-11-04 2002-02-06
Java SE 1.3 Turmfalke vor dem 2009-11-04 2000-05-08
Java SE 1.2 Spielplatz vor dem 2009-11-04 1998-12-08
Java SE 1.1 Keiner vor dem 2009-11-04 1997-02-19
Java SE 1.0 Eiche vor dem 2009-11-04 1996-01-21

Erstellen Sie Ihr erstes Java-Programm

Erstellen Sie in Ihrem Texteditor oder der IDE eine neue Datei mit dem Namen HelloWorld.java . Fügen Sie dann diesen Codeblock in die Datei ein und speichern Sie:

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}

Laufen Sie live auf Ideone

Hinweis: Für Java , dies zu erkennen als public class (und nicht werfen der Kompilierung Fehler ), muss der Dateiname sein , der gleiche wie der Klassenname ( HelloWorld in diesem Beispiel) mit einer .java - Erweiterung. Davor sollte auch ein Modifikator für den public Zugriff vorhanden sein.

Benennungskonventionen empfehlen, dass Java-Klassen mit Großbuchstaben beginnen und im Kamelformat sind (wobei der erste Buchstabe jedes Wortes groß geschrieben wird). Die Konventionen empfehlen gegen Unterstriche ( _ ) und Dollarzeichen ( $ ).

Öffnen Sie zum Kompilieren ein Terminalfenster und navigieren Sie zum Verzeichnis HelloWorld.java :

cd /path/to/containing/folder/

Hinweis: cd ist der Terminalbefehl zum Ändern des Verzeichnisses.

Geben Sie javac gefolgt von Dateiname und Erweiterung wie folgt ein:

$ javac HelloWorld.java

Es ist üblich, dass der Fehler 'javac' is not recognized as an internal or external command, operable program or batch file. selbst wenn Sie das JDK installiert haben und das Programm von IDE ex ausführen können. eclipse usw. Da der Pfad standardmäßig nicht zur Umgebung hinzugefügt wird.

Falls Sie dies unter Windows erhalten, versuchen Sie zunächst, zu Ihrem javac.exe Pfad zu javac.exe . Er befindet sich höchstwahrscheinlich in C:\Program Files\Java\jdk(version number)\bin . Dann versuchen Sie es mit unten auszuführen.

$ C:\Program Files\Java\jdk(version number)\bin\javac HelloWorld.java

Als wir javac , war es derselbe Befehl wie oben. Nur in diesem Fall wusste Ihr OS , wo sich javac . Sagen wir es jetzt, auf diese Weise müssen Sie nicht jedes Mal den gesamten Pfad eingeben. Wir müssen dies unserem PATH hinzufügen

So bearbeiten Sie die Umgebungsvariable PATH in Windows XP / Vista / 7/8/10:

  • Systemsteuerung ⇒ System ⇒ Erweiterte Systemeinstellungen
  • Wechseln Sie auf die Registerkarte "Erweitert" ⇒ Umgebungsvariablen
  • Scrollen Sie unter "Systemvariablen" nach unten, um "PFAD" auszuwählen ⇒ Bearbeiten

Du kannst das nicht ungeschehen machen, also sei vorsichtig. Kopieren Sie zunächst Ihren vorhandenen Pfad in den Merkzettel. Um den genauen Pfad zu Ihrem javac navigieren Sie manuell zu dem Ordner, in dem sich javac befindet, klicken Sie in die Adressleiste und kopieren Sie ihn. Es sollte c:\Program Files\Java\jdk1.8.0_xx\bin wie c:\Program Files\Java\jdk1.8.0_xx\bin

Fügen Sie im Feld "Variablenwert" diese IN FRONT aller vorhandenen Verzeichnisse gefolgt von einem Semikolon (;) ein. LÖSCHEN SIE KEINE vorhandenen Einträge.

Variable name  : PATH
Variable value : c:\Program Files\Java\jdk1.8.0_xx\bin;[Existing Entries...]

Das sollte sich jetzt lösen.

Für Linux-basierte Systeme versuchen Sie es hier .

Anmerkung: Der Befehl javac ruft den Java-Compiler auf.

Der Compiler generiert dann eine Bytecode- Datei namens HelloWorld.class die in der Java Virtual Machine (JVM) ausgeführt werden kann . Der Java-Programmiersprachen-Compiler javac liest Quelldateien, die in der Java-Programmiersprache geschrieben sind, und kompiliert sie in bytecode Klassendateien. Optional kann der Compiler auch Anmerkungen in Quell- und Klassendateien mithilfe der Pluggable Annotation-Verarbeitungs-API verarbeiten. Der Compiler ist ein Befehlszeilentool, kann aber auch mit der Java Compiler-API aufgerufen werden.

Um Ihr Programm auszuführen, geben Sie java gefolgt vom Namen der Klasse ein, die die main enthält (in unserem Beispiel HelloWorld ). Beachten Sie, wie die .class weggelassen wird:

$ java HelloWorld

Hinweis: Der java Befehl führt eine Java-Anwendung aus.

Dies wird auf Ihrer Konsole ausgegeben:

Hallo Welt!

Sie haben Ihr erstes Java-Programm erfolgreich codiert und erstellt!

Hinweis: Damit Java-Befehle ( java , javac usw.) erkannt werden, müssen Sie Folgendes sicherstellen:

Sie müssen einen Compiler ( javac ) und einen von Ihrer JVM bereitgestellten Executor ( java ) verwenden. Um herauszufinden, welche Versionen Sie installiert haben, geben javac -version in der Befehlszeile java -version und javac -version . Die Versionsnummer Ihres Programms wird im Terminal gedruckt (z. B. 1.8.0_73 ).


Ein genauerer Blick auf das Hello World-Programm

Das „Hallo Welt“ Programm enthält eine einzelne Datei, die aus einer besteht HelloWorld Klassendefinition, ein main und eine Erklärung innerhalb des main

public class HelloWorld {

Das class beginnt mit der Klassendefinition für eine Klasse mit dem Namen HelloWorld . Jede Java-Anwendung enthält mindestens eine Klassendefinition ( Weitere Informationen zu Klassen ).

    public static void main(String[] args)  {

Dies ist eine Einstiegspunktmethode (definiert durch ihren Namen und die Signatur von public static void main(String[]) ), von der aus die JVM Ihr Programm ausführen kann. Jedes Java-Programm sollte eine haben. Es ist:

  • public : Bedeutet, dass die Methode auch außerhalb des Programms aufgerufen werden kann. Weitere Informationen hierzu finden Sie unter Sichtbarkeit .
  • static : bedeutet, dass es existiert und von ihm selbst ausgeführt werden kann (auf Klassenebene, ohne ein Objekt zu erstellen).
  • void : bedeutet, dass kein Wert zurückgegeben wird. Hinweis: Dies unterscheidet sich von C und C ++, wo ein Rückgabewert wie int erwartet wird (Javas Weg ist System.exit() ).

Diese Hauptmethode akzeptiert:

Fast alles ist für eine Java-Einstiegspunktmethode erforderlich.

Nicht benötigte Teile:

  • Der Name args ist ein Variablenname, daher kann er beliebig genannt werden, obwohl er normalerweise args .
  • Ob der Parametertyp ein Array ( String[] args ) oder Varargs ( String... args ) ist, spielt keine Rolle, da Arrays in Varargs übergeben werden können.

Hinweis: Eine einzelne Anwendung mehrere Klassen haben einen Eintrittspunkt (enthaltend main ) -Methode. Der Einstiegspunkt der Anwendung wird durch den Klassennamen bestimmt, der als Argument an den java Befehl übergeben wird.

In der Hauptmethode sehen wir folgende Aussage:

        System.out.println("Hello, World!");

Lassen Sie uns diese Anweisung Element für Element aufschlüsseln:

Element Zweck
System Dies bedeutet, dass der nachfolgende Ausdruck die Klasse System aus dem Paket java.lang aufrufen wird.
. Dies ist ein "Punktoperator". Punktoperatoren bieten Ihnen Zugriff auf die Klassenmitglieder 1 ; dh seine Felder (Variablen) und ihre Methoden. In diesem Fall können Sie mit diesem Punktoperator auf das statische out Feld in der System verweisen.
out Dies ist der Name des statischen Feldes von PrintStream innerhalb der System - Klasse , um die Standardausgabe - Funktionalität enthält.
. Dies ist ein weiterer Punktoperator. Dieser Punktoperator ermöglicht den Zugriff auf die println Methode innerhalb der out Variablen.
println Dies ist der Name einer Methode innerhalb der PrintStream-Klasse. Diese Methode druckt insbesondere den Inhalt der Parameter in die Konsole und fügt anschließend eine neue Zeile ein.
( Diese Klammer zeigt an, dass auf eine Methode (und nicht auf ein Feld) zugegriffen wird, und beginnt mit der println der Parameter an die Methode println .
"Hello, World!" Dies ist das String- Literal, das als Parameter an die Methode println wird. Die doppelten Anführungszeichen an jedem Ende begrenzen den Text als String.
) Diese Klammer bedeutet, dass die Parameter geschlossen werden, die an die Methode println werden.
; Dieses Semikolon markiert das Ende der Anweisung.

Hinweis: Jede Anweisung in Java muss mit einem Semikolon ( ; ) enden.

Der Methodenkörper und der Klassenkörper werden dann geschlossen.

    }  // end of main function scope
}      // end of class HelloWorld scope 

Hier ist ein weiteres Beispiel, das das OO-Paradigma veranschaulicht. Lassen Sie uns eine Fußballmannschaft mit einem (ja, einem!) Mitglied modellieren. Es kann mehr geben, aber wir werden das besprechen, wenn wir zu Arrays kommen.

Zuerst definieren wir unsere Team :

public class Team {
    Member member;
    public Team(Member member) {  // who is in this Team?
        this.member = member;  //  one 'member' is in this Team!
    }
}

Nun definieren wir unsere Member Klasse:

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;
    }
}

Warum benutzen wir hier private ? Wenn jemand Ihren Namen wissen wollte, sollte er Sie direkt fragen, anstatt in Ihre Tasche zu greifen und Ihre Sozialversicherungskarte herauszuziehen. Dieses private macht so etwas: Es verhindert, dass externe Entitäten auf Ihre Variablen zugreifen. Sie können private Mitglieder nur über Getter-Funktionen (siehe unten) zurückgeben.

Nachdem wir alles zusammengefügt und die Getter und die Hauptmethode wie zuvor besprochen haben, haben wir:

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
    }
}

Ausgabe:

Aurieel
light
10
1

Laufen Sie auf Ideone

Wieder einmal das main in der Test - ist - Klasse der Einstiegspunkt zu unserem Programm. Ohne die main Methode können wir sagen , der Java Virtual Machine nicht (JVM) , von wo aus der Ausführung des Programms zu beginnen.


1 - Da die HelloWorld Klasse wenig mit der System Klasse zusammenhängt, kann sie nur auf public Daten zugreifen.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow