Ces dernières années, il y a eu de nombreuses écoles de programmation publicitaire telles que "Devenir ingénieur même si vous êtes inexpérimenté" ou "Devenir ingénieur même si vous êtes issu des arts libéraux", et j'ai été pris en charge par l'une d'entre elles lors de la formation de l'entreprise. Cependant, j'ai senti que l'accent n'était pas tant mis sur les «bases», probablement parce que le but était de créer une application dans un court laps de temps, donc je suis devenu un ** nouveau venu qui apprendra la programmation à partir de maintenant **. Je voulais écrire quelque chose qui servirait de passerelle vers les «bases» de Java, et pour ** les nouveaux ingénieurs comme moi qui estiment que les «bases» ne suffisent pas.
Jusqu'à présent, le mot «basique» a été saisi.
Signification de Ki-so [Basic] La partie de base qui fait bouger quelque chose. À l'origine. "Parce que la base est solide, vous pouvez vous améliorer rapidement" "Consolider la base" "Connaissances de base"
Dans cette entrée, comme première étape pour apprendre les «bases» de Java
Je voudrais me concentrer sur ces deux.
Tout d'abord, regardons le langage Java lui-même.
Java Avant cela, vérifions d'abord brièvement le langage de programmation lui-même.
Le programmeur utilise le langage de programmation pour envoyer des instructions à l'ordinateur. Cependant, les ordinateurs ne sont rien de plus que des ordinateurs électriques.
(En aparté, l'ordinateur s'appelle Rechner en allemand, mais il vient du verbe "calculer", rechnen. C'est vraiment un aparté.)
Il semble que les anciens programmeurs utilisaient les nombres binaires 0 et 1 pour écrire des programmes car les ordinateurs ne peuvent recevoir que deux signaux électriques, allumés ou éteints. À propos, celui composé de 0 et 1 est appelé ** langage machine **.
Il semble que les nombres binaires soient souvent écrits en nombres hexadécimaux car ils ont de nombreux chiffres, mais ils ne sont toujours pas conviviaux pour les humains. Par conséquent, un surnom (appelé «mnémonique») a été ajouté aux instructions représentées par le langage machine, et un «** langage d'assemblage **» a été créé.
Cependant, les programmes ne sont toujours pas faciles à comprendre pour les humains, et avec le temps, le nombre et la complexité des programmes requis ont augmenté. Par conséquent, une méthode d'écriture de programmes plus facile à comprendre pour les humains a été créée. (À propos, un langage de programmation facile à comprendre pour les humains est appelé un "langage de haut niveau", tandis qu'un langage facile à comprendre pour un ordinateur est appelé un "langage de bas niveau".)
Ce qui est facile à comprendre pour les humains signifie également qu'il est difficile à comprendre pour les ordinateurs. Il faut donc "convertir" le code écrit par le programmeur dans le langage machine pour que l'ordinateur puisse le comprendre. C'est le travail appelé "** compilation ", et celui qui le compile s'appelle " compiler **". Le compilateur traduit les programmes écrits dans des langages de haut niveau en quelque chose qu'un ordinateur peut comprendre, mais il compile pour cet ordinateur. Autrement dit, l'ordinateur dans un autre environnement ne peut pas comprendre le langage machine converti. Vous aurez donc besoin d'un autre compilateur pour cela.
C'est là que Java arrive enfin.
Java a été annoncé par Sun Microsystems en 1995. Java, qui est un langage de haut niveau, doit être compilé dans un langage machine comme je l'ai écrit précédemment, mais la différence avec les autres langages est qu'il utilise une machine virtuelle appelée ** JVM ** (Java Virtual Maschine). Il y a.
La JVM alloue de la mémoire sur votre ordinateur et démarre. Et comme vous pouvez exécuter le programme sur cette JVM, vous n'avez pas à vous soucier des différences entre les ordinateurs.
Pour être plus précis, Java est écrit de manière conviviale (le nom du fichier est hoge.java) et est converti en ce qu'on appelle un langage intermédiaire via la compilation (le nom du fichier est hoge.class. Le nom du langage intermédiaire est officiel. Il semble qu'il soit appelé ainsi pour des raisons de commodité, et il est correctement appelé ** code d'octet Java ). Ensuite, la JVM charge le langage intermédiaire, le convertit ligne par ligne en langage machine et l'exécute. Un programme qui convertit et exécute ligne par ligne de cette manière est appelé " interpréteur **" [^ 1].
[^ 1]: Alors que la compilation et le compilateur sont séparés selon la grammaire anglaise, l'interprète doit être divisé en interprète et interprète selon la grammaire anglaise, mais je me demande si la notation n'est pas divisée. ??
En d'autres termes, il y a deux étapes de conversion avant l'exécution de Java. (Conversion par compilateur et interpréteur)
JVM Il y avait des JDK et des JRE lors de la création de l'environnement Java. JDK est un kit de développement Java, un kit de développement logiciel requis lors du développement à l'aide de Java. Et ce qui est inclus dans ce JDK est le JRE (Java Runtime Environment), qui est appelé l'environnement d'exécution Java. Il s'agit d'un ensemble de logiciels qui vous permet d'exécuter des applications Java sur votre ordinateur, y compris des JVM.
La JVM se compose de threads et de mémoire. Un processus est défini dans le thread et exécute ce processus. La mémoire est divisée en tas et native. La zone de tas stocke les objets d'application et les garbage collection (GC) organisent régulièrement les objets qui ne sont plus nécessaires. La zone native est la zone utilisée par la JVM elle-même et stocke les informations traitées par le thread (pile de threads). Je voudrais expliquer un peu plus en détail, mais je vais manquer, alors je vais passer à autre chose.
Jetons un coup d'œil rapide au processus menant à l'affichage final de Hello World!.
HelloWorld.java
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
Commençons par compiler. La commande ** javac ** compile un fichier java et crée un fichier de classe.
javac HelloWorld.java
Cela créera un fichier appelé HelloWorld.class. Présentons d'abord Hello World! Démarrez la JVM avec la commande ** java **, analysez et exécutez le fichier HelloWorld.class écrit en code octet Java.
$ java HelloWorld
Hello World!
C'est fait. Vérifions maintenant le code d'octet Java. Vous pouvez utiliser la commande ** javap ** pour convertir un fichier de classe dans un format lisible par l'homme.
$ 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
}
classe publique À partir de HelloWorld, cette classe a deux fonctions, la première est le constructeur et la seconde est le bytecode de la fonction principale. Le code d'origine n'avait pas de constructeur, mais il semble être généré automatiquement. Regardons à l'intérieur de la fonction. Le code se compose de trois parties: «index: instruction #constant pool number». Un pool de constantes est une zone qui stocke des constantes et des symboles dans une machine virtuelle Java, mais jetons un œil. Vous pouvez vérifier en spécifiant l'option -v dans la commande javap.
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
Vérifions la fonction principale et voyons le déroulement de Hello World! Display.
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
Tout d'abord, l'instruction getstatic se réfère au n ° 2. c'est
#2 = Fieldref #16.#17 // java/lang/System.out:Ljava/io/PrintStream;
Vous pouvez voir que nous obtenons le champ à utiliser, java / lang / System.out.
L'instruction ldc suivante, qui charge les valeurs constantes du pool de constantes au moment de l'exécution.
#3 = String #18 // Hello World!
#18 = Utf8 Hello World!
La chaîne Hello World! A été chargée ici.
Et l'instruction virtuelle d'invocation,
#4 = Methodref #19.#20 // java/io/PrintStream.println:(Ljava/lang/String;)V
Exécutez la fonction println avec la chaîne de caractères précédente comme argument.
Enfin, retournez vide pour terminer. Merci pour votre travail acharné, Hello World! Est affiché.
J'ai essayé d'en faire quelque chose que je voulais savoir lorsque j'étudiais Java pour la première fois, mais il est difficile de l'écrire de manière concise et avec une bonne compréhension des principaux points. Ai-je vraiment envie de lire ce contenu il y a un peu moins d'un an? Cependant, j'espère que cet article a aidé quelqu'un. Si vous voulez apprendre les bases de Java avec cela comme opportunité, c'est le meilleur et le plus élevé. Et j'ai décidé d'étudier les bases de Java afin de pouvoir l'envoyer de cette manière.
Si vous faites une erreur, veuillez la signaler.
Recommended Posts