Erste Schritte mit Java Basics

Einführung

In den letzten Jahren gab es viele Schulen für Werbeprogrammierung wie "Werden Sie Ingenieur, auch wenn Sie unerfahren sind" oder "Werden Sie Ingenieur, auch wenn Sie einen Hintergrund im Bereich der freien Künste haben", und ich wurde von einer von ihnen während der Ausbildung des Unternehmens betreut. Ich hatte jedoch das Gefühl, dass der Fokus nicht so sehr auf den "Grundlagen" lag, wahrscheinlich weil der Zweck darin bestand, eine Anwendung in kurzer Zeit zu erstellen, und so wurde ich ein ** Neuling, der von nun an das Programmieren lernen wird **. Ich wollte etwas schreiben, das als Zugang zu den "Grundlagen" von Java dient, und für ** neue Ingenieure wie mich, die der Meinung sind, dass die "Grundlagen" nicht ausreichen.

Was ist "grundlegend"?

Bisher wurde das Wort "grundlegend" alle eingegeben.

Bedeutung von Ki-so [Basic] Der grundlegende Teil, der etwas bewirkt. Ursprünglich. "Da das Fundament solide ist, können Sie sich schnell verbessern." "Das Fundament konsolidieren." "Grundkenntnisse."

In diesem Eintrag als erster Schritt zum Erlernen der "Grundlagen" von Java

  1. Java und JVM
  2. Bis Hello World! Angezeigt wird

Ich möchte mich auf diese beiden konzentrieren.

Java und JVM

Schauen wir uns zunächst die Java-Sprache an.

Java Lassen Sie uns vorher kurz die Programmiersprache selbst überprüfen.

Der Programmierer verwendet die Programmiersprache, um Anweisungen an den Computer zu senden. Computer sind jedoch nichts anderes als elektrisch betriebene Computer.

(Nebenbei bemerkt, der Computer heißt auf Deutsch Rechner, aber er kommt vom Verb "berechnen", was gehört. Es ist wirklich eine Seite.)

Es scheint, dass alte Programmierer die Binärzahlen 0 und 1 zum Schreiben von Programmen verwendeten, da Computer nur zwei elektrische Signale empfangen können, ein oder aus. Die aus 0 und 1 zusammengesetzte heißt übrigens ** Maschinensprache **.

Es scheint, dass Binärzahlen oft in Hexadezimalzahlen geschrieben werden, weil sie viele Ziffern haben, aber immer noch nicht menschenfreundlich sind. Daher wurde den Anweisungen, die durch die Maschinensprache dargestellt werden, ein Spitzname ("Mnemonik" genannt) hinzugefügt und eine "Assemblersprache **" erstellt.

Programme sind für den Menschen jedoch immer noch nicht leicht zu verstehen, und im Laufe der Zeit nahmen Anzahl und Komplexität der erforderlichen Programme zu. Daher wurde eine Methode zum Schreiben von Programmen entwickelt, die für den Menschen leichter zu verstehen ist. (Übrigens wird eine Programmiersprache, die für Menschen leicht zu verstehen ist, als "Hochsprache" bezeichnet, während eine Sprache, die für einen Computer leicht zu verstehen ist, als "Niedrigsprache" bezeichnet wird.)

Was für Menschen leicht zu verstehen ist, bedeutet auch, dass es für Computer schwer zu verstehen ist. Wir müssen also den vom Programmierer geschriebenen Code in die Maschinensprache "konvertieren", damit der Computer ihn verstehen kann. Das ist die Arbeit namens "** compilation ", und die, die sie kompiliert, heißt " compiler **". Der Compiler übersetzt in Hochsprachen geschriebene Programme in etwas, das ein Computer verstehen kann, aber er kompiliert für diesen Computer. Das heißt, der Computer in einer anderen Umgebung kann die konvertierte Maschinensprache nicht verstehen. Sie benötigen also wieder einen anderen Compiler.

Hier kommt Java endlich an.

