O Loop de leitura-avaliação-impressão ou REPL é uma interface shell. Esta interface lê e avalia cada linha de entrada e depois imprime o resultado. O Loop de leitura-avaliação-impressão nos ajuda a interagir com o tempo de execução do nosso aplicativo presente em um estado específico. Os comandos são lidos e avaliados pelo REPL e imprima o resultado. Após imprimir o resultado, o REPL volta ao início para ler, avaliar e imprimir nossa próxima entrada.
Usando REPL, podemos escrever e testar facilmente nosso código Java sem compilá-lo e ver a saída diretamente no console.
Java ainda não tem REPL?
Definitivamente, um REPL deve estar em uma linguagem estabelecida como Java . Porém, nem todas as linguagens possuem o REPL, e Java é uma delas. Os desenvolvedores Java são os que mais exigem isso. Java teve algo parecido com REPL por um tempo como Java Beanshell. Mas o projeto não era um REPL completo com outras linguagens. Para isso, em 2016, foi lançado o Java 9, que entrega um ambiente REPL completo.
Por que o REPL é tão útil?
Ao usar o REPL, não precisamos compilar ou testar nosso código Java usando o comando javac. Depois de usar o REPL,
- Não há necessidade de um editor para escrever o programa Java.
- Não há necessidade de salvar o programa Java.
- Não há necessidade de compilar o programa Java.
- Não há necessidade de fazer edição se ocorrer algum erro em tempo de compilação ou tempo de execução.
- Não há necessidade de repetir o processo.
Podemos avaliar métodos, classes e instruções sem criar uma classe. O programa 'Hello World' também pode ser escrito sem a criação de uma classe.
execvp
Requisitos para usar REPL
Existe apenas um requisito para usar REPL , ou seja, deveríamos ter Java 9 ou versão superior em nosso sistema. Se o Java 9 estiver instalado em nosso sistema, estamos prontos para usar REPL . Para verificar a atual versão de Java em seu sistema, abra o prompt de comando e digite o seguinte comando:
java -version
Usando REPL
Abaixo estão alguns exemplos de REPL nos quais avaliamos as expressões matemáticas, calculamos a série de Fibonacci, criamos uma classe dinâmica, conhecemos o histórico e modificamos a classe.
arraylist em java sort
Exemplo 1: Avaliando Expressões Matemáticas
jshell> double a = 10; jshell> a= Math.pow(a, 2); jshell> a+20 jshell> /vars jshell> double data = Math.pow(8.3, 5);
Descrição:
Na primeira linha, criamos uma variável 'a' do tipo double e definimos seu valor inicial como 10. Depois disso, encontramos o quadrado da variável 'a' e o armazenamos na mesma variável. Depois disso, simplesmente adicionamos 20 à variável ‘a’. O Jshell colocará o resultado em uma variável temporária '' . A seguir, executamos o '/cujo' comando, que nos mostra todas as variáveis criadas. Por fim, criamos uma variável 'dados' do tipo double e armazene os 5ºpotência do dígito 8.3.
Saída:
substring string java
Exemplo 2: Calculando a Série Fibonacci
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)); ...> }
Descrição:
Nas primeiras seis linhas de código, criamos um método para a série de Fibonacci. Depois disso, usamos o /métodos comando do Jshell, que nos mostra todos os métodos disponíveis. Nas próximas duas linhas, testamos o fibra() método passando valores inteiros. Criamos uma matriz chegar para determinar quantos termos queremos obter da série de Fibonacci. A seguir, iteramos cada valor de arr usando for cada loop. Passamos cada valor de arr para o método fibo() e imprimimos seu valor de retorno.
Saída:
Exemplo 3: REPL para reutilização
jshell> int fibo(int no){ ...> return 2; ...> } jshell> for(int i: arr){ ...> System.out.println(fibo(i)); ...> }
Descrição:
No código acima, criamos um método fibo() com o mesmo tipo de retorno e argumento que criamos antes. Neste momento, o Jshell substitui o anterior 'fibo()' método com o atual. A seguir, passamos cada valor de arr para a função para garantir se nosso método fibo() é substituído ou não.
Saída:
Exemplo 4: Definindo a classe
diferença entre jantar e ceia
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); ...> } ...> }
Descrição:
No código acima, criamos a classe 'Estudante' , que possuem Nome, idade, curso e semestre. Criamos um construtor no qual definimos os valores para essas variáveis. Após o construtor, criamos um método que mostra o valor de todas as variáveis para cada instância da classe.
Saída:
Exemplo 5: Criando uma instância da classe
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();
Descrição:
inkscape x gimp
No código acima, criamos duas instâncias da classe e passamos o valor para o construtor para todas as variáveis da classe. A seguir, executamos o comando Jshell para verificar se as variáveis s1 e s2 foram criadas ou não. Por fim, chamamos o método showData() para exibir os dados de cada instância.
Saída: