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.