Java wurde 1995 von Sun Microsystems angekündigt. Java, eine Hochsprache, muss wie zuvor geschrieben in eine Maschinensprache kompiliert werden. Der Unterschied zu anderen Sprachen besteht jedoch darin, dass eine virtuelle Maschine namens ** JVM ** (Java Virtual Maschine) verwendet wird. Es gibt.

Die JVM reserviert Speicher auf Ihrem Computer und startet. Und da Sie das Programm auf dieser JVM ausführen können, müssen Sie sich keine Gedanken über die Unterschiede zwischen Computern machen.

Um genauer zu sein, Java ist menschenfreundlich geschrieben (Dateiname ist hoge.java) und wird durch Kompilierung in eine sogenannte Zwischensprache konvertiert (Dateiname ist hoge.class. Der Name Zwischensprache ist offiziell. Es scheint, dass es der Einfachheit halber so genannt wird, und es wird korrekt ** Java-Bytecode ) genannt. Anschließend lädt die JVM die Zwischensprache, konvertiert sie zeilenweise in die Maschinensprache und führt sie aus. Ein Programm, das auf diese Weise Zeile für Zeile konvertiert und ausführt, heißt " Interpreter **" [^ 1].

[^ 1]: Während Compile und Compiler gemäß der englischen Grammatik getrennt sind, sollte der Interpreter gemäß der englischen Grammatik in Interpret und Interpreter unterteilt werden, aber ich frage mich, ob die Notation nicht geteilt ist. ??

Mit anderen Worten, bevor Java ausgeführt wird, gibt es zwei Konvertierungsschritte. (Konvertierung durch Compiler und Interpreter)

JVM Beim Erstellen der Java-Umgebung gab es JDKs und JREs. JDK ist ein Java Development Kit, ein Software Development Kit, das für die Entwicklung mit Java erforderlich ist. In diesem JDK ist die JRE (Java Runtime Environment) enthalten, die als Java-Ausführungsumgebung bezeichnet wird. Dies ist eine Reihe von Software, mit der Sie Java-Anwendungen auf Ihrem Computer ausführen können, einschließlich JVMs.

Die JVM besteht aus Threads und Speicher. スクリーンショット 2019-04-07 16.45.37.png Ein Prozess wird im Thread definiert und führt diesen Prozess aus. Der Speicher ist in Heap und Native unterteilt. Der Heap-Bereich speichert Anwendungsobjekte, und Garbage Collections (GCs) organisieren regelmäßig Objekte, die nicht mehr benötigt werden. Der native Bereich ist der Bereich, der von der JVM selbst verwendet wird, und speichert die Informationen, die vom Thread (Thread-Stapel) verarbeitet werden. Ich würde es gerne etwas genauer erklären, aber ich werde davonlaufen, also werde ich weitermachen.

Bis Hello World! Angezeigt wird

Werfen wir einen kurzen Blick auf den Prozess, der zur endgültigen Anzeige von Hello World! Führt.

HelloWorld.java


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

Lassen Sie uns zuerst kompilieren. Der Befehl ** javac ** kompiliert eine Java-Datei und erstellt eine Klassendatei.

javac HelloWorld.java

Dadurch wird eine Datei mit dem Namen HelloWorld.class erstellt. Lassen Sie uns zuerst Hello World! Starten Sie die JVM mit dem Befehl ** java **, analysieren Sie die in Java-Bytecode geschriebene Datei HelloWorld.class und lassen Sie sie ausführen.

$ java HelloWorld
Hello World!

Es ist fertig. Überprüfen wir nun den Java-Bytecode. Mit dem Befehl ** javap ** können Sie eine Klassendatei in ein für Menschen lesbares Format konvertieren.

$ javap -c HelloWorld
Compiled from "HelloWorld.java"
public class HelloWorld {
  public HelloWorld();
    Code:
       0: aload_0
       1: invokespecial #1                  // Method java/lang/Object."<init>":()V
       4: return

