Eine Einführung in Java, die Menschen erzählt, die schon lange C-Sprache sprechen

Bei der Arbeit hatte ich die Gelegenheit, denjenigen, die lange Zeit in C-Sprache gearbeitet haben, Java (Servlet) beizubringen, und ich musste über die Funktionen von Java und die schwer verständlichen Teile nachdenken. Hier ist ein einführender Artikel über Java. Ich werde es zusammenfassen.

Dieser Artikel richtet sich nicht an "Programmieranfänger", sondern an "Personen, die normalerweise in C-Sprache arbeiten". Daher werden wir nicht über allgemeine Programmierung sprechen (wie "Was ist eine Variable?"). Lassen Sie auch Inhalte wie die Java-Grammatik weg, die sofort bei Google angezeigt werden. Nur wenn Sie eine gute Referenzseite haben, setzen Sie einfach einen Link.

Ich hoffe, dieser Artikel hilft Ihnen, die Eigenschaften und verwirrenden Teile der Java-Sprache zu verstehen.

Vor dem Schreiben des Quellcodes

Lassen Sie uns zunächst die Umgebung erstellen. Es ist nicht ungewöhnlich, dass ein sauberer Computer nicht einmal Java kompilieren oder ausführen kann. Zunächst werde ich die Elemente erläutern, die zum Schreiben und Ausführen von Java erforderlich sind.

JDK und JRE

Beim "Herunterladen und Installieren von Java" sind JDK und JRE die ersten Verwirrungsquellen. Sie können nur die JRE separat herunterladen. Wenn Sie das JDK herunterladen, befindet sich ein JRE-Verzeichnis darin, was ebenfalls zu Verständnisschwierigkeiten führt.

Lassen Sie uns hier einen kurzen Blick darauf werfen.

JDK (Java Development Kit) Wie der Name schon sagt, handelt es sich um ein Java-Entwicklungskit. Wird beim Codieren verwendet. Enthält Compiler, Debugger, Tools zur Leistungsanalyse und mehr. Es ist eine gute Idee, sich daran zu erinnern, dass Sie es benötigen, bevor der Quellcode kompiliert wird. (Streng genommen bezieht sich JDK auf die später beschriebene einschließlich JRE, aber im Sinne der Einprägsamkeit ist es "bis der Quellcode kompiliert ist")

JRE (Java Runtime Environment) Wie der Name schon sagt, handelt es sich um eine Java-Ausführungsumgebung. Java absorbiert Umgebungsunterschiede wie das Betriebssystem der Maschine, die von der später beschriebenen JVM ausgeführt werden soll. Die JRE enthält beispielsweise Dateien zum Ausführen dieser JVM. Beachten Sie, dass Sie eine JRE benötigen, um das kompilierte Java auszuführen.

Es ist also nichts zu wissen, wofür JDK und JRE stehen. Wenn Sie dies berücksichtigen, sollte die Umgebungskonstruktion reibungslos verlaufen.

Java SE, Java EE und Java FX

Wenn ich die Oracle Java-Seite öffne, um das JDK herunterzuladen, werden Elemente wie Java SE, Java EE und Java FX in einer Reihe angezeigt. Ich frage mich, welche ich wählen soll.

Ich würde gerne sagen "Java ist Java!", Aber selbst wenn Sie Java in einem Wort sagen, hängt der Typ, den Sie benötigen, vom Zweck ab. Dieser Abschnitt beschreibt diese Unterschiede.

Java SE (Java Standard Edition) Ein JDK, das die grundlegendsten Java-APIs enthält. Verwenden Sie diese Option, wenn Sie Anwendungen entwickeln, die auf der Konsole ausgeführt werden, Windows-Anwendungen usw.

Java EE (Java Enterprise Edition) EE ist SE mit APIs zur Entwicklung von Servlet-Programmen. Wählen Sie diese Option, wenn Sie eine Serveranwendung mit Servlet oder JSP entwickeln möchten.

Java FX Eigentlich habe ich JavaFX überhaupt nicht berührt, daher kann ich die Details nicht erklären, aber die [JavaFX-Übersicht] von Oracle (http://docs.oracle.com/javase/8/javafx/get-started-tutorial/). Laut jfx-summary.htm # JFXST7840) handelt es sich um eine Gruppe von Paketen zur Entwicklung umfangreicher GUI-Anwendungen unter Verwendung von Grafik- und Audiomedien.

Es scheint dies zu verwenden, wenn Sie eine GUI-Anwendung entwickeln möchten, die sich hauptsächlich auf Bilder, Animationen und Töne konzentriert.

Wenn Sie also wissen, dass "EE, wenn Sie Servlet machen, SE, wenn Sie es nicht tun", scheint es gut zu sein.

Bisher sind die folgenden Artikel über die Unterschiede pro JDK / JRE, SE / EE / FX leicht zu verstehen.

Unterschiede zur Bedeutung von Javas JDK, JRE, SE, EE usw.

Java-Version

~~ Aus irgendeinem Grund heißt Java, beispielsweise Version 1.8, "Java 8". Es ist leicht zu missverstehen, dass die Hauptversion von Java zunächst "8" ist, aber in Wirklichkeit ist die Hauptversion von Java "1" und die Nebenversion "8". ~~

(Korrigiert am 12.08.2016) Java hat "Versionsnummer" und "Versionszeichenfolge" als Wörter, um die Version anzugeben. Im Fall von Java SE Version 8 lautet die Versionsnummer beispielsweise "Java SE 8" und die entsprechende Versionszeichenfolge "1.8". Ich bin. Anfangs ist es leicht, durch die richtige Verwendung dieser Notation verwirrt zu werden, aber es ist gut daran zu denken, dass es zwei Notationen für dieselbe Version gibt.

Weitere Informationen finden Sie unter den folgenden Links. Java Platform, Standard Edition 8 Name und Version Oracle

(Bisher korrigiert. Vielen Dank für den Hinweis auf @ budougumi0617!)

Das heißt, "Java 1.8" und "Java 8" beziehen sich auf dasselbe. Insbesondere in IDE ist diese Notation gemischt und verwirrend. Seien Sie also vorsichtig.

Quellcode und ausführbare Datei

Im Gegensatz zur C-Sprache wird Java nicht zu einer ausführbaren Datei, selbst wenn der Quellcode kompiliert wird. Unabhängig davon, ob es sich um ein Konsolenprogramm, ein Servlet oder ein Android-Gerät handelt, benötigen Sie eine VM (virtuelle Maschine) namens JVM, um Java auszuführen. Sie müssen nicht zu viel über eine virtuelle Maschine nachdenken. Die Ausführung selbst führt einfach den Java-Befehl mit der kompilierten Klasse als Argument aus.

Der Ablauf beim Kompilieren und Ausführen einer Quelldatei mit dem Namen HelloWorld.java ist beispielsweise wie folgt.

#Quelldateien kompilieren
$ javac HelloWorld.java

#Dateien im Verzeichnis anzeigen (.Klassendatei wurde generiert)
$ ls
HelloWorld.java HelloWorld.class

#Lauf (.Klasse ist nicht beigefügt)
$ java HelloWorld
Hello World!

Die C-Sprache ist beim Kompilieren Maschinensprache, aber Java gibt nur eine Datei im Klassenformat aus, die von der JVM gelesen werden kann. Sie können sich eine .class-Datei als einfache Konvertierung einer .java-Datei, bei der es sich um eine Textdatei handelt, in eine Binärdatei vorstellen.

Der Grund für ein solches Verfahren besteht darin, dass die JVM die Unterschiede in der Ausführungsumgebung wie dem Betriebssystem ausfüllt, wie weiter oben im Abschnitt JRE erläutert. Die C-Sprache muss für die Umgebung kompiliert werden, in der die Person, die den Quellcode geschrieben hat, ihn ausführen möchte, Java jedoch nicht. Kompilieren Sie den Quellcode, ohne sich um die Ausführungsumgebung kümmern zu müssen, und führen Sie ihn je nach Situation auf der auf jedem Computer installierten JVM aus. Programmierer müssen sich keine Gedanken darüber machen, auf welchem Computer ihr Programm ausgeführt wird. Aus diesem Grund soll Java eine plattformunabhängige Sprache sein.

Übrigens haben alle als "JVM-Sprachen" bezeichneten Sprachen wie Scala und Kotlin die Eigenschaft, dass sie beim Kompilieren zu .class-Dateien werden und von dieser JVM ausgeführt werden. Da die endgültige Ausführungsumgebung JVM ist, besteht der Vorteil, dass es einfach mit Java zu mischen ist (es ist einfach, den in Java geschriebenen Quellcode wiederzuverwenden).

Über IDE

Die am häufigsten verwendete Java-Entwicklung ist Eclipse. Es gibt andere Optionen wie IntelliJ und NetBeans, aber IntelliJ wird bezahlt, NetBeans ist etwas kleiner als Eclipse und die Anzahl der Plugins und Informationen ist gering. Daher ist es vorerst besser, mit Eclipse zu beginnen.

Da Eclipse Open Source ist, kann jeder es kostenlos von der offiziellen Website herunterladen. Wenn Sie Windows verwenden, sind Pleiades japanische Lokalisierung und verschiedene praktische Plug-Ins & JDK6,7,8 & Tomcat6,7,8 enthalten. " All-in-One-Paket ist verfügbar. Das Herunterladen wird einige Zeit dauern, aber wenn Sie dies vorerst löschen, haben Sie alles, was Sie für die Java- und Servlet-Entwicklung benötigen. Daher ist die Verwendung von All in One auch eine gute Option. Bitte verwenden Sie es entsprechend den Umständen des Entwicklungs-PCs.

Übrigens, wenn Sie Zeit zum Lernen haben, empfehlen wir Ihnen, ein einfaches Programm nur mit einem Texteditor ohne Verwendung einer IDE zu schreiben und es in der Befehlszeile auszuführen. Sie können die Java-Syntax, den Kompilierungs-> Ausführungsfluss und den Mechanismus gut verstehen.

Nun Codierung

Schreiben wir den Code, sobald die Umgebung bereit ist. Die grundlegende Grammatik und Schreibmethode bleibt Java Tutorials usw. überlassen, und hier werden hauptsächlich die Unterschiede zu den Bräuchen und Ideen der C-Sprache erläutert. ..

Ich werde es vorerst schreiben

In Java müssen Sie immer eine Klasse erstellen.

Auch wenn nur "Hallo Welt!" Angezeigt wird, im Gegensatz zur C-Sprache, in der Sie nur die Funktion int main () schreiben müssen,

Erstellen Sie eine HelloWorld.java-Datei, definieren Sie die Klasse mit der Klasse HelloWorld (stellen Sie sicher, dass der Klassenname mit dem .java-Dateinamen übereinstimmt), definieren Sie die Hauptmethode mit public static void main (String args []) und schließlich Schreiben Sie System.out.println ("Hello World!"); In und führen Sie es aus, und schließlich ist Hello World abgeschlossen.

Java ist eine Sprache, die auf Objektorientierung spezialisiert ist

Wie oft gesagt, ist Java eine objektorientierte Sprache. Mit Ausnahme primitiver Typen wie int und char wird alles als Klasse mit unterschiedlichen Rollen und Verhaltensweisen definiert.

Infolgedessen wird die Wiederverwendbarkeit des einmal geschriebenen Quellcodes verbessert, die Entwicklungseffizienz wird von mehreren Personen verbessert und es ist einfach, eine Open-Source-Bibliothek zu erstellen und zu integrieren.

Daher ist meines Wissens die für HelloWorld erforderliche Beschreibungsmenge im Vergleich zu anderen Sprachen überwältigend groß. Je größer das System, desto besser ist die Klassifizierung. Mehr zur Klasse später.

Klassen und Instanzen (und Objekte)

Bei der Betrachtung von Java können die Wörter "Klasse", "Instanz" und "Objekt" häufig vorkommen und verwirrend sein. Dies ist ein sehr wichtiger Faktor für das Verständnis von Java, daher werde ich es hier kurz zusammenfassen.

Klasse

Eine Klasse ist nur eine programmatische Definition. Deklarieren Sie es als Klasse Food {} und definieren Sie darin Mitgliedsvariablen und -methoden. Wenn Sie es wagen, es mit der Grammatik der C-Sprache zu vergleichen, ist es ein Bild, dass die Struktur eine Funktion hat?

Bei der Objektorientierung ist es wünschenswert, dass eine Klasse eine Sache ist, die der Mensch erkennen kann. Lebensmittelklasse, FoodListView-Klasse, CsvFileAccessor-Klasse usw., ein Objekt in der Realität, ein Bildschirm bei Anwendung, programmatisch Sammeln Sie eine der Rollen als eine Klasse.

Achten Sie darauf, die beiden Rollen nicht zu einer zu kombinieren, z. B. FoodAndListView (eine Klasse, die Werte für Lebensmittel definiert und diese Liste enthält und anzeigt). Wenn Sie sie zusammenfügen, handelt es sich um eine Klasse, die nicht wiederverwendet werden kann, wenn eine Anforderung ausgegeben wird, für die nur eines der Konzepte erforderlich ist, z. B. "Ich möchte Daten der Lebensmittelklasse an den Server senden".

In Java hat die gemeinsame Nutzung / Wiederverwendbarkeit von Rollen häufig Vorrang vor der Effizienz der Programmausführung.

Beispiel

Instanzen werden erstellt (Speicherplatz ist reserviert), wenn während der Programmausführung eine neue Klasse erstellt wird.

Für die in der Klasse definierten Elementvariablen wird jeder Instanz ein separater Speicherbereich zugewiesen. Beispiel: "Erstellen Sie zwei Instanzen, indem Sie die Food-Klasse zweimal neu erstellen, und setzen Sie die Namensvariable einer Instanz auf" Ramen ". Sie können Instanzen mit unterschiedlichen Werten erstellen, indem Sie die Food-Klasse als Vorlage verwenden, z. B. "set" und "set" Curry "in der Namensvariablen der anderen Instanz".

Objekt

Seien Sie vorsichtig, wenn Sie das Wort "Objekt" verwenden. Weil das Wort "Objekt" in Java Talk "Instanz", "Klasse" oder ein Objekt in einem vagen, objektorientierten Sinne bedeutet. In einigen Fällen ist die Absicht nicht eindeutig.

Wenn Sie über das Java-Programm selbst sprechen, gibt es kein Problem, wenn Sie den Unterschied zwischen "Klasse" und "Instanz" verstehen. Ich denke, es ist eine gute Idee, sich zuerst an diese beiden zu erinnern. (Auch in diesem Artikel ist mir bewusst, dass ich das Wort "Objekt" nicht anders als den Begriff "objektorientiert" verwende.)

Dinge, die beim Codieren zu beachten sind

Wie bisher erläutert, hat Java andere Eigenschaften und Ideen als die C-Sprache. Mit anderen Worten, die Dinge, die priorisiert werden, wenn die Kompromisse bei der Codierung berücksichtigt werden, wie Lesbarkeit, Ausführungseffizienz und Erweiterbarkeit, unterscheiden sich auch von der C-Sprache.

Hier sind einige Dinge zu beachten, wenn Sie Java codieren.

Darüber hinaus enthält der Artikel Informationen zu den Vorsichtsmaßnahmen beim Codieren von Java. Bitte lesen Sie es zusammen. (Ich habe diesen Artikel teilweise mit Bezug auf diesen Artikel geschrieben)

Methodendesign

In der Sprache C wird es meiner Meinung nach häufig verwendet, um das vom Zeiger in der Funktion empfangene Argument zu bearbeiten und den Ausführungsergebniscode der Funktion als Rückgabewert zurückzugeben. (Elemente "Ausgabeparameter" und "Rückgabeverarbeitungsstatus" im obigen Artikel)

Es ist jedoch besser, eine solche Methode nicht in Java zu erstellen. Dies liegt daran, dass der Aufrufer der Methode verstehen muss, wie die als Argument übergebene Instanz in der Methode geändert wird und ob etwas geändert wird oder nicht, indem er sich die Implementierung der Methode ansieht.

Methoden, die die als Argument empfangene Instanz direkt ändern, werden nicht nur auf Java beschränkt, sondern auch als "destruktive" Methoden bezeichnet und vermieden. Beachten Sie grundsätzlich, dass die als Argument empfangene Instanz nicht geändert wird und das Ergebnis immer als Rückgabewert der Methode zurückgegeben wird.

Definieren Sie Variablen kurz vor der Verwendung

In C mussten Variablen am Anfang einer Funktion definiert werden. Java hat jedoch keine derartigen Einschränkungen. Es ist vielmehr wünschenswert, es so zu definieren, dass unmittelbar vor der Verwendung nur im minimal erforderlichen Umfang auf es verwiesen werden kann. Wenn der Umfang begrenzt ist, müssen spätere Leser des Quellcodes nur den minimal erforderlichen Bereich betrachten, um herauszufinden, wie die Variable verwendet wird, um die Belastung zu minimieren.

(Nachtrag vom 12.08.2016) Genau genommen war es die 1989 formulierte ANSI-C-Spezifikation, dass die Variablendeklaration zu Beginn des Blocks abgegeben werden musste, und es scheint, dass es in C99, das 1999 formuliert wurde, keine solche Einschränkung gibt. Infolgedessen scheint es, dass "Variablen kurz vor der Verwendung deklarieren", wie in diesem Artikel als Java-Funktion beschrieben, auch in der Sprache C berücksichtigt wird. Vielen Dank an @SaitoAtsushi für den Hinweis! (Ergänzung bisher)

Beachten Sie die Namenskonventionen

Java hat klare Namenskonventionen wie Methodennamen und Variablennamen.

Das Verhalten des Programms ändert sich nicht, da es gegen die Namenskonvention verstößt. Java-Entwickler lesen den Quellcode jedoch unter der Annahme, dass das Programm gemäß dieser Namenskonvention geschrieben wurde.

Wenn die Beschreibung "Lebensmittel" im Quellcode erscheint, wird sie immer als Klassenname beurteilt, und wenn es sich um "Lebensmittel" handelt, wird sie als Variablenname beurteilt. Wenn Sie es entgegengesetzt schreiben, wird dies andere Entwickler daran hindern, den Quellcode zu verstehen, und infolgedessen kann es zu Fehlern kommen. Achten Sie daher immer auf die Codierung.

Zeiger

Die Leute sagen oft: "Java ist einfach, weil es keine Zeiger hat", aber ich denke, es ist halb richtig und halb gelogen.

Natürlich gibt es keinen Zeiger als Grammatik, so dass Sie den Zeiger nicht direkt manipulieren können. Wenn Sie jedoch eine Instanz erstellen und in einer Variablen speichern, gibt die Variable einen Zeiger auf die Instanz an, nicht auf die Instanz selbst. Wenn Sie sie als Methodenargument übergeben, verwenden Sie den Zeiger in der Sprache C als Argument. Es ist fast das gleiche wie vorbei.

Wenn Sie beispielsweise codieren, ohne dies zu verstehen, übergeben Sie eine Instanz wie im folgenden Beispiel an eine Methode. Wenn diese Instanz in der Methode bearbeitet wird, wird die Instanz geändert, die die Methode aufgerufen hat. Sie werden das Verhalten nicht verstehen können.

Main.java


public static void main(String args[]) {
    Food ramen = new Food("ramen"); // "ramen"Erstellen Sie eine Food-Instanz mit dem Namen
    FoodPrinter.printDecoratedName(ramen); //Ich möchte den Namen schön ausgeben
    System.out.println(ramen.getName()); // "ramen"nicht"***** ramen *****"Wird ausgegeben
}

FoodPrinter.java


/**
 *Eine Methode, die den Namen des erhaltenen Lebensmittels als Argument mit einer kleinen Dekoration ausgibt
 */
public static void printDecoratedName(Food food) {
    food.setName("***** " + food.getName() + " *****"); //Dekoration
    System.out.println(food.getName()); // -> ***** ramen *****
}

Wenn Sie das Konzept der Zeiger verstehen, ist dies eine Selbstverständlichkeit, da Sie nur eine Referenz wie diese übergeben. Wenn Sie jedoch Java schreiben, ohne die Zeiger zu verstehen, ist dies einer der Fehler, die Sie häufig machen. ..

Da es sich um Java handelt, müssen Sie nicht über Zeiger nachdenken. Da es sich jedoch um Java handelt, sollten Sie wissen, wo sich die Variablen im Speicher befinden, mit denen Sie sich befassen (welche Variablen mit dem Speicher identisch sind, auf den sie zeigen). Ich denke das ist wichtig.

Einmal zusammengefasst

Es gibt noch einige Teile, die ich noch nicht geschrieben habe, aber wenn ich einen schreibe, wird er darin enden und der Artikel wird nicht enden, also werde ich hier aufhören.

Ich selbst lerne immer noch Java und habe in der Unternehmensschulung etwa drei Monate lang etwas über die Sprache C gelernt. Daher besteht die Möglichkeit, dass der Inhalt falsch oder verwirrend ist. Wenn Sie solche Punkte haben, teilen Sie uns dies bitte in den Kommentaren mit. Ich möchte es zu einem Referenzartikel für diejenigen machen, die Java von nun an starten, einschließlich der Diskussion im Kommentarbereich.

Ich würde mich auch freuen, wenn Sie unklare Punkte kommentieren könnten. Ich möchte nach Bedarf einen weiteren Artikel schreiben oder diesen Artikel ergänzen.

Recommended Posts

Eine Einführung in Java, die Menschen erzählt, die schon lange C-Sprache sprechen
Einführung in Java zum ersten Mal # 2
Mit der Software, die ich schon lange mache ...
Mechanismus zum Konvertieren in eine Sprache, die der Browser erkennen kann
Zum ersten Mal Java lernen [Einführung]
Erste Schritte mit Groovy für problematische Java-Ingenieure
Einführung in Java für Anfänger Grundkenntnisse der Java-Sprache ①
Erstellen Sie eine Android-App für diejenigen, die keine Musik über ihre Lautsprecher abspielen möchten
Für Personen, die ein Dokument im Firestore gelöscht haben, aber die Untersammlung nicht verschwindet
Ein Memorandum, um den juckenden Ort für Java Gold zu erreichen
Maßnahmen zum langen Laden von Bildern (Rails)
[Java] So suchen Sie mit der Methode includes nach Werten in einem Array (oder einer Liste)
Wie gehe ich mit dem Typ um, den ich 2 Jahre lang über das Schreiben eines Java-Programms nachgedacht habe?