Un monde où vous pouvez publier un produit sans connaître la commande javac

Déclencheur

«C'était ma deuxième année en tant que nouveau diplômé et en tant qu'ingénieur système, mais cette fois, le système d'application Web Java EE dans lequel j'étais impliqué sera mis à disposition pour un usage commercial.

――Lors de la sortie du système, il y a des discussions telles que "L'ancienne zone de Heap est ~" et "Le taux d'utilisation de Metaspace est ~" dans les tests de performance. Je voulais donc reconfirmer "Comment fonctionne Java?", Et a été présenté lorsque j'ai participé à JJUG CCC 2018 Spring [Java 100 knock](https: //www.slideshare. J'ai décidé d'essayer net / JSUX Design / java100).

À propos de Java 100 knock

――Il s'agit d'un ensemble de problèmes Java créés par Just System. Il est destiné aux utilisateurs débutants et intermédiaires, et il est dit qu'il a été créé dans le but de pouvoir produire plus de code qui peut fonctionner de manière stable dans un environnement d'exploitation et présente une excellente maintenabilité et extensibilité. «Je voulais établir ces bases à plusieurs reprises afin d'améliorer mes compétences applicatives, j'ai donc essayé de résoudre la première ... mais j'ai réalisé que je ne comprenais pas du tout Java plus que prévu. C'est parti. Vous trouverez ci-dessous un mémo lorsque j'ai résolu le premier.

1er

--Compiler ... Quelles sont les options javac?

--Spécifiez le chemin de classe - -cp ./src

compiler

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

Courir

java -cp src/ Answer001

--- cp → classpath Si cela n'est pas spécifié, l'emplacement spécifié du fichier de classe sera le répertoire courant.

Réparer

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

L'option -d de --javac ne crée pas de répertoire, vous devez donc en créer un.

Essai

--Il semble que junit.jar et hamcrest.jar soient requis sous content / lib, alors téléchargez-les et obtenez-les.

Se produit

--La combinaison de junit 4.12 et hamcrest 1.3 a bien fonctionné

Jetez un œil au code d'octet

--Utilisez la commande javap, Documents here --- "Inverser l'assemblage du fichier de classe."

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
}

Impressions et considérations

Comme vous pouvez le voir dans le mémo, vous pouvez voir que vous résolvez tout en vérifiant désespérément javac, java, le chemin de classe, etc. (C'est vraiment embarrassant d'exposer) «Mais je suis une personne sur le point de lancer des applications Java dans le monde. J'ai senti qu'une telle personne ne serait même pas capable de compiler et d'exécuter Java ... en fait, c'est dans un monde formidable. IDE, la puissance du framework, terrifiant. .. .. `` Le moment où j'ai pensé que ce qui se passe dans le monde de la nourriture où vous pouvez manger du riz chaud et délicieux si vous le louez sans savoir comment couper et assaisonner les ingrédients se produit également dans le développement du système. était. ――Mais je suis ingénieur système. Dans le monde de la nourriture, il est cuisinier. Cela me fait penser que le fait est que la boîte à lunch que j'ai achetée au dépanneur est servie avec de la lentine, même si je me qualifie de chef. Au moins, je ne veux pas manger ce genre de nourriture. «Dans le monde de la cuisine, j'ai mis en place un système pour que le chef puisse répondre en demandant au chef:" Comment faites-vous cuire cet ingrédient? "" Je veux que vous changiez un peu ce goût. " Je voulais pouvoir répondre aux personnes qui l'utilisaient, comme «Comment ça marche?» Et «Je veux que vous changiez un peu le comportement ici». ――Récemment, j'ai l'impression que le nombre de sessions d'étude avec des titres tels que «Je vais essayer de déplacer des choses difficiles parce que ça va» ou «Les débutants peuvent utiliser des applications Web en une journée» augmente. Je pense que c'est une manifestation du fait que le seuil de l'informatique est en baisse. Selon un ingénieur guerrier de 15 ans, dans l'ancien temps, l'IDE lui-même était très cher, et il semble qu'il n'était pas possible de développer un système décent sans être en entreprise. «Cependant, peu importe à quel point il devient gratuit et facile de créer un système, la technologie sous-jacente n'est pas facile. C'est juste que les gens très intelligents cachent les parties difficiles pour les rendre plus faciles à utiliser. Cependant, si vous suivez les faveurs de ces personnes, vous deviendrez une personne qui ne peut rien faire lorsque vous dites "Il y a un problème de performance". En tant que personne qui livre le système, je voulais comprendre le mécanisme de la pièce sous-jacente et livrer un système de haute qualité.

Recommended Posts

Un monde où vous pouvez publier un produit sans connaître la commande javac
Site où vous pouvez voir la relation de version de spring (?)
C'est un journal d'images des vacances d'été, où vous pouvez voir la séquence non spécifiée du génome humain.