  public static void main(java.lang.String[]);
    Code:
       0: getstatic     #2                  // Field java/lang/System.out:Ljava/io/PrintStream;
       3: ldc           #3                  // String Hello World!
       5: invokevirtual #4                  // Method java/io/PrintStream.println:(Ljava/lang/String;)V
       8: return
}

public class Ab HelloWorld hat diese Klasse zwei Funktionen, die erste ist der Konstruktor und die zweite ist der Bytecode der Hauptfunktion. Der ursprüngliche Code hatte keinen Konstruktor, scheint aber automatisch generiert zu werden. Schauen wir uns die Funktion an. Der Code besteht aus drei Teilen: "index: Anweisung # Konstante Poolnummer". Der Konstantenpool ist der Bereich, in dem Konstanten und Symbole in virtuellen Java-Maschinen gespeichert sind. Schauen wir uns das an. Sie können dies überprüfen, indem Sie die Option -v im Befehl javap angeben.

Constant pool:
   #1 = Methodref          #6.#15         // java/lang/Object."<init>":()V
   #2 = Fieldref           #16.#17        // java/lang/System.out:Ljava/io/PrintStream;
   #3 = String             #18            // Hello World!
   #4 = Methodref          #19.#20        // java/io/PrintStream.println:(Ljava/lang/String;)V
   #5 = Class              #21            // HelloWorld
   #6 = Class              #22            // java/lang/Object
   #7 = Utf8               <init>
   #8 = Utf8               ()V
   #9 = Utf8               Code
  #10 = Utf8               LineNumberTable
  #11 = Utf8               main
  #12 = Utf8               ([Ljava/lang/String;)V
  #13 = Utf8               SourceFile
  #14 = Utf8               HelloWorld.java
  #15 = NameAndType        #7:#8          // "<init>":()V
  #16 = Class              #23            // java/lang/System
  #17 = NameAndType        #24:#25        // out:Ljava/io/PrintStream;
  #18 = Utf8               Hello World!
  #19 = Class              #26            // java/io/PrintStream
  #20 = NameAndType        #27:#28        // println:(Ljava/lang/String;)V
  #21 = Utf8               HelloWorld
  #22 = Utf8               java/lang/Object
  #23 = Utf8               java/lang/System
  #24 = Utf8               out
  #25 = Utf8               Ljava/io/PrintStream;
  #26 = Utf8               java/io/PrintStream
  #27 = Utf8               println
  #28 = Utf8               (Ljava/lang/String;)V

Lassen Sie uns die Hauptfunktion überprüfen und den Ablauf von Hello World! Display sehen.

public static void main(java.lang.String[]);
    Code:
       0: getstatic     #2                  // Field java/lang/System.out:Ljava/io/PrintStream;
       3: ldc           #3                  // String Hello World!
       5: invokevirtual #4                  // Method java/io/PrintStream.println:(Ljava/lang/String;)V
       8: return

Erstens bezieht sich die getstatische Anweisung auf # 2. das ist #2 = Fieldref #16.#17 // java/lang/System.out:Ljava/io/PrintStream; Sie können sehen, dass wir das Feld java / lang / System.out verwenden.

Der nächste ldc-Befehl, der zur Laufzeit konstante Werte aus dem konstanten Pool lädt. #3 = String #18 // Hello World! #18 = Utf8 Hello World! Die Zeichenfolge Hello World! Wurde hier geladen.

Und die aufgerufene virtuelle Anweisung, #4 = Methodref #19.#20 // java/io/PrintStream.println:(Ljava/lang/String;)V Führen Sie die Funktion println mit der vorherigen Zeichenfolge als Argument aus.

Zum Schluss kehren Sie leer zurück, um fertig zu werden. Vielen Dank für Ihre harte Arbeit, Hello World! Wird angezeigt.

abschließend

