Java 9 ao Socorro do Delphi – REPL

28/06/2017 at 00:07

Introdução

Para quem ainda não sabe as novidades do Java 9, aqui vai uma delas e embora ele ainda não tenha sido lançado, já é possível testá-lo.

Se você alterna muito entre linguagens e plataformas deve se deparar sempre com o dilema de algumas regras cruciais quando demora muito para voltar, ou se você é iniciante.

Read-Eval-Print-Loop (REPL)

Esse mecanismo é muito parecido com o que utilizamos ao acessar banco de dados pelos seus utilitários nativos que funcionam em modo texto, tais como:

  • Firebird: isql-fb;
  • PostgreSQL: psql;
  • MySQL: mysql;

Em que você entra, conecta e executa comandos e recebe a resposta no próprio prompt.

JShell

Então é disso que se trata o utilitário de linha de comando jshell que esta na pasta bin do Java 9, para acessar basta executá-lo no prompt do seu sistema operacional.

Com ele é possível tirar dúvidas básicas que do contrário você teria que compilar e instalar sua aplicação só para testar e depois utilizar algum breakpoint para ficar testando aquilo que você não tem certeza como funciona. Por exemplo, em Delphi o comando copy de uma string não é zero based, mas listas e arrays são, procurar na internet nem sempre é tão rápido, ou as operações XOR, MOD, DIV, etc, como é que seria o resultado disso mesmo? Sei lá é tarde da noite você está cansado, não precisa ficar lendo várias páginas do Stackoverflow, basta abrir o jshell e começar a fazer os testes. Segue o exemplo abaixo.

higor@home:~> cd Java/jdk-9/bin
higor@home:~/Java/jdk-9/bin> ./jshell 
|  Welcome to JShell -- Version 9
|  For an introduction type: /help intro

jshell> String requestURI = "/ci/entidade/dash.xhtml";
requestURI ==> "/ci/entidade/dash.xhtml"

jshell> String[] uri = requestURI.split("/");
uri ==> String[4] { "", "ci", "entidade", "dash.xhtml" }

jshell> String pagename = uri[uri.length];
|  java.lang.ArrayIndexOutOfBoundsException thrown: 4
|        at (#3:1)

jshell> String pagename = uri[uri.length-1];
pagename ==> "dash.xhtml"

jshell>