Archives Wild Code School
Java

Use Java jshell

Quête 43 sur 43 · 1 image archivée

Introduction

Java 9 a introduit jshell, un programme qui fonctionne comme un shell (interface en ligne de commande dans laquelle tu tapes des instructions une par une) pour Java. Avec jshell, tu peux tester du code Java sans avoir besoin de compiler et de construire un programme Java. jshell est un outil interactif où tu tapes simplement ton code Java et obtiens un retour instantané.

jshell

🤓 À la fin de cette quête, tu sauras :

✅ Ce qu'est jshell ✅ Avoir utilisé jshell pour essayer un peu de code Java


Une fois ton environnement Java configuré, tape simplement la commande jshell à l'invite et commence à essayer du Java. Si ton environnement Java n'est pas correctement configuré, jshell risque de ne pas être trouvé. Corrige d'abord ta configuration avant d'essayer jshell.

Une fois jshell lancé, tu peux saisir des expressions Java simples. Pour commencer, appelle la fonction println pour afficher une ligne avec le message Hello world.

java
System.out.println("Hello world")

jshell fournit certaines commandes qui lui sont propres. Tu peux utiliser la commande help pour lister les commandes disponibles dans jshell

java
/help

Pour quitter jshell, tape la commande exit

java
/exit

Tu peux utiliser jshell pour évaluer des expressions simples. Cela fait de jshell une calculatrice en ligne de commande puissante et extensible. Essaie en calculant le carré de 2

java
2 * 2

Comme tu le sais, les mathématiques plus complexes utilisent des fonctions. Tu peux écrire tes propres fonctions directement dans jshell

java
int square( int val) { return val * val; }

Maintenant, essaie la nouvelle fonction pour calculer le carré d'un nombre

java
square( 2 )
Info

🤓 Astuce : Si tu commences à taper squa et que tu appuies sur tab, tu verras que la CLI va l'autocompléter pour toi !

Pour obtenir la liste de tes expressions et de tes fonctions, tu peux utiliser la commande list

java
/list

Quand on ajoute plus de fonctions, il devient logique de construire des groupes de fonctions apparentées. Pour construire un groupe, on écrit toutes les fonctions entre accolades. On doit fournir un nom pour chaque groupe de fonctions avant les accolades et on doit aussi donner à Java un moyen de savoir qu'il s'agit d'un groupe de fonctions en utilisant le mot réservé class. Cela fournit un espace nommé pour des fonctions ou, en bref, un namespace (espace de noms : un conteneur nommé qui regroupe des éléments pour éviter les conflits de noms).

java
class MyGroupOfFunctions {
  // ...
  static void hello() {
      System.out.println("Hello world!");
  }
}

Une class fournit un espace nommé. Un espace nommé, c'est l'endroit où tu déclares des variables et des fonctions en dehors du contexte global et à l'intérieur d'un contexte local. Chaque contexte local a un nom : le nom de la class. Les class sont elles-mêmes situées dans le contexte global. Dans ce cas, on utilise l'espace nommé pour déclarer quelques fonctions, mais on peut et on va ajouter d'autres choses plus tard. Remarque que les fonctions dans la class sont préfixées par le modificateur static. On doit utiliser ce modificateur parce que les class fournissent bien plus qu'un simple namespace, mais puisque c'est ce que l'on fait pour l'instant, on doit l'inclure ici. On a besoin du modificateur static pour lier les fonctions à la class.

Info

Quand des fonctions sont placées à l'intérieur d'une class, on les appelle des méthodes (en anglais methods). Java lui-même ne fournit aucun moyen de déclarer des fonctions en dehors d'une class, donc toutes les fonctions sont en réalité des méthodes.

Pour appeler une fonction de notre groupe, on doit préfixer la fonction avec le nom de la class. Par convention, les noms de class en Java commencent par une majuscule.

java
MyGroupOfFunctions.hello();

Appeler la fonction affichera le texte "Hello world!" dans la console.

référence des commandes

Bien que jshell fournisse un moyen facile de tester un peu de code Java, il existe quelques différences dans la façon dont tu travailles dans jshell par rapport à l'écriture d'un code source que tu compiles et exécutes en tant que programme Java. Néanmoins, jshell offre un moyen facile d'essayer Java.

↗
Guide de l'utilisateur du Java Shell

Guide officiel d'utilisation de jshell, l'outil shell de Java.

docs.oracle.com

🔬 Exercice


📝 Quiz

quiz
false|||false|||true
# Comment lister tous les imports ?
[x] /imports
[] System.out.imports()
# Qu'est-ce que '$1' ?
[x] Une variable temporaire (scratch variable)
[] Un nombre hexadécimal
# Quelle est la version minimale de Java requise pour jshell
[] Java 1.8
[x] Java 9