Ich habe versucht, es zu etwas zu machen, das ich wissen wollte, als ich zum ersten Mal Java studierte, aber es ist schwierig, es präzise und unter Berücksichtigung der wichtigsten Punkte zu schreiben. Möchte ich diesen Inhalt wirklich vor etwas weniger als einem Jahr lesen? Ich hoffe jedoch, dass dieser Artikel jemandem geholfen hat. Wenn Sie die Grundlagen von Java mit dieser Gelegenheit erlernen möchten, ist es das Beste und Höchste. Und ich habe mich entschlossen, die Grundlagen von Java zu studieren, damit ich es auf diese Weise versenden kann.

Wenn Sie einen Fehler machen, weisen Sie bitte darauf hin.

Recommended Posts

Erste Schritte mit Java Basics
Erste Schritte mit Java Collection
Erste Schritte mit Ruby für Java-Ingenieure
Erste Schritte mit DBUnit
Erste Schritte mit Ruby
Einführung in Java ab 0 Teil 1
Erste Schritte mit Swift
Erste Schritte mit Doma-Transaktionen
Links & Memos für den Einstieg in Java (für mich)
Erste Schritte mit Java 1 Ähnliche Dinge zusammenstellen
Erste Schritte mit Kotlin zum Senden an Java-Entwickler
Erste Schritte mit JSP & Servlet
Erste Schritte mit Spring Boot
Erste Schritte mit Ruby-Modulen
Java-Grundlagen
Java-Grundlagen
Erste Schritte mit älteren Java-Ingenieuren (Stream + Lambda)
Java-Grundlagen
Erste Schritte mit Java_Kapitel 5_Praktische Übungen 5_4
[Google Cloud] Erste Schritte mit Docker
Erste Schritte mit Docker mit VS-Code
Erste Schritte mit Java und Erstellen eines Ascii Doc-Editors mit JavaFX
Erste Schritte mit dem Doma-Criteria API Cheet Sheet
Zurück zum Anfang, Erste Schritte mit Java ② Steueranweisungen, Schleifenanweisungen
Grundlagen der Java-Programmierung
Erste Schritte mit Docker für Mac (Installation)
Einführung in den Parametrisierungstest in JUnit
Erste Schritte mit Ratpack (4) -Routing & Static Content
Objektorientierte (Java) Grundlagen
Beginnen Sie mit der Funktionsweise von JVM GC
Grundlagen der Java-Parallelverarbeitung
Erste Schritte mit dem Language Server Protocol mit LSP4J
Erste Schritte mit dem Erstellen von Ressourcenpaketen mit ListResoueceBundle
Erste Schritte mit maschinellem Lernen mit Spark "Preisschätzung" # 1 Laden von Datensätzen mit Apache Spark (Java)
Erste Schritte mit Java_Kapitel 8_Über "Instanzen" und "Klassen"
Erste Schritte mit der Doma-Projektion mit der Criteira-API
Erste Schritte mit Doma-Using Joins mit der Criteira-API
Erste Schritte mit Doma-Einführung in die Kriterien-API
Ich habe versucht, mit Gradle auf Heroku zu beginnen
Installieren Sie Java mit Homebrew
Wechseln Sie die Plätze mit Java
Bequemer Download mit JAVA
Java-Programmiergrundlagen Übungsarray
Schalten Sie Java mit direnv
Java-Download mit Ansible
Lass uns mit Java kratzen! !!
Erstellen Sie Java mit Wercker
Beginnen Sie mit Gradle
Muscle Java Basics Tag 1
Endian-Konvertierung mit JAVA
Erfahrene Java-Benutzer beginnen mit der Entwicklung von Android-Apps
[Java-Grundlagen] Lassen Sie uns ein Dreieck mit einer for-Anweisung erstellen
Beginnen Sie mit serverlosem Java mit dem leichtgewichtigen Framework Micronaut!
Zurück zum Anfang und erste Schritte mit Java ① Datentypen und Zugriffsmodifikatoren
(Java) Einfache BDD mit Spektrum?
Verwenden Sie Lambda-Ebenen mit Java
Erstellen Sie mit Gradle ein Java-Multiprojekt