Repositorio dos conteúdos abordados durante o curso IMERSÃO JAVA 2 da Alura entre os dias 27/03/23 à 31/03/23.
Aula 01 - Consumindo uma API de filmes com Java
Aula 02 - Gerando figurinhas para WhatsApp
Aula 03 - Ligando as pontas, refatoração e orientação a objetos
Aula 04 - Criando nossa própria API com Spring
Aula 05 - Publicando nossa API no Cloud
Nesta primeira aula, vamos construir uma aplicação do zero para consumir a API do IMDb e exibir os filmes mais populares, destacando seus pôsteres e visualizando sua classificação sem usar nenhuma biblioteca externa.
Referência: Os 250 melhores filmes de acordo com a classificação do IMDB
Documentação da API do IMDB.
Documentação da classe HttpRequest do pacote java.net.http
Classe pronta que utiliza Expressões Regulares para fazer parse de um JSON
Biblioteca Jackson, que faz parse de JSON
Site que ajuda a entender Expressões Regulares
Artigo: O que é JSON?
Artigo: Decore o terminal com cores e emojis
- ✅ –– Consumir o endpoint de filmes mais populares da API do IMDB.
Procure também, na documentação da API do IMDB, o endpoint que retorna as melhores séries e o que retorna as séries mais populares. - ✅ –– Usar sua criatividade para deixar a saída dos dados mais bonitinha: usar emojis com código UTF-8, mostrar a nota do filme como estrelinhas, decorar o terminal com cores, negrito e itálico usando códigos ANSI, e mais!
- ⛔ –– Colocar a chave da API do IMDB em algum lugar fora do código como um arquivo de configuração (p. ex, um arquivo .properties) ou uma variável de ambiente.
Caso a API do IMDb esteja instável ou fora do ar, você pode utilizar os seguintes endereços alternativos:
https://raw.githubusercontent.com/alura-cursos/imersao-java-2-api/main/TopMovies.json https://raw.githubusercontent.com/alura-cursos/imersao-java-2-api/main/TopTVs.json https://raw.githubusercontent.com/alura-cursos/imersao-java-2-api/main/MostPopularMovies.json https://raw.githubusercontent.com/alura-cursos/imersao-java-2-api/main/MostPopularTVs.json
Nesta segunda aula vamos criar um gerador de figurinhas explorando outras bibliotecas nativas do Java, para que possamos enviar por Whatsapp os nossos filmes preferidos.
Documentação javax.imageio
Documentação BufferedImage
Documentação classe Graphics2D
Documentação InputStream
Java Polimorfismo: entenda herança e interfaces
Java e Orientação a Objetos
- ✅ –– Criar diretório de saída das imagens, se ainda não existir.
- ✅ –– Centralizar o texto na figurinha.
- ✅ –– Colocar outra fonte como a Comic Sans ou a Impact.
- ✅ –– Colocar contorno (outline) no texto da imagem.
- ✅ –– Colocar uma imagem de você que está fazendo esse curso sorrindo, fazendo joinha e fazer com que o texto da figurinha seja personalizado de acordo com as classificações do IMDB.
Observação: Substitui a foto por emojis. - ✅ –– DESAFIO PESSOAL –– Adicionar função de redimencionar as imagens antes de gerar os stickers para padronizar o resultado.
Chegou o momento de pegarmos os filmes do IMDb e gerar figurinhas com os pôsteres, aproveitando para melhorar nosso código com as refatorações necessárias para torná-lo mais flexível e fácil de entender.
Observação: Os conteúdos das aulas 01 e 02 foram movidas para a pasta discontinued para servir de referencia e não se misturar com os novos códigos da refatoração.
Documentação APIs da NASA
API da Foto Astronômica do dia da NASA
Artigo: Como não aprender Java e Orientação a Objetos: getters e setters
Livro: Design Patterns
Livro: Refactoring
Artigo: Como não aprender Java e Orientação a Objetos: herança
Podcast Hipsters.tech Práticas de Orientação a Objetos
Podcast Hipsters.tech Design Patterns
Podcast Hipsters.tech SOLID
Livro: Desbravando SOLID
- ✅ –– Transformar a classe que representa os conteúdos em um Record, disponível a partir do Java 16.
- ✅ –– Criar as suas próprias exceções e usá-las na classe que implementa o cliente HTTP.
- ✅ –– Usar recursos do Java 8 e posterior, como Streams e Lambdas, para mapear uma lista em uma outra.
- ✅ –– Criar uma Enum que une, como configurações, a URL da API e o extrator utilizado.
Caso a API da NASA fique instável, use as seguintes URLs, que terão os mesmos dados usados na aula:
https://raw.githubusercontent.com/alura-cursos/imersao-java-2-api/main/NASA-APOD.json
Além disso, deixamos uma URLs com imagens fantásticas do James Webb Space Telescope, como o primeiro deep field desse fantástico telescópio!
Agora vamos construir uma API REST para expor nosso próprio conteúdo, utilizando ferramentas profissionais como o Spring Framework e um banco de dados NoSQL.
Documentação Spring Framework
Spring Initializr
Download Maven
Download Postman
Registro MongoDb Atlas
GitHub: Logos das linguagens de programação
Artigo: Pack de stickers da Alura para Whatsapp e Telegram
Maven: gerenciamento de dependências e build de aplicações Java
O que é REST?
Introdução ao Postman
Podcast Hipsters.Tech MongoDB
Hipters.Tube O que é SQL e NoSQL?
Artigo: Conceito e fundamentos sobre REST
Artigo: Spring: Conheça esse framework Java
- ✅ –– Finalizar o CRUD (Create, Read, Update e Delete) para que se possa atualizar e excluir uma linguagem cadastrada.
- ⛔ –– Devolver a listagem ordenada pelo ranking.
- ✅ –– Retornar o status 201 quando um recurso (linguagem, no nosso caso) for cadastrado através do POST.
Link para o repositório da aplicação
Para fechar com chave de ouro, vamos tornar nossa aplicação acessível por qualquer pessoa, fazendo o deploy na nuvem. Além disso, vamos gerar figurinhas a partir do conteúdo dessa nossa API.
Documentação Docker - Plataforma de containers utilizada para construir a imagem cujo deploy foi feito no Fly.io.
Docker Hub - Repositório central de imagens que podem ser usadas para executar containers de diferentes tecnologias e ferramentas.
Fly.io - PaaS (plataforma como serviço) utilizado nesta segunda edição da Imersão Java. Requer cartão de crédito. É fundamental entender a precificação e as quotas gratuitas.
Heroku - PaaS utilizado na primeira edição da Imersão Java. É importante entender a precificação do Heroku.
Documentação Oracle Cloud
Artigo: Como elaborar um bom arquivo Readme para os seus projetos
Dev em T: especialista x generalista
Artigo: Começando com Docker
Artigo: Heroku, Vercel e outras opções de Cloud como plataforma
Podcast Hipters.Tech Integração Contínua, Deploy Contínuo e Github Actions
Pesquisa da JetBrains, sobre o ecossistema Java em 2021
Para que você não precise instalar o Docker, criar um Dockerfile e fazer o build de uma imagem Docker com sua aplicação na sua própria máquina, disponibilizamos a imagem gerada na aula no seguinte link: https://hub.docker.com/repositories/jacquelineoliveira
O deploy no Fly.io pode ser feito com os seguintes passos:
- Instale o comando flyctl na sua máquina
- Em um Terminal, execute o comando: flyctl launch --image jacquelineoliveira/linguagensapi:latest
- Configure o endereço do seu MongoDB com o comando: flyctl secrets set "SPRING_DATA_MONGODB_URI=mongodb+srv://seuusuario:suasenha@clusterAbc.xvcnx.mongodb.net/aluraDb?retryWrites=true&w=majority" (não deixe de definir o usuário e senha corretos)