logo

Read-Eval-Print Loop (REPL) v jazyku Java

The Slučka Read-Eval-Print alebo REPL je rozhranie shellu. Toto rozhranie načíta a vyhodnotí každý riadok vstupu a potom vytlačí výsledok. The Slučka Read-Eval-Print nám pomáha interagovať s našou aplikáciou v konkrétnom stave. Príkazy číta a vyhodnocuje REPL a vytlačte výsledok. Po vytlačení výsledku sa REPL vráti na začiatok, aby prečítal, vyhodnotil a vytlačil náš ďalší vstup.

Read-Eval-Print Loop (REPL) v jazyku Java

Pomocou REPL môžeme jednoducho písať a testovať náš Java kód bez toho, aby sme ho kompilovali a výstup môžeme vidieť priamo na konzole.

Java už nemá REPL?

Rozhodne musí byť REPL v zavedenom jazyku, napr Java . Nie všetky jazyky však majú REPL a Java je jedným z nich. Vývojári Java to vyžadujú najviac. Java má už nejaký čas niečo ako REPL ako Java Beanshell. Ale projekt nebol plne vybavený REPL s inými jazykmi. Na tento účel bola v roku 2016 vydaná Java 9, ktorá poskytuje plne funkčné prostredie REPL.

Prečo je REPL taký užitočný?

Použitím REPL nepotrebujeme kompilovať ani testovať náš Java kód pomocou príkazu javac. Po použití REPL,

  1. Na písanie programu Java nie je potrebný editor.
  2. Program Java nie je potrebné ukladať.
  3. Nie je potrebné kompilovať program Java.
  4. Nie je potrebné robiť úpravy, ak sa vyskytne chyba počas kompilácie alebo behu.
  5. Proces nie je potrebné opakovať.
Read-Eval-Print Loop (REPL) v jazyku Java

Môžeme hodnotiť metódy, triedy a príkazy bez toho, aby sme vytvorili triedu. Program 'Hello World' je možné napísať aj bez vytvorenia triedy.

lexikografický poriadok

Požiadavky na používanie REPL

Na použitie je len jedna požiadavka REPL ,t.j. mali by sme Java 9 alebo vyššej verzie v našom systéme. Ak je v našom systéme nainštalovaná Java 9, sme pripravení na použitie REPL . Aby bolo možné skontrolovať prúd verzia Java vo svojom systéme otvorte príkazový riadok a zadajte nasledujúci príkaz:

 java -version 

Read-Eval-Print Loop (REPL) v jazyku Java

Pomocou REPL

Nižšie je uvedených niekoľko príkladov REPL, v ktorých hodnotíme matematické výrazy, vypočítavame Fibonacciho rad, vytvárame dynamickú triedu, poznáme históriu a upravujeme triedu.

Príklad 1: Vyhodnotenie matematických výrazov

linuxový správca úloh
 jshell> double a = 10; jshell> a= Math.pow(a, 2); jshell> a+20 jshell> /vars jshell> double data = Math.pow(8.3, 5); 

Popis:

V prvom riadku vytvoríme premennú 'a' typu double a nastavíme jej počiatočnú hodnotu 10. Potom nájdeme druhú mocninu premennej 'a' a uložíme ju do tej istej premennej. Potom jednoducho pridáme 20 do premennej 'a'. Jshell vloží výsledok do dočasnej premennej '' . Ďalej vykonáme '/čího' príkaz, ktorý nám zobrazí všetky vytvorené premenné. Nakoniec vytvoríme premennú 'data' typu double a uložte 5thmocnina číslice 8.3.

Výkon:

súbor strojopisu
Read-Eval-Print Loop (REPL) v jazyku Java

Príklad 2: Výpočet Fibonacciho radu

 jshell> int fibo(int no) (no == 1)) ...> return no;e all possible completions; total possible completions ...> else ...> return fibo(no-1)+fibo(no-2); ...> jshell> /methods jshell> fibo(11) jshell> fibo(12) jshell> int[] arr = { 1,2,3,4,5,6}; jshell> for(int i: arr){ ...> System.out.println(fibo(i)); ...> } 

Popis:

V prvých šiestich riadkoch kódu vytvoríme metódu pre Fibonacciho sériu. Potom použijeme /metódy príkaz Jshell, ktorý nám ukáže všetky dostupné metódy. V nasledujúcich dvoch riadkoch otestujeme fibo() metóda odovzdávaním celočíselných hodnôt. Vytvárame pole arr určiť, koľko výrazov chceme získať Fibonacciho rad. Ďalej iterujeme každú hodnotu arr pomocou pre každú slučku. Každú hodnotu arr odovzdáme metóde fibo() a vypíšeme jej návratovú hodnotu.

Výkon:

Read-Eval-Print Loop (REPL) v jazyku Java

Príklad 3: REPL na opätovné použitie

nájsť môj iphone z androidu
 jshell> int fibo(int no){ ...> return 2; ...> } jshell> for(int i: arr){ ...> System.out.println(fibo(i)); ...> } 

Popis:

Vo vyššie uvedenom kóde vytvoríme metódu fibo() s rovnakým návratovým typom a argumentom, aký sme vytvorili predtým. V tomto čase Jshell prepíše predchádzajúci 'fibo()' metódou s aktuálnou. Ďalej odovzdáme každú hodnotu arr do funkcie, aby sme sa uistili, či je naša metóda fibo() prepísaná alebo nie.

Výkon:

Read-Eval-Print Loop (REPL) v jazyku Java

Príklad 4: Definovanie triedy

 jshell> class Student{ ...> public String Name; ...> public int age; ...> public String course; ...> public int semester; ...> public Student(String Name, int age, String course, int semester){ ...> this.Name=Name; ...> this.age=age; ...> this.course = course; ...> this.semester=semester; ...> } ...> public void showData(){ ...> System.out.println('Name= '+ Name); ...> System.out.println('Age= '+ age); ...> System.out.println('Course= '+ course); ...> System.out.println('Semester= '+semester); ...> } ...> } 

Popis:

Vo vyššie uvedenom kóde vytvoríme triedu 'študent' , ktoré majú Meno, vek, kurz a semester. Vytvoríme si konštruktor, v ktorom nastavíme hodnoty týmto premenným. Po konštruktore vytvoríme metódu, ktorá zobrazuje hodnotu všetkých premenných pre každú inštanciu triedy.

Výkon:

Read-Eval-Print Loop (REPL) v jazyku Java

Príklad 5: Vytvorenie inštancie triedy

 jshell> Student s1 = new Student( 'Shubham Rastogi', 18, 'MCA', 4); jshell> Student s2 = new Student( 'Kartik Rastogi', 23, 'MCA', 3); jshell> /vars jshell> s1.showData(); jshell> s2.showData(); 

Popis:

rj12 vs rj11

Vo vyššie uvedenom kóde vytvoríme dve inštancie triedy a odošleme hodnotu do konštruktora pre všetky premenné triedy. Ďalej spustíme príkaz Jshell, aby sme skontrolovali, či sú premenné s1 a s2 vytvorené alebo nie. Nakoniec zavoláme metódu showData() na zobrazenie údajov každej inštancie.

Výkon:

Read-Eval-Print Loop (REPL) v jazyku Java