Java 9 - Utforske REPL

1. Introduksjon

Denne artikkelen handler om jshell, en interaktiv REPL (Les-Evaluer-Print-Loop) -konsoll som følger med JDK for den kommende Java 9-utgivelsen. For de som ikke er kjent med konseptet, tillater en REPL interaktivt å kjøre vilkårlige kodebiter og evaluere resultatene.

EN REPL kan være nyttig for ting som å raskt sjekke levedyktigheten til en idé eller finne ut f.eks. en formatert streng for String eller SimpleDateFormat.

2. Løping

For å komme i gang må vi kjøre REPL, som gjøres ved å påkalle:

$ JAVA_HOME / bin / jshell

Hvis du ønsker mer detaljert melding fra skallet, a -v flagg kan brukes:

$ JAVA_HOME / bin / jshell -v

Når den er klar, blir vi møtt av en vennlig melding og en kjent Unix-stil ledetekst nederst.

3. Definere og påkalle metoder

Metoder kan legges til ved å skrive deres signatur og brødtekst:

jshell> void helloWorld () {System.out.println ("Hello world");} | opprettet metode helloWorld ()

Her definerte vi den allestedsnærværende "hallo verden" -metoden. Det kan påberopes ved bruk av vanlig Java-syntaks:

jshell> helloWorld () Hei verden

4. Variabler

Variabler kan defineres med vanlig Java-deklarasjonssyntaks:

jshell> int i = 0; i ==> 0 | opprettet variabel i: int jshell> String company = "Baeldung" company ==> "Baeldung" | opprettet variabelt selskap: String jshell> Date date = new Date () date ==> Sun Feb 26 06:30:16 EST 2017 | opprettet variabel dato: Dato

Merk at semikolon er valgfritt. Variabler kan også deklareres uten initialisering:

jshell> Filfilfil ==> null | opprettet variabelfil: Fil

5. Uttrykk

Ethvert gyldig Java-uttrykk godtas, og resultatet av evalueringen vises. Hvis det ikke er gitt noen eksplisitt mottaker av resultatet, opprettes "skrapevariabler":

jshell> String.format ("% d flasker øl", 100) $ 6 ==> "100 flasker øl" | opprettet skrapevariabel $ 6: String

REPL er ganske nyttig her ved å informere oss om at den opprettet en skrapevariabel som heter $6 hvilken verdi er "100 flasker øl på veggen" og typen er String.

Flerlinjeuttrykk er også mulig. Jshell er smart nok til å vite når et uttrykk er ufullstendig og vil be brukeren om å fortsette på en ny linje:

jshell> int i = ...> 5; i ==> 5 | modifisert variabel i: int | oppdatering overskrevet variabel i: int

Legg merke til hvordan ledeteksten endret seg til en innrykket …> å betegne fortsettelsen av et uttrykk.

6. Kommandoer

Jshell gir ganske mange metakommandoer som ikke er relatert til evaluering av Java-setninger. De starter alle med en skråstrek (/) for å skille seg fra normal drift. For eksempel kan vi be om en liste over alle tilgjengelige kommandoer ved å utstede /hjelp eller / ?.

La oss ta en titt på noen av dem.

6.1. Import

For å liste opp alle importene som er aktive i den nåværende økten, kan vi bruke /import kommando:

jshell> / import | importer java.io. * | importer java.math. * | importer java.net. * | importer java.nio.file. * | importere java.util. * | importer java.util.concurrent. * | importer java.util.function. * | importere java.util.prefs. * | importere java.util.regex. * | importer java.util.stream. *

Som vi kan se, begynner skallet med ganske mange nyttige import som allerede er lagt til.

6.2. Lister

Å jobbe i en REPL er ikke så lett som å ha en fullverdig IDE innen fingertuppene: det er lett å glemme hvilke variabler som har hvilke verdier, hvilke metoder som er definert og så videre. For å sjekke tilstanden til skallet vi kan bruke / var, / metoder, /liste eller /historie:

jshell> / var | int i = 0 | Strengfirma = "Baeldung" | Dato dato = søn 26. feb 06:30:16 EST 2017 | Filfil = null | String $ 6 = "100 flasker øl på veggen" jshell> / metoder | ugyldig helloWorld () jshell> / liste 1: ugyldig helloWorld () {System.out.println ("Hello world");} 2: int i = 0; 3: Strengselskap = "Baeldung"; 4: Dato dato = ny dato (); 5: Filfil; 6: String.format ("% d av flasker øl på veggen", 100) jshell> / history void helloWorld () {System.out.println ("Hello world");} int i = 0; Stringfirma = "Baeldung" Dato dato = ny dato () Filfil String.format ("% d flasker øl på veggen", 100) / var / metoder / liste / historie 

Forskjellen mellom /liste og /historie er at sistnevnte viser kommandoer i tillegg til uttrykk.

6.3. Sparer

For å lagre uttrykkshistorikken /lagre kommandoen kan brukes:

jshell> / lagre repl.java 

Dette lagrer vår uttrykkshistorie i repl.java i samme katalog som vi kjørte jshell kommando.

6.4. Laster inn

For å laste inn en tidligere lagret fil kan vi bruke /åpen kommando:

jshell> / åpne repl.java 

En lastet økt kan deretter bekreftes ved utstedelse / var, /metode eller /liste.

6.5. Spennende

Når vi er ferdige med arbeidet, vil /exit kommando kan avslutte skallet:

jshell> / exit | Ha det

Ha det jshell.

7. Konklusjon

I denne artikkelen tok vi en titt på Java 9 REPL. Siden Java allerede har eksistert i over 20 år, kom det kanskje litt sent. Det skal imidlertid vise seg å være et annet verdifullt verktøy i Java-verktøykassen.


$config[zx-auto] not found$config[zx-overlay] not found