☝️ Résumé

Avec jshell, tu disposes d'un shell implémenté en Java et tu peux donc taper du Java


💪 Défi

Crée une class qui prend en charge au moins les quatre opérations mathématiques de base : additionner, soustraire, multiplier et diviser. Tous les paramètres et les valeurs de retour doivent utiliser le même type de données. Utilise le type de données int pour résoudre ce défi. Tu dois ajouter au moins deux méthodes mathématiques supplémentaires. Ces méthodes peuvent être assez simples, essaie juste de trouver quelque chose par toi-même.

Points à surveiller :

🧐 Critères d'acceptation

  • ✔ Tu as créé et utilisé au moins une méthode et deux class dans JShell
  • ✔ Tu as un extrait de code pour recharger une class
  • ✔ Ton code est disponible sur Github/Gitlab Avec jshell, tu peux tester de petits extraits de code Java. Même si ce ne sera pas ton outil principal au quotidien, c'est bon de le connaître et de l'avoir dans ta boîte à outils.

Introduction

Java 9 introduced jshell, a program that works like a shell for Java. With jshell you can test Java code without the need to compile and build a Java program. jshell is an interactive tool where you just type your Java code and get instant feedback.

jshell

🤓 By the end of this quest, you will:

✅ Know what jshell is ✅ Have used jshell to try out some Java code


Once you setup your Java environment, just type the command jshell and the prompt and start to try out Java. If your Java environment is not set up properly, jshell may not be found. Fix your setup first before you try jshell.

Once jshell is running, you can enter simple Java expressions. As a first step, call the function println to print a line with the Hello world message.

java
System.out.println("Hello world")

jshell provides some commands of its own. You can use the help command to list the commands available in jshell

java
/help

To leave jshell, type the exit command

java
/exit

You can use jshell to evaluate simple expressions. That makes jshell a powerful and extendable command-line calculator. Try this by computing the square of 2

java
2 * 2

As you know, more complex mathematics uses functions. You can write your own functions within jshell

java
int square( int val) { return val * val; }

Now try out the new function to compute the square of a number

java
square( 2 )
Info

🤓 Tips: If you start typing squa and press tab, you'll see that CLI will autocomplete it for you !

To get a list of your expressions and functions, you can use the list command

java
/list

When we add more functions, it makes sense to build groups of related functions. To build a group, we write all functions in curly brackets. We need to provide a name for each group of functions before the curly brackets and we also have to provide Java with a way to know that this is a group of functions by using the reserved word class. This provides a named space for functions or in short, a namespace.

java
class MyGroupOfFunctions {
  // ...
  static void hello() {
      System.out.println("Hello world!");
  }
}

A class provides a named space. A named space is where you declare variables and functions outside of the global context and inside of a local context. Each local context has a name - the name of the class. Class are located in the global context themself. In this case, we use the named space to declare some functions, but we can and will add more things later. Note that the functions in the class are prefixed with the static modifier. We have too use this modifier because classes provide much more than just a namespace but since this what we do, for now, we have to include it here. We need the static modifier to bind the functions to the class.

Info

When functions are placed inside of a class, they are referred to as methods. Java itself does not provide a way to declare functions outside of a class so all functions are actually methods.

To call a function from our group, we have to prefix the function with the class name. By convention, class names in Java start with an uppercase letter.

java
MyGroupOfFunctions.hello();

Calling the function will print the text "Hello world!" on the console.

command reference

Though jshell provides an easy way to test some Java code, there are some differences in the way you work in jshell compared to writing some source code that you compile and run as a Java program. Nonetheless, jshell provides an easy way to try out Java.

↗
Java Shell User's Guide
docs.oracle.com

🔬 Exercise


📝 Quiz

quiz
false|||false|||true
# How can you list all imports?
[x] /imports
[] System.out.imports()
# What is '$1'?
[x] A scratch variable
[] A hexadecimal number
# What is the minimum Java version required for jshell
[] Java 1.8
[x] Java 9

☝️ Summary

With jshell you have a shell implemented in Java and so you can type Java


💪Challenge

Create a class that supports at least the four basic math operations add, subtract, multiply and divide. All parameters and returns values should use the same data type. Use the int data type to solve this challenge. You should at least add two more mathematical methods. These methods can be rather simple, just try to think of something for yourself.

Things to look for:

🧐 Acceptance criteria

  • ✔ You created and used at least one method and two classes in JShell
  • ✔ You have a code snippet to reload one class
  • ✔ Your code is available on Github/Gitlab With jshell you can test run small java snippets. Though this will not be your primary everyday tool, it is good to know about it and have it in your toolbox.