[Introduction à la table des matières Java] J'ai comparé Java avec d'autres langages (type d'interpréteur, type de compilateur, type dynamique, type statique)

Objectif

Je viens de commencer à apprendre Java et je veux comprendre la différence avec les autres langages.

** Cliquez ici pour une vue d'ensemble et un article sur la construction de l'environnement **

Je voudrais diviser ce que j'ai appris en Java en plusieurs articles et les publier.

La prochaine fois, je vérifierai Variations et types. Cette fois, je vérifierai grosso modo deux points différents entre Java et les autres langages.

① Comment exécuter le programme

Les ordinateurs ne peuvent exécuter et comprendre que des mots machine écrits avec des 0 et des 1. Le code source écrit dans un langage de programmation doit également être converti (traduit) en langage machine.

Javascript, PHP, Ruby, etc.

Appelé le «langage d'interprétation». Fichiers sources écrits en langage de programmation, Il est exécuté lors de la conversion ligne par ligne afin que l'ordinateur puisse le reconnaître.

Ecrire un programme ↓ (traduit en langage machine) Courir ↓ Ecrire un programme ↓ (traduit en langage machine) Courir

Hello.php


<?php
  echo "Hello World";
?>

Terminal


$ php Hello.php
Hello World ← Exécuté et sorti!

Java Appelé le langage du compilateur. Tous les fichiers source écrits dans le langage de programmation sont une fois convertis (traduits) en langage machine pour générer un autre fichier (fichier de classe). Et l'exécution se fait collectivement par JVM (Java Virtual Machine).

Ecrire un programme ↓ Compiler (traduire en langage machine) Générer un fichier de classe ↓ Courir

Hello.java


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

Créez un fichier de classe en compilant le fichier source avec la commande javac.

Terminal


$ javac Hello.java
$ ls
Hello.java     Hello.classe ← Créé!

Exécutez le fichier de classe avec la commande java et sortez Hello World. N'ajoutez pas l'extension `.class. ''

Terminal


$ java Hello
Bonjour tout le monde ← Sortie!

Résumé de la façon d'exécuter le programme

** Langue de l'interprète **

-Lorsque l'ordinateur s'exécute, le langage de programmation écrit dans le fichier source est converti en langage machine et exécuté.

-Puisque le langage de type interpréteur n'a pas besoin d'être compilé un par un, une procédure gênante peut être omise.

** Langage du compilateur **

-Préparer une version compilée (fichier de classe) du fichier source écrit dans le langage de programmation afin qu'il puisse être lu dans le langage machine. Il n'est donc pas nécessaire de compiler lorsque l'ordinateur exécute le processus.

-Parler de la vitesse de traitement informatique, un langage de type compilateur dans lequel tout le code est une fois traduit en langage machine est plus rapide.

② Spécifiez le type de données

Javascript, PHP, Ruby, etc.

Appelé «langage typé dynamiquement». Il n'est pas décidé quel type de valeur sera inclus dans le nom de la variable, l'argument de la fonction ou la valeur de retour. (Peut être déclaré sans décision)

test.js


let str = "Bonjour";
console.log(str); //Bonjour
str = 2020;
console.log(str); // 2020

À l'origine, c'était le nom de variable "str" pour saisir une chaîne de caractères, mais vous pouvez également remplacer la valeur numérique 2020.

test.js


//Une fonction pour ajouter des nombres et renvoyer un résultat
function sumNumber(a, b) {
  return a + b;
}
console.log(sumNumber(1, 1)); // 2
console.log(sumNumber("Hello", "World")); // HelloWorld

À l'origine, le nom de la fonction était "sumNumber", que je voulais renvoyer le résultat de l'ajout de deux nombres. Vous pouvez également ajouter les chaînes Hello et World et les renvoyer.

Il y a un inconvénient à ce que vous puissiez l'utiliser sans le vouloir.

Java Appelé "langage typé statiquement". Déclarez explicitement le type dans le nom de la variable, l'argument de la fonction ou la valeur de retour. Il ne peut pas être traité avec des données autres que le type déclaré.

J'écrirai le code de la même manière qu'avant.

Main.java


class Main {
  public static void main(String[] args) {
    String str = "Bonjour";
    System.out.println(str); //Bonjour
    str = 2020; // Type mismatch: cannot convert from int to String
    System.out.println(str);
  }
}

Une erreur se produira si vous essayez de remplacer la valeur numérique 2020 par le nom de variable «str» qui contient des données de type caractère. Correctement...

Main.java


class Main {
  public static void main(String[] args) {
    String str = "Bonjour";
    System.out.println(str); //Bonjour

    //Remplacez str par la chaîne de caractères "Bonsoir"
    str = "Bonsoir";
    System.out.println(str); //Bonsoir

    //Remplacez 2020 par le nom de variable "année" spécifié comme type int
    int year = 2020;
    System.out.println(year); // 2020
  }
}

Il en va de même pour les fonctions.

Main.java


class Main {
  public static void main(String[] args) {
    System.out.println(sumNumber(1, 1)); // 2
    System.out.println(sumNumber("Hello", "World")); // The method sumNumber(int, int) in the type Main is not applicable for the arguments (String, String)
  }

  //Le premier et le second arguments reçoivent le type int et la valeur de retour définit également le nom de la fonction de type int "sumNumber".
  public static int sumNumber(int a, int b) {
    return a + b;
  }
}

En JavaScript, il était normal de passer des lettres ou des chiffres, mais en Java, j'obtiens une erreur. Cela est dû au fait que la fonction reçoit des données de type int, mais transmet une chaîne de caractères.

Il peut être exécuté comme le créateur du programme l'a prévu, et il y a un avantage que si une erreur se produit, elle peut être remarquée avant que le programme ne soit exécuté.

en conclusion

Jusqu'à présent, je n'ai appris que les langages à typage dynamique, j'ai donc été surpris de spécifier le type de données à chaque fois que je déclare une variable. Ensuite, nous approfondirons les variables et les types (https://qiita.com/morioheisei/items/3d27e82d6cd88068dded).

Recommended Posts

[Introduction à la table des matières Java] J'ai comparé Java avec d'autres langages (type d'interpréteur, type de compilateur, type dynamique, type statique)
Initialisation avec une chaîne vide vers une instance de type Java String
J'ai essayé d'interagir avec Java
Introduction à Ruby (à partir d'autres langues)
[Java] Flux de l'introduction de STS à la confirmation de la page dynamique sur l'hôte local (2/3)
Je veux afficher des images avec REST Controller de Java et Spring!
Après tout, je voulais prévisualiser le contenu de mysql avec Docker ...