Primeiras aulas do curso Play! Framework I: Crie webapps de modo rápido de fácil!

Play! Framework I: Crie webapps de modo rápido de fácil!

Instalação - O Play! Framework

Meu nome é Marco e eu estou aqui para dar para vocês um curso sobre uma ferramenta para criação de sistemas web, o Play Framework, disponível aqui em playframework.com.

Ela é uma ferramenta com uma mesma função que o Spring e o VRaptor, já famosas no mercado, com alguns casos de usos interessantes. Como por exemplo, se dermos um scroll aqui até o fim, o LinkedIn, Klout, theguardian, Gilt e ZapTravel.

“Mas Marco, como funciona essa ferramenta, esse play?” O play é uma ferramenta criada para aumentar a produtividade e a velocidade no desenvolvimento, tendo algumas facilidades para agilizar todo processo de produção.

Como por exemplo, tem um console interno para gerenciamento do projeto, compilação automática e deploy do sistema. Tem um servidor web acoplado que permite maior performance e escalabilidade do sistema. Tem páginas de conteúdo dinâmico compiladas para reconhecimento de erros de lógica em tempo de compilação.

Tem uma ORM embutida chamada Ebean com um paradigma um pouco diferente do usual mas super poderosa, mas também tem suporte a Hibernate que é uma ferramenta um pouco mais usual para acesso a banco de dados. E tem uma curiosidade super interessante que é: O play não segue a especificação de servlets como fazem o Spring e o VRaptor.

E para que que vamos usar essa ferramenta? Nesse curso vamos criar uma loja virtual, como a Amazon, por exemplo, que permite que outros sites e sistemas consumam seus produtos através de um ponto de acesso, ou seja, uma API.

Instalação - Instalação e criação de um novo projeto

Na aula passada vimos o que que é o Play e demos uma pincelada em algumas das funcionalidades que ele tem.

Vamos botar a mão na massa agora e criar aquela nossa loja? Primeiro ponto é instalar o Activator, que é um gerenciador de projetos Play e para isso vamos vim aqui no site playframework.com/download, clicar nesse botão de Download Play.

No caso, eu já estou com ele aqui na minha máquina, eu já baixei, o arquivo está aqui. O que que fazemos a partir de agora? Vamos extrair esse arquivo zip aqui em uma pasta de projetos que eu tenho. Você pode criar uma pasta para os seus projetos Play e extrair o arquivo ali.

O comando em Linux e Mac é unzip e o nome do arquivo, se você estiver usando o Windows Power Shell você vai usar o expand-archive e definir um destination path, que é o local de destino onde o arquivo vai ser extraído.

Extraímos aqui, e temos agora a pasta do Activator. A partir daí o Activator já está instalado, para criar um projeto vamos rodar o Activator, que está dentro da pasta dele, “/bin/activator” e criar um novo projeto, “new” e o nome do projeto, no caso, vamos chamar nosso projeto de “produtos-API” já que vamos criar um ponto de acesso a nossa loja, aos nossos produtos.

Dá um Enter, ele vai baixar algumas dependências, como eu já fiz isso antes, ele passa direto pro próximo passo, que é o que? É uma tela onde você tem algumas opções para escolher, alguns templates de projetos possíveis. No caso, vamos fazer um projeto em Play e vamos usar linguagem Java, então é a opção 5, o Activator vai se encarregar de criar todos os arquivos do nosso projeto.

Se você listar os arquivos aqui agora temos a pasta do nosso projeto, produtos-api. Entrando nela com “cd”, conseguimos ver o que que o Activator gerou para o nosso projeto Play. No caso, ele tem algumas pastas importantes aqui, eu vou dar uma pincelada e depois voltamos nelas com mais detalhe em cada uma.

A pasta app é onde vai ficar todo o seu código fonte Java e HTML, todas as suas classes e todas as suas views, todas as suas páginas. A pasta conf vai ter as configurações do seu projeto, configuração de banco de dados, configuração de logs, entre outras coisas mais.

A pasta public, essa aqui, ela vai ter todos os seus arquivos de estilização como CSS, as imagens que vão ser disponíveis para qualquer usuário que não esteja logado, arquivos JavaScript, entre outras coisas.

Eu vou limpar aqui a tela, que que vamos fazer agora? Vamos subir o nosso projeto para ver o que tem nesse projeto base? Precisamos rodar o Activator aqui para ele abrir o nosso console de gerenciamento, que eu tinha falado antes. Onde está o Activator? Está na pasta anterior, então voltamos uma pasta e digita aqui “activator-1.3.10-minimal/bin/activator”, esse é o caminho do programa que temos.

Então, rodando isso, ele talvez baixe mais algumas dependências aqui. No caso, eu já fiz esse processo mais de uma vez, então ele também não vai baixar, ele só vai identificar que as dependências estão sendo baixadas. Quando ele terminar, ele vai mostrar um console com o nome do seu projeto e te permitir escrever, rodar comandos.

Esse é o console interno do Play, sempre que você conseguir ver o nome do seu projeto bonitinho, provavelmente você está dentro do console do Activator. E como eu faço para subir o projeto? O comando run, você está rodando o seu projeto, você está dando run nele, aperta Enter, ele vai ver se todas as suas dependências estão ok e vai mostrar essa mensagem de que o servidor está de pé.

Se você quiser sair do servidor, você aperta “Ctrl + D” e ele para o servidor, vamos subir o servidor de novo e ele sobe o servidor no localhost, na porta 9000. Vamos acessar para ver o que que tem lá? Acessamos aqui, primeira vez que ele acessa ele é um pouquinho devagar porque podemos ver aqui que no registro que ele está compilando as nossas classes.

E a compilação do Play é um pouquinho devagar, mas depois que ele compilou podemos ver aqui a nossa página. É uma página com uma mensagem de que sua aplicação nova está pronta e tem algumas dicas, ela diz que versão do Play você está usando, ela mostra o que tem no seu arquivo de rotas, na verdade ela te dá um exemplo de como configurar o seu arquivo de rotas, que vamos ver mais tarde. Os controladores também, vamos ver tudo isso depois.

Ela te diz também um pouco como configurar o seu banco de dados, vamos ver cada um desses pontos em mais detalhes mais para frente, por enquanto só quero configurar e rodar um novo projeto. Nós já conseguimos rodar, que que vamos usar para editar o projeto, para realmente criar cada um dos arquivos e classes e todo o projeto em si? Eu vou usar o Eclipse porque é uma IDE bem famosa no mercado que gera bastante produtividade.

Para fazer essa IDE funcionar, precisamos importar o projeto dentro dela, então eu estou com o Eclipse aqui aberto, eu vou tentar importar o nosso projeto aqui dentro, seria um projeto existente, vamos até a pasta onde ele está, no caso eu já estou aqui, na pasta produtos-api e abri.

Se existe um projeto, ele aparece aqui mas não apareceu nada. Não apareceu porque o projeto ainda não existe, o projeto em Play, ele é neutro e você pode configurar ele para Eclipse e para IntelliJ IDEA. Vamos configurar para Eclipse. Eu vou matar aqui o servidor, já vou sair do console também direto apertando “Ctrl + C” e limpar a nossa tela.

Para configurar o nosso projeto para rodar no Eclipse, nós primeiro precisamos adicionar um plugin no Play para falar que estamos usando o Eclipse e que ele precisa gerar os arquivos de projeto que vão permitir que importemos o nosso aplicativo no Eclipse para edição.

Vamos editar um arquivo chamado plugins.sbt, que gerencia todos os plugins que temos. Eu vou usar o editor Atom, você pode usar o editor de texto de sua preferência para editar esse arquivo, o arquivo fica na pasta project e chama plugins.sbt.

Eu vou abrir aqui o arquivo, ele tem já várias configurações de diversos plugins que o Play usa por default, por padrão e eu tenho uma colinha aqui do plugin novo que vamos inserir, que é o plugin do Play para relacionar ele ao Eclipse. Inserimos ele aqui na última linha, salva o arquivo, ok.

A partir daí, nós já conseguimos importar o projeto no Eclipse. Mas, ainda tem algumas coisas mais que eu quero fazer, que é preparar o projeto para toda vez que salvamos um arquivo no Eclipse, ele recompila todos os arquivos e atualiza o Eclipse, assim nós não precisamos ficar alternando entre o console e o próprio Eclipse para atualizar o nosso projeto.

Então vamos lá, vamos alterar agora o arquivo build.sbt, que está aqui na raiz do nosso projeto. Build.sbt, ele tem algumas configurações como nome do seu projeto, a versão dele e alguns plugins que vamos mexer mais para frente.

Ele também gerencia as dependências do nosso projeto, no caso ele está indicando que vamos usar uma JDBC Java, que temos sistema de cache, está usando a JavaWs.

Eu vou pegar aqui na minha cola também, são várias configurações do Eclipse para configurar o sistema de compilação e indicar que precisamos dos arquivos de projeto Eclipse e configurar novos sources, novas pastas de código fonte para o Eclipse. Então eu já posso fechar aqui, eu vou colar tudo isso aqui.

Não se preocupem, todo esse código vai estar disponível para vocês nas atividades, você também consegue achar ele no Google ou no próprio site do Play, você consegue achar esse código. Mas, eu estou aqui com a minha colinha porque eu não consegui decorar esse monte de coisa.

Vamos lá, vamos importar o nosso projeto, eu vou aqui rodar o Activator de novo. Ele vai baixar algumas dependenciaszinhas para poder rodar o projeto Eclipse.

Como é a primeira vez que fazemos isso, eu também vou indicar que ele precisa compilar o projeto uma vez, só para ele já ter todos os dados atualizados, todos os arquivos atualizados, compilados bonitinhos e quando ele gerar o projeto Eclipse, todo class path vai vim correto, vai vim configurado corretamente.

Então, o nosso gerenciador, para nós compilarmos o projeto é só falar para ele compile. Ele vai compilar todos os nossos arquivos e então usamos o comando eclipse e ele vai gerar todos os arquivos do nosso projeto Eclipse. Quando ele mostrar a mensagem de sucesso, você pode agora alternar aqui no Eclipse, pode dar um Refresh e agora temos o nosso projeto aqui, Finish e temos o nosso projeto aqui compilado sem nenhum erro de compilação.

Vamos tentar rodar o projeto de novo, run e vemos o projeto de pé de novo uma última vez antes de passar para o próximo passo.

Que que vimos nessa aula? Vimos como instalar o Activator, geramos um novo projeto Play, no caso geramos um projeto em Play usando Java, poderíamos ter usado Scala mas isso fica para outro curso. Demos uma olhada rapidíssima na estrutura de diretórios, quais são os diretórios mais importantes e subimos o nosso servidor pela primeira vez, viu como é a página básica e conseguimos também importar o projeto para o Eclipse.

Se formos olhar aqui, conseguimos abrir inclusive os nossos arquivos de configuração, dos quais eu vou falar mais tarde. E o próprio build.sbt, você consegue editar por aqui agora, não precisa mais ficar editando em um editor de texto externo.

Por hoje é só, na aula que vem, vamos começar realmente criar o nosso projeto, vai ver rotas, vai ver formulários HTML utilizando Scala, vamos ver o sistema de controllers, vamos começar a fazer tudo que precisamos para ter um projeto legal e um ponto de acesso para os nossos clientes.

Views, rotas, modelos e banco de dados - O formulário de Produto

Na última aula, vimos todo o processo de setup do nosso ambiente. Como instalar o Activator, como criar um projeto, como entrar naquele console e conseguir subir o servidor e como configurar tudo para rodar na IDE Eclipse.

Agora precisamos codar, fazer o nosso trabalho. Primeiro, vamos subir o servidor de novo. Eu vou subir aqui o nosso servidor e eu vou usar um comando do Activator que agiliza pra caramba o desenvolvimento, ele é o til (~) e junto com o comando run, ele faz com que cada vez que um arquivo for salvo, o Activator reconheça isso, identifique que o arquivo foi alterado e recompile esse arquivo alterado, depois ele atualiza o servidor e faz tudo isso sozinho.

Facilitando pra caramba a nossa vida porque nós não precisamos ficar parando servidor, recompilando todos os arquivos e subindo servidor de volta. Ele terminou de compilar aqui, eu vou só entrar no site para garantir que está tudo ok.

Vamos botar a mão na massa? Vamos fazer uma loja e para ter uma loja, precisamos ter produtos para vender, para ter produtos precisamos cadastrar eles e como se cadastra um produto? Usando um formulário.

Então, vamos fazer um formulário. Onde que fazemos esse formulário? Podemos criar uma página nova com um endereço novo, mas por enquanto vamos só substituir essa página que temos aqui, de boas vindas do Play. Ela é a raiz do nosso site e a maior parte dos sites usa a página raiz com o nome “index”, então vamos lá no Eclipse e vamos abrir a pasta app, que é aquela que eu falei que tem todo o nosso código, seja ele Java ou HTML e vamos aqui nesse pacote Views.

E, por acaso, eles também usam a palavra “index” para designar a página inicial, esse “index.scala.html”. Então vamos abrir esse arquivo e ver o que tem aqui. Tem um monte de comentários aqui, uns códigos em Scala e aqui tem um código em Scala com a mensagem “Welcome to Play”. É esse trecho aqui que interessa para nós, é ele que define o conteúdo do nosso site.

Então vamos alterar ele para criar um título aqui pro nosso produto. Vamos dizer que essa página, é uma página de cadastro de produto. Se eu vier aqui no terminal, ele diz que ele compilou mais uma fonte e que ele terminou com sucesso. Então agora podemos vim aqui, atualizar o site e ele já fez a alteração para nós.

Agora vamos fazer esse formulário. Vamos vim aqui no Eclipse e criar um formulário. Para onde que ele vai levar? Temos que criar uma ação para ele, então eu vou criar uma action e eu vou definir que ela vai acessar o endereço “/produto/novo” porque estamos criando um novo produto. Como é um formulário de cadastro, eu vou usar o método post por segurança.

Inserimos esse título dentro do formulário e vamos botar a mão na massa. Primeira coisa que um produto precisa ter, é um título, então vamos criar um campo input do tipo texto, “type=text” e que tenha o nome “titulo”, que é o nome da variável que vai ser enviada para onde quer que enviemos isso, para a url “/produto/novo”.

Temos o nosso campo, vamos dar uma olhada aqui no site, temos um campo mas, esse campo podia ser de qualquer coisa, ele deveria ter um rótulo. Vamos criar um rótulo? O rótulo é uma label para o campo título, só que pra essa relação, entre o campo título e o rótulo título funcionar, precisamos que o nosso campo tenha um id, id título, igual a esse campo “for” aqui, esse atributo for.

Agora nós já temos um campo com um rótulo assim que a página atualizar. Como funciona os rótulos? Se clicarmos no próprio rótulo, ele vai direto para o campo. Vamos precisar também do que? Todo produto deveria ter um identificador único, um código único. Então, vamos ter um código.

Os produtos da nossa loja também vão poder ter vários tipos diferentes como livros, e-books, camisetas, que nem nós temos na casa do código. Nós também vamos precisar ter uma descrição para que possamos dizer pro nosso usuário, pro nosso cliente o que que é aquele produto e claro, todo produto nós precisamos ter um preço.

Só que para não ficar fazendo toda a codificação aqui, eu tenho uma colinha e eu vou copiar aqui dela. Então ok, agora temos todos os nossos campos e temos também o nosso botão de enviar, que é um input do tipo submit.

Tem uma mudança que eu preciso fazer que é: A descrição, ela pode ser extensa, então o ideal é usar uma textarea aqui, aí ela não precisa ter o tipo texto e precisamos fechar essa tag porque toda text area tem um conteúdo definido dentro.

Vamos ver como é que ficou lá na página? Damos uma atualizada aqui e ok, temos um título, um código único, um tipo, uma descrição e um preço. Mas se preenchermos esse formulário, digamos, com, vou vender um Livro de Play, com código livro-play, com o tipo livro, a descrição “é um livro de Play” e preço 10 reais e eu vou cadastrar, só que, tomamos um erro na nossa cara.

Porque aquela rota /produto/novo, esse endereço, não existe no nosso servidor, no nosso sistema, então precisamos criar isso. E como criamos uma rota, um endereço novo? Existe aquela pasta dentro do nosso projeto que é a pasta conf, que eram os arquivos de configuração do projeto e também das nossas rotas.

Aqui dentro tem um arquivo chamado “rotas”, é ele que define todas as rotas, todos os endereços que o nosso site vai ter. No caso, eu vou apagar esses comentários para ficar um pouco mais legível. E, se você reparar, esse conteúdo que está aqui, é exatamente o conteúdo que é listado aqui. Então, se erramos um endereço, ele mostra para nós todos os endereços que estão disponíveis no nosso sistema, isso também é super legal.

Eu posso explicar aqui um pouquinho, o primeiro endereço é da home, aquela página inicial quando acessamos localhost, na porta 9000, sem nenhum subdiretório. Está usando o método get, que é para nós podermos acessar no nosso browser e ver conteúdo. E está mapeada para esse objeto Java aqui, que no caso é um controller chamado HomeController, está no pacote controllers chamando HomeController com o método index.

Então, o método Index, do objeto HomeController, que está no pacote controllers é referente a rota raiz. Vamos dar uma olhada nisso? Aqui temos o pacote controllers e o HomeController e procuramos o método index e vê o retorno dele, o retorno é um resultado, é o que queremos devolver pro nosso usuário.

E o que que é esse resultado? É um tipo de resposta HTML, que pode ter qualquer um dos códigos HTTP como 200 para ok, 301 para redirect e 400 para uma requisição inadequada. No caso, estamos retornando um ok, que é o código 200 e renderizando a página index com essa mensagem aqui.

O que queremos em seguida é criar uma rota própria nossa. Então, vamos apagar essas duas rotas aqui que nós não vamos ver nesse curso e vamos criar uma nova. Ela era um post e tínhamos mapeado ela para “produto/novo”.

E onde queremos mapear ela? Toda lógica de produtos, faz sentido estar em um controlador de produtos, ou seja, no pacote controllers, no controlador de produtos, ou ProdutoController e criamos um método para salvar um novo produto, podemos chamar de salvaNovoProduto.

Já temos uma nova rota e o Play já identifica isso, tanto é que se viermos aqui no terminal, ele lançou uma exceção porque a rota existe, ele sabe disso, mas ele não conseguiu encontrar o nosso controller, então o próximo passo é criar o controller e criar o método salvaNovoProduto.

Então vamos lá, vamos aqui no pacote controllers e cria uma nova classe. A classe vai chamar ProdutoController e ela vai estender o objeto do tipo controller do Play MVC para ele conseguir identificar automaticamente as nossas rotas e saber mapear os endereços com elas.

Eu vou alterar isso aqui para asterisco porque vamos importar várias coisas daqui, vamos criar um método, como é que era o método? Era um método público que retorna um resultado e o nome do método era salvaNovoProduto, eu vou copiar aqui e colar para garantir que não vou ter nenhum erro e que que ele vai retornar? Por enquanto podemos só retornar uma mensagem ok, falando que o formulário foi recebido.

Parece ok, fizemos todos os passos, vamos aqui no terminal, ele fala que ele conseguiu compilar com sucesso, então vamos tentar enviar o formulário de novo. Eu vou voltar aqui e tentar cadastrar o mesmo produto novamente, tentando cadastrar, ele vai mandar a nossa mensagem de que o formulário foi recebido.

Mas a lógica do formulário em si também faz parte da criação de um produto, então podemos alterar ela e levar ela pro controller de produtos. Vamos fazer isso? Nós primeiro podemos renomear o nosso arquivo index para fazer um pouco mais de sentido, vamos renomear ele para, digamos, ”formularioDeNovoProduto” porque é exatamente isso que ele é, um formulário de novo produto, eu vou até copiar isso aqui.

Temos o nosso formulário, agora podemos criar um método aqui no nosso ProdutoController que mostre esse formulário mas, para isso, precisamos antes do que? De uma rota. Então vamos no arquivo de rotas antes, vamos criar uma nova rota, uma nova entrada nesse arquivo que seja um get, o endereço pode ser produto novo também porque daí conseguimos deixar isso um pouco mais fluido pro usuário mais pra frente.

Só que o método não pode ser o mesmo, então vamos aqui alterar para formularioDeNovoProduto, que é o nome do nosso método, eu vou copiar isso aqui e vamos criar o nosso método.

Agora a nossa compilação está com erro porque o método ainda não existe. Então vamos lá, “public Result formularioDeNovoProduto” e ele vai retornar, o que que ele vai retornar? Ele tem que renderizar aquela view lá, então vamos importar o pacote views.html, que é onde ficam todas as nossas views, vou importar todas elas e aqui vamos retornar uma mensagem de ok.

A view também chama formularioDeNovoProduto e queremos renderizar ela, só que, se você lembra, aqui no HomeController, ela recebe uma mensagem, então vamos escrever uma mensagem qualquer aqui por enquanto. Ela vai receber a mensagem “Formulário de novo produto” ou “Cadastro de produto”.

Aqui ainda está dando erro mas, se você vier aqui no terminal, ele mostra que ele conseguiu compilar com sucesso, isso pode acontecer de vez em quando, depois que ele termina de compilar, se você vier aqui e atualizar o seu projeto, esses erros tendem a sumir. Isso é bem comum, tem alguma discrepância entre o tempo de atualização do Eclipse com o Activator e acabamos perdendo essa agilidade.

Mas parece que está tudo funcionando, não, olha só, tem um erro de compilação aqui do HomeController, por que? Vamos ver, ele está dizendo que ele não acha o index porque apagamos esse arquivo, mas nós não vamos mais usar o HomeController, então podemos só apagar ele inteiro, vou lá, apago o HomeController, como nós não vamos usar esses dois outros aqui também, vou apagar eles.

E para não ter problemas, como nós não vamos entrar no mérito dos testes aqui nesse projeto, apagamos os pacotes de testes também. Em um próximo curso falamos de como funcionam os testes em Play.

Depois de apagar todos esses arquivos, nós ainda temos uma última coisa a fazer, que é entrar aqui nas rotas e apagar essa rota do HomeController porque afinal ele não existe mais, então se ele continuar aqui, vamos tomar um erro na cara. Agora deve estar tudo certo.

Vamos vir aqui no terminal, ele compilou tudo com sucesso, então entramos aqui e se tentarmos entrar na nossa home de novo, ela não existe mais, as únicas rotas que existem são as produto/novo e essa rota aqui representa os arquivos públicos, daquela pasta public que eu falei anteriormente.

Então vamos acessar a página produto/novo e ela representa agora o nosso formulário. No próximo vídeo vamos dar uma olhada em como retirar os dados desse formulário, transformar em um modelo e salvar no banco.

Sobre o curso Play! Framework I: Crie webapps de modo rápido de fácil!

O curso Play! Framework I: Crie webapps de modo rápido de fácil! possui 143 minutos de vídeos, em um total de 52 atividades. Gostou? Conheça nossos outros cursos de Java em Programação, ou leia nossos artigos de Programação.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda Java acessando integralmente esse e outros cursos, comece hoje!

  • 1184 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

Premium

  • 1184 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$75
à vista R$900
Matricule-se

Premium Plus

  • 1184 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$100
à vista R$1.200
Matricule-se

Max

  • 1184 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$120
à vista R$1.440
Matricule-se
Procurando planos para empresas?
Acesso por 1 ano
Estude 24h/dia onde e quando quiser
Novos cursos toda semana