Recherche…


Introduction

JShell est un REPL interactif pour Java ajouté dans JDK 9. Il permet aux développeurs d’évaluer instantanément les expressions, les classes de test et d’expérimenter le langage Java. Un accès anticipé pour jdk 9 peut être obtenu à l'adresse suivante: http://jdk.java.net/9/

Syntaxe

  • $ jshell - Démarrez le JShell REPL
  • jshell> / <commande> - Exécuter une commande JShell donnée
  • jshell> / exit - Quittez JShell
  • jshell> / help - Voir une liste de commandes JShell
  • jshell> <expression_java> - Evalue l'expression Java donnée (point-virgule facultatif)
  • jshell> / vars OU / méthodes OR / types - Voir une liste de variables, méthodes ou classes, respectivement.
  • jshell> / open <fichier> - lit un fichier en entrée du shell
  • jshell> / edit <identifiant> - éditer un extrait dans l'éditeur de jeux
  • jshell> / set editor <command> - définit la commande à utiliser pour éditer les extraits à l'aide de / edit
  • jshell> / drop <identifier> - supprime un extrait
  • jshell> / reset - Réinitialise la JVM et supprime tous les extraits

Remarques

JShell nécessite le JDK Java 9, qui peut actuellement (mars 2017) être téléchargé en tant que snapshots à accès anticipé à partir de jdk9.java.net . Si, lorsque vous essayez d'exécuter la commande jshell , vous obtenez une erreur commençant par Unable to locate an executable , assurez-vous que JAVA_HOME est défini correctement.

Importations par défaut

Les packages suivants sont importés automatiquement lorsque JShell démarre:

import java.io.*
import java.math.*
import java.net.*
import java.nio.file.*
import java.util.*
import java.util.concurrent.*
import java.util.function.*
import java.util.prefs.*
import java.util.regex.*
import java.util.stream.*

Entrer et quitter JShell

Démarrer JShell

Avant d'essayer de démarrer JShell, assurez-vous que votre variable d'environnement JAVA_HOME pointe vers une installation JDK 9. Pour démarrer JShell, exécutez la commande suivante:

$ jshell

Si tout se passe bien, vous devriez voir une invite jshell> .

Quitter JShell

Pour quitter JShell, exécutez la commande suivante à partir de l'invite JShell:

jshell> /exit

Expressions

Dans JShell, vous pouvez évaluer les expressions Java, avec ou sans points-virgules. Celles-ci peuvent aller d'expressions de base et d'énoncés à des expressions plus complexes:

jshell> 4+2
jshell> System.out.printf("I am %d years old.\n", 421)

Les boucles et les conditionnels vont bien aussi:

jshell> for (int i = 0; i<3; i++) {
   ...> System.out.println(i);
   ...> }

Il est important de noter que les expressions dans les blocs doivent avoir des points-virgules!

Les variables

Vous pouvez déclarer des variables locales dans JShell:

jshell> String s = "hi"
jshell> int i = s.length

Gardez à l'esprit que les variables peuvent être redéclarées avec différents types; Ceci est parfaitement valable dans JShell:

jshell> String var = "hi"
jshell> int var = 3

Pour voir une liste de variables, entrez /vars à l'invite JShell.

Méthodes et Classes

Vous pouvez définir des méthodes et des classes dans JShell:

jshell> void speak() {
   ...> System.out.println("hello");
   ...> }

jshell> class MyClass {
   ...> void doNothing() {}
   ...> }

Aucun modificateur d'accès n'est nécessaire. Comme pour les autres blocs, les points-virgules sont obligatoires dans les corps de méthode. Gardez à l'esprit que, comme pour les variables, il est possible de redéfinir les méthodes et les classes. Pour afficher une liste de méthodes ou de classes, entrez /methods ou /types à l'invite JShell, respectivement.

Editer les extraits

L'unité de code de base utilisée par JShell est l' extrait de code ou l' entrée source . Chaque fois que vous déclarez une variable locale ou définissez une méthode ou une classe locale, vous créez un fragment dont le nom est l'identificateur de la variable / méthode / classe. À tout moment, vous pouvez modifier un extrait que vous avez créé avec la commande /edit . Par exemple, disons que j'ai créé la classe Foo avec une seule méthode, bar :

jshell> class Foo {
   ...> void bar() {
   ...> }
   ...> }

Maintenant, je veux remplir le corps de ma méthode. Plutôt que de réécrire la classe entière, je peux l’éditer:

jshell> /edit Foo

Par défaut, un éditeur de swing apparaîtra avec les fonctionnalités les plus élémentaires possibles. Cependant, vous pouvez changer l'éditeur que JShell utilise:

jshell> /set editor emacs
jshell> /set editor vi
jshell> /set editor nano
jshell> /set editor -default

Notez que si la nouvelle version de l'extrait de code contient des erreurs de syntaxe, il est possible qu'il ne soit pas enregistré. De même, un extrait de code est créé uniquement si la déclaration / définition d'origine est syntaxiquement correcte; ce qui suit ne fonctionne pas:

jshell> String st = String 3
//error omitted
jshell> /edit st
|  No such snippet: st

Toutefois, les extraits peuvent être compilés et donc modifiables malgré certaines erreurs de compilation, telles que les types incompatibles - les travaux suivants:

jshell> int i = "hello"
//error omitted
jshell> /edit i

Enfin, les extraits peuvent être supprimés à l'aide de la commande /drop :

jshell> int i = 13
jshell> /drop i
jshell> System.out.println(i)
|  Error:
|  cannot find symbol
|    symbol:   variable i
|  System.out.println(i)
|

Pour supprimer tous les extraits de code, réinitialisant ainsi l’état de la machine virtuelle Java, utilisez \reset :

jshell> int i = 2

jshell> String s = "hi"

jshell> /reset
|  Resetting state.

jshell> i
|  Error:
|  cannot find symbol
|    symbol:   variable i
|  i
|  ^

jshell> s
|  Error:
|  cannot find symbol
|    symbol:   variable s
|  s
|  ^


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow