Eine Welt, in der Sie ein Produkt veröffentlichen können, ohne den Befehl javac zu kennen

Auslösen

――Es war mein zweites Jahr als neuer Absolvent und als Systemingenieur, aber dieses Mal wird das Java EE-Webanwendungssystem, an dem ich beteiligt war, für die kommerzielle Nutzung freigegeben.

――Wenn das System freigegeben wird, gibt es Gespräche wie "Heaps alter Bereich ist ~" und "Metaspace-Nutzung ist ~" in Leistungstests. Also wollte ich noch einmal bestätigen, wie Java funktioniert. Und wurde vorgestellt, als ich an JJUG CCC 2018 Spring [Java 100 Knock] teilnahm (https: //www.slideshare). Ich habe mich für net / JSUX Design / java100 entschieden.

Über Java 100 klopfen

――Dies ist eine Sammlung von Java-Problemen, die von Just System erstellt wurden. Es richtet sich an Anfänger bis Fortgeschrittene und soll mit dem Ziel erstellt worden sein, mehr Code zu erstellen, der in einer Betriebsumgebung stabil funktioniert und eine hervorragende Wartbarkeit und Erweiterbarkeit aufweist. ――Ich wollte diese Grundlagen wiederholt festlegen, um meine Anwendungsfähigkeiten zu verbessern, also habe ich versucht, die erste zu lösen ... aber mir wurde klar, dass ich Java überhaupt nicht besser verstand als erwartet. Es ist weg. Unten ist ein Memo, als ich das erste gelöst habe.

1

--Test wird durch Shell-Skript implementiert ... -Verstehen Sie, indem Sie auf [diese Site] verweisen (https://shellscript.sunone.me/tutorial.html)

--Kompilieren ... Was sind die Javac-Optionen?

kompilieren

javac -cp ./src -encoding UTF-8 ./src/Answer001.java

Lauf

java -cp src/ Answer001

--- cp → Klassenpfad Wenn dies nicht angegeben ist, ist der angegebene Speicherort der Klassendatei das aktuelle Verzeichnis.

Fix

javac -cp ./src -d ./classes src/Answer001.java
java -cp classes/ Answer001

Die Option -d von --javac erstellt kein Verzeichnis, daher müssen Sie eines erstellen.

Testlauf

--Junit.jar und hamcrest.jar scheinen unter content / lib erforderlich zu sein. Laden Sie sie herunter und erhalten Sie sie

--Wenn die Kombination der Versionen junit.jar und hamcrest-core.jar nicht funktioniert

Tritt ein

Schauen Sie sich den Bytecode an

javap -c answer/classes/Answer001.class > Answer001-bytecode.txt
Compiled from "Answer001.java"
public class Answer001 {
  public Answer001();
    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
}

Eindrücke und Überlegungen

――Wie Sie aus dem Memo ersehen können, können Sie sehen, dass Sie eine Lösung finden, während Sie verzweifelt Javac, Java, Klassenpfad usw. überprüfen. (Es ist wirklich peinlich zu entlarven) ――Aber ich bin eine Person, die im Begriff ist, Java-Anwendungen für die Welt freizugeben. Ich hatte das Gefühl, dass eine solche Person nicht einmal Java kompilieren und ausführen kann ... tatsächlich ist es in einer großartigen Welt. IDE, die Kraft des Frameworks, erschreckend. .. .. ――Der Moment, an dem ich dachte, dass das, was in der Welt der Lebensmittel passiert, in der man warmen und köstlichen Reis essen kann, wenn man ihn mietet, ohne zu wissen, wie man die Zutaten schneidet und würzt, auch in der Systementwicklung passiert. war. »Aber ich bin Systemingenieur. In der Welt des Essens ist er Koch. Es lässt mich denken, dass die Brotdose, die ich im Supermarkt gekauft habe, mit Lentin serviert wird, auch wenn ich mich selbst Koch nenne. Zumindest möchte ich so etwas nicht essen. ――In der Welt des Kochens habe ich ein System entwickelt, mit dem der Koch antworten kann, indem er den Koch fragt: „Wie kochen Sie diese Zutat?" „Ich möchte, dass Sie diesen Geschmack ein wenig ändern." Ich wollte in der Lage sein, den Leuten zu antworten, die es benutzt haben, wie zum Beispiel "Wie funktioniert das?" Und "Ich möchte, dass Sie das Verhalten hier ein wenig ändern." ――Neu kürzlich habe ich das Gefühl, dass die Anzahl der Lernsitzungen mit Titeln wie "Ich werde versuchen, schwierige Dinge zu verschieben, weil es in Ordnung ist" oder "Anfänger können Webanwendungen an einem Tag verwenden" zunimmt. Ich denke, dies ist eine Manifestation der Tatsache, dass die Schwelle für die Informatik fällt. Laut einem 15-jährigen Kriegeringenieur war die IDE selbst früher sehr teuer, und es scheint, dass es nicht möglich war, ein anständiges System zu entwickeln, ohne in einem Unternehmen zu sein. ―― Egal wie kostenlos und einfach es ist, ein System zu erstellen, die zugrunde liegende Technologie ist nicht einfach. Es ist nur so, dass sehr kluge Leute die schwierigen Teile verstecken, um sie einfacher zu bedienen. Wenn Sie jedoch mit den Gefälligkeiten dieser Menschen Schritt halten, werden Sie zu einer Person, die nichts tun kann, wenn Sie sagen "Es gibt ein Problem mit der Leistung". Als Person, die das System liefert, wollte ich den Mechanismus des zugrunde liegenden Teils verstehen und ein qualitativ hochwertiges System liefern.

Recommended Posts

Eine Welt, in der Sie ein Produkt veröffentlichen können, ohne den Befehl javac zu kennen
Seite, auf der Sie die Versionsrelation von spring (?) Sehen können
Es ist ein Bildertagebuch der Sommerferien, in dem Sie die nicht spezifizierte Sequenz des menschlichen Genoms sehen können.