• Home

    Escolha seu Plano

    Carreiras Alura

    Evolua com profundidade técnica, direção clara e aplicação prática.

    Jornadas guiadas do básico ao avançado com checkpoints práticos, desenhadas para quem busca profundidade e protagonismo técnico.

    Iniciante

    Comece do zero com uma trilha clara e progressiva.

    Fundamentos práticos para dar os primeiros passos com segurança e construir uma base sólida.

    Intermediário

    Continue sua evolução com cursos que conectam fundamentos, ferramentas e prática profissional. Ganhe autonomia, e avance para projetos mais completos.

    Avançado

    Aprofunde temas técnicos e estratégicos para enfrentar desafios mais complexos. Explore boas práticas, arquitetura, performance com visão profissional.

    Cursos

    Ver mais cursos de Back-end
    • Pensamento computacional: fundamentos da computação e lógica de programação
    • Lógica de programação: mergulhe em programação com JavaScript
    • DDD: fundamentos do design orientado a domínio
    • ASP.NET: autenticação e autorização em APIs e aplicações web
    • Microsserviços: migração de monólitos e modularização

    Cursos

    Ver mais cursos de Dados
    • Python para Dados: primeiros passos
    • Excel: domine o editor de planilhas
    • Engenharia de Dados: Orquestração de Pipelines com Apache Airflow
    • Power BI Desktop: construindo meu primeiro dashboard
    • Governança e Arquitetura de Dados

    Cursos

    Ver mais cursos de Inteligência Artificial
    • IA: Explorando o Potencial da Inteligência Artificial Generativa
    • Engenharia de Prompt: Criando Prompts Eficazes para IA Generativa
    • Claude para Análise de Dados: prompts, integrações e automações
    • Agno: criando agentes e sistemas multiagente
    • Engenharia de software na era da IA: segurança de aplicações com agentes, MCPs e código gerado por IA

    Cursos

    Ver mais cursos de Front-end
    • HTML e CSS: ambiente, estrutura e estilo
    • React: realizando testes avançados com Jest e Testing Library
    • React: integrando TypeScript em projetos
    • JavaScript: aprendendo a programar
    • React: aplicando arquiteturas de Micro frontends

    Cursos

    Ver mais cursos de DevOps
    • Sistema Operacional Linux: fundamentos e administração prática
    • Containers e Docker: empacotamento, isolamento e gestão
    • Redes: dos conceitos iniciais à criação de uma intranet
    • Linux: gerenciando diretórios, arquivos, permissões e processos
    • Cibersegurança: Fundamentos e práticas integradas

    Cursos

    Ver mais cursos de UX & Design
    • UX Research: mapeando a experiência da pessoa usuária
    • UX/UI Design: Entregando produtos digitais com IA
    • UI Design: Prototipação e animações interativas
    • Figma: Conhecendo o programa
    • Product Design: métricas e ciclo de vida do produto

    Cursos

    Ver mais cursos de Gestão & Negócios
    • Canva: Criação de landing pages e e-mail marketing
    • Agilidade: como ela pode ajudar a criar um time de alta performance
    • Google Analytics 4: Extrair insights e configurar eventos
    • Management 3.0: gerencie o ambiente, não as pessoas
    • Automação de processos com n8n: Inteligência de dados para Marketing

    Cursos

    Ver mais cursos de Mobile
    • React Native: Estilização e Layouts com Flexbox e StyleSheet
    • Flutter: Graphql e suporte offline
    • Android com Gemini: Trabalhando com textos e imagens na IA
    • Dart: trabalhando com orientação a objetos
    • React Native: Dominando Listas com FlatList e ScrollView

    Carreiras

    Ver mais carreiras
    • Especialista em IA
    • Engenharia de IA
    • Ai native software engineering
    • Arquitetura de Soluções com IA
    • AI Product Design
    • Engenharia de Machine Learning
    • Desenvolvimento Front-End React
    • Engenharia de Dados
    • Cloud Security
    • Social Media Marketing
    • Engenharia de Agentes de IA

    Cursos

    • Engenharia de Prompt: Prompts Eficazes para IA Generativa
    • Claude Code: Criando sua Primeira Aplicação
    • Python: Crie sua Primeira Aplicação
    • Git e GitHub: Compartilhando e Colaborando
    • N8N: Fluxos de Trabalho Avançados

    Cursos

    • Copilot Studio: Solução Multiagentes
    • Padrões de API HTTP e Modelagem de APIs
    • Python para Análise de Dados com SQL
    • Docker: Criando e Gerenciando Containers
    • Design com IA: Otimizando o Processo Criativo

    Cursos

    • Model Context Protocol (MCP)
    • Spec-Driven Development: Dev Assistido por Agentes
    • Arquitetura de Sistemas Distribuídos com Java
    • Governança de Modelos e Reprodutibilidade
    • Pentest: Vulnerabilidades em Aplicações Web

    Escolha seu Plano

    Skills & Go

    O Skills & Go é para Tech Leads, Product Managers, estrategistas e early adopters que transformam ideias em soluções de alto impacto. Em cursos ao vivo e 100% online, você domina a nova era da IA em tempo real.

    Aulas ao vivo

    Saiba mais
    • Agentic Engineering: orquestre múltiplos agentes com confiabilidade
    • Building AI Products: transforme ideias em produtos reais com IA
    • AI Data Strategy: transforme dados em decisões estratégicas com IA

    Escolha seu Plano

    Eventos Alura

    Nossos eventos são pensados para quem quer estar à frente das mudanças em tecnologia, IA e inovação. Em experiências presenciais, você acompanha tendências e se conecta com especialistas que estão moldando o futuro.

    Próximos eventos

    • Imersão Engenharia de Software: Dev na Era da IA
    • IA Conference
    • Alura Signals
  • Talent Lab
  • IA

    Escolha seu Plano

    Conteúdos gratuitos

    Explore conteúdos gratuitos para aprender tecnologia no seu ritmo. Encontre artigos com conteúdos técnicos para aprender na prática, notícias para acompanhar as principais tendências do mercado e o Alura Labs, com análises e reflexões de especialistas sobre tecnologia, IA e carreira.

    Conteúdos gratuitos

    • Artigos
    • Notícias
    • Alura Labs
  • Para Empresas
Ver planos
Links principais
  • Planos e Promoções
  • Links complementares do menu mobile
  • Talent lab
  • Inteligência Artificial
  • Pós Graduações
  • Para Empresas
  • Sobre a Alura
  • Grupo Alun
  • Entrar
    • Home
    • Carreiras
    • Skills & Go
    • Talent Lab
    • Inteligência Artificial
    • Pós Graduações
    • Artigos
    • Sobre a Alura
    • Grupo Alun
    LoginContato
    • LinkedIn
    • Instagram
    • YouTube
    1. Página inicial
    2. Back-end
    3. Java 9 na prática: REPL

    Java 9 na prática: REPL

    7 min7 minutos de leitura

    7 min7 minutos de leitura

    Publicado: 05/04/2016

    1. Introdução
    2. Read-Eval-Print-Loop (REPL)
    3. Instalando o último build do JDK 9
    4. Download e execução do REPL
    5. Uma nova forma de experimentar código em Java
    6. Com ou sem ponto e vírgula?
    7. Trabalhando com variáveis temporárias
    8. Apagando e editando variáveis
    9. Explorando as APIs do Java
    10. Declarando métodos e classes
    11. E quanto aos imports?
    12. Acompanhando as novidades do Java 9

    Introdução

    Estamos acompanhado de perto as novidades do Java 9 e desde já testando cada uma das muitas propostas (JEPs) que já foram aceitas e integradas em seus builds mais recentes. O release final deverá acontecer apenas em março de 2017, mas a fase em que todas as features deverão estar completas está próxima: faltam apenas dois meses!

    Este será o primeiro post de uma série que te possibilitará acompanhar toda a evolução da nova versão da linguagem até o seu tão esperado lançamento oficial. A decisão de qual recurso mostrar nesse primeiro post não foi fácil, são muitas novidades interessantes, mas convenientemente uma delas nos ajudará a testar grande parte das demais: o REPL.

    Banner do Guia Tático Alura sobre carreira em tecnologia, destacando o mapa da carreira tech. A imagem convida a explorar diferentes caminhos profissionais, comparar possibilidades e encontrar a próxima fase da carreira na área de tecnologia, com chamada “Explore o mapa”.

    Read-Eval-Print-Loop (REPL)

    Se você já programa em linguagens como Scala, Ruby, Swift e JavaScript entre tantas outras, possivelmente já brincou com algum tipo de REPL. Essa ferramenta nada mais é do que um ambiente simples e interativo onde você pode facilmente executar códigos, oferecendo uma forma bastante efetiva de experimentar novos recursos e APIs.

    Vale a pena ler esse trecho presente na motivação do proposta:

    Exploration of coding options is also important for developers prototyping code or investigating a new API. Interactive evaluation is vastly more efficient in this regard than edit/compile/execute and System.out.println. Without the ceremony of class Foo { public static void main(String[] args) { ... } }, learning and exploration is streamlined.

    Instalando o último build do JDK 9

    Antes de mais nada você precisará instalar um build recente do JDK 9 para testar o conteúdo desse e dos futuros posts. O processo não é trabalhoso, eu recomendo bastante que você não fique apenas na teoria. Além disso, novas versões estão sempre disponíveis, não deixe de atualizar sempre que for experimentar um novo recurso.

    Você encontra o ultimo build do JDK 9 aqui e, após fazer download, basta apontar seu JAVA_HOME para essa instalação e usar o comando java -version pra confirmar que o processo deu certo.

    Download e execução do REPL

    Feito isso, você já poderá baixar a implementação de REPL do Java 9, que é conhecida como Kulla (aka JShell). Há sempre a opção de clonar o repositório Mercurial do projeto, compilar e buildar manualmente, mas você não precisa fazer nada disso. Para testar, basta baixar o JAR disponível nessa instância do Cloudbees do AdoptOpenJDK.

    Tudo pronto, java -jar nele e você já estará usando o REPL. O build usado nesse post foi o kulla--20160126010041.jar, caso você queira usar a mesma versão.

     Turini $ java -jar kulla--20160126010041.jar
    | Welcome to JShell -- Version 9-ea | Type /help for help 
    

    Uma nova forma de experimentar código em Java

    Chegou a hora de colocar as mãos na massa, mas aqui vai um aviso: isso é viciante. Eu não passo um dia sem usar o REPL desde que instalei ele aqui pela primeira vez, e estou falando de experimentar código do dia a dia, não só dos novos recursos da linguagem.

    Podemos começar criando uma nova variável chamada valor, que guardará um inteiro:

     int valor = 100; | Added variable valor of type int with initial value 100 
    

    Repare que há um feedback para todas as suas ações. Você pode desativá-lo com o comando /feedback off, mas eu pessoalmente gosto. Digite /feedback e pressione o tab pra ver as demais opções. Não deixe de usar o tab (autocomplete) sempre que for usar um comando novo pra ver todas as suas possibilidades.

    Com ou sem ponto e vírgula?

    Ah, sabe o ponto e vírgula clássico do final da linha? No REPL é opcional:

     int valor = 100 | Modified variable valor of type int with initial value 100 
    

    É um tanto conveniente, mas eu sinceramente ainda não me acostumei.

    Trabalhando com variáveis temporárias

    E tem mais! Você também não precisa declarar o tipo das variáveis:

     semTipo = 100 | Error: | cannot find symbol | symbol: variable semTipo | semTipo = 100 | ^-----^ 
    

    Ops, precisa sim! Esse foi só um exemplo pra você ver a saída de um comando inválido. Por outro lado, se você não declarar o nome da variável, o comando será aceito. Experimente digitar apenas o número 100, ou ainda fazer alguma operação matemática sem declarar o tipo e variável de retorno:

     valor / 3 | Expression value is: 33 | assigned to temporary variable $3 of type int 
    

    O resultado da expressão foi salvo em uma variável temporária, nesse caso chamada $3. Veja que o feedback nos avisou o nome da variável e também o seu tipo. Se quiser testar, você pode fazer um sysout na nova variável:

     System.out.println($3) 33 
    

    Legal, não é? Você também pode usar o comando /vars pra visualizar todas as variáveis disponíveis, incluindo as temporárias:

     /vars | int valor = 100 | int $3 = 33 | double pi = 3.141592653589793 
    

    Apagando e editando variáveis

    Quer apagar alguma delas? Use o /drop com o ID ou nome da variável:

     /drop pi 
    

    Ou se preferir, você também pode editá-la com o comando /edit.

    Screen Shot 2016-03-29 at 00.35.22

    Ouch, que editor é esse? Se você é dos meus, vai preferir fazer isso no melhor editor do mundo: o VIM. O comando /seteditor te ajudará com isso:

     /seteditor vim | Editor set to: vim 
    

    Explorando as APIs do Java

    Lembre que você está em um ambiente Java, você pode usar qualquer classe da API. Ah, e você pode sempre usar o TAB como atalho para autocompletar. Na classe Math, por exemplo:

    Screen Shot 2016-03-29 at 01.02.16

    Experimente chamar algum de seus métodos:

     Math.random() | Expression value is: 0.12308153862256899 | assigned to temporary variable $6 of type double 
    

    Declarando métodos e classes

    O JSheel vai bem além das variáveis e evaluações simples, você também pode criar métodos ou mesmo classes. Lembra do clássico desafio da sequência de fibonacci? Que tal resolvê-lo assim:

     long fibonacci(int n) { if(n<2) return n; return fibonacci(n-1) + fibonacci(n-2); } | Added method fibonacci(int) 
    

    Vamos ver se eu acertei na lógica? Posso fazer um for de 0 a 4 imprimindo a saída:

     for(int i=0; i<5; i++) System.out.println(fibonacci(i)) 0 1 1 2 3 
    

    Também poderíamos ter criado uma classe Fibonacci com esse método dentro, mas criei fora de uma classe justamente pra demonstrar que isso é aceito. Você pode usar os comandos /methods e /classes para listar todos os métodos e classes disponíveis. O /drop e /edit também funcionam pra deletar e editar as classes e métodos.

    E quanto aos imports?

    E se no lugar do for clássico eu quisesse usar a API de Streams do Java 8 para iterar e imprimir a sequência de Fibonacci? Não tem erro, basta digitar Stream e ops...

     Stream.of(1,2,3,4) | Error: | cannot find symbol | symbol: variable Stream | Stream.of(1,2,3,4) | ^----^ 
    

    Eu preciso importar essa API! Até agora não tinhamos precisado importar nada, já que só usamos classes e métodos disponíveis nos imports default. Você pode usar o comando /imports pra ver o que já está disponível. Para usar a API de Streams, basta importá-la:

     import java.util.stream.\* 
    

    Perfeito, já podemos usar suas classes a vontade:

     Stream.of(1,2,3,4).map(i -> fibonacci(i)).forEach(System.out::println) 1 1 2 3 
    

    Experimente também usar o /help para ver uma lista com todos os comandos disponíveis.

    Acompanhando as novidades do Java 9

    Vamos sempre postar novidades da nova versão da linguagem aqui e no blog do Alura. A lista de discussão do Java 9 está bastante movimentada, não deixe de passear por lá. Se você ainda não conhece Java 8, vai gostar de ver esse curso do Alura e também nosso curso de Arquitetura da Caelum.

    E você, o que achou do REPL? Tenho a impressão que será bastante usado em nosso dia a dia e também nas salas de aula. O que você acha?

    Banner do Guia Tático Alura sobre carreira em tecnologia, destacando o mapa da carreira tech. A imagem convida a explorar diferentes caminhos profissionais, comparar possibilidades e encontrar a próxima fase da carreira na área de tecnologia, com chamada “Explore o mapa”.

    Avalie este artigo

    • Foto de rodrigo.turini

      Autor(a)

      rodrigo.turini

    Explore por tópico

    • Back-end
    • Dados
    • DevOps
    • Front-end
    • Gestão & Negócios
    • Institucionais
    • Inteligência Artificial
    • Mobile
    • UX & Design

    Leia também

    • 23/05/2020

      Sistemas de Informação: o que faz, como é a faculdade e como se especializar neste mercado?

      Ler mais
    • 28/03/2011

      As três principais teclas de atalho do Eclipse

      Ler mais
    • 11/12/2022

      O que são Cookies na Internet e como eles funcionam?

      Ler mais
    Ver mais conteúdos

    Inscreva-se em nossa Newsletter

    Fique por dentro de conteúdos, insights e oportunidades do universo tech. Receba novidades e lançamentos direto no seu e-mail.

    Institucional

    • Sobre nós
    • Trabalhe Conosco
    • Para Empresas
    • Para Escolas
    • Política de Privacidade
    • Compromisso de Integridade
    • Termos de Uso
    • Canal de Ética
    • Código de Ética
    • Fale Conosco
    • Documentos Institucionais
    • Status
    Institucional
    • Sobre nós
    • Trabalhe Conosco
    • Para Empresas
    • Para Escolas
    • Política de Privacidade
    • Compromisso de Integridade
    • Termos de Uso
    • Canal de Ética
    • Código de Ética
    • Fale Conosco
    • Documentos Institucionais
    • Status

    A Alura

    • Como Funciona
    • Inteligência Artificial
    • Plataforma
    • Depoimentos
    • Instrutores(as)
    • Dev em <T>
    • Luri, a Inteligência Artificial da Alura
    • IA Conference
    • Cursos Imersivos
    • Perguntas Frequentes
    A Alura
    • Como Funciona
    • Inteligência Artificial
    • Plataforma
    • Depoimentos
    • Instrutores(as)
    • Dev em <T>
    • Luri, a Inteligência Artificial da Alura
    • IA Conference
    • Cursos Imersivos
    • Perguntas Frequentes

    Conteúdos

    • Alura Cases
    • Imersão Engenharia de Software: Dev na Era da IA
    • Artigos
    • Podcasts
    • Artigos de educação corporativa
    Conteúdos
    • Alura Cases
    • Imersão Engenharia de Software: Dev na Era da IA
    • Artigos
    • Podcasts
    • Artigos de educação corporativa
    Uma Empresa do GrupoLogo Grupo Alun

    Outras empresas do Grupo Alun

    • FIAP
    • STARTSE
    • PM3
    • LUMINA

    Ao submeter seu e-mail, você concorda com a política de privacidade da Alura.

    Redes Sociais & Apps

    instagram
    youtube
    tiktok
    x
    appStore
    googlePlay
    Uma Empresa do GrupoLogo Grupo Alun

    Outras empresas do Grupo Alun

    • FIAP
    • STARTSE
    • PM3
    • LUMINA

    Ao submeter seu e-mail, você concorda com a política de privacidade da Alura.

    Redes Sociais & Apps

    instagram
    youtube
    tiktok
    x
    appStore
    googlePlay
    Alura