Skip to content

jaohab/alura-imersao-java-2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 

Repository files navigation

IMERSÃO JAVA - Alura

Repositorio dos conteúdos abordados durante o curso IMERSÃO JAVA 2 da Alura entre os dias 27/03/23 à 31/03/23.


⚪ Conteúdo


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


⚪ Descrição


Aula 01 - Consumindo uma API de filmes com Java

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.

Links - 01

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

Material complementar - 01

Artigo: O que é JSON?
Artigo: Decore o terminal com cores e emojis

Desafios desta aula - 01

  1. –– 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.
  2. –– 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!
  3. –– 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.

Instabilidade da API do IMDb

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

Resultado do Desafio - 01

Resultado Aula 1


 


Aula 02 - Gerando figurinhas para WhatsApp

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.

Links - 02

Documentação javax.imageio
Documentação BufferedImage
Documentação classe Graphics2D
Documentação InputStream

Material complementar - 02

Java Polimorfismo: entenda herança e interfaces
Java e Orientação a Objetos

Desafios desta aula - 02

  1. –– Criar diretório de saída das imagens, se ainda não existir.
  2. –– Centralizar o texto na figurinha.
  3. –– Colocar outra fonte como a Comic Sans ou a Impact.
  4. –– Colocar contorno (outline) no texto da imagem.
  5. –– 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.
  6. –– DESAFIO PESSOAL –– Adicionar função de redimencionar as imagens antes de gerar os stickers para padronizar o resultado.

Resultado do Desafio - 02

Resultado Aula 2


 


Aula 03 - Ligando as pontas, refatoração e orientação a objetos

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.

Links - 03

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

Material complementar - 03

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

Desafios desta aula - 03

  1. –– Transformar a classe que representa os conteúdos em um Record, disponível a partir do Java 16.
  2. –– Criar as suas próprias exceções e usá-las na classe que implementa o cliente HTTP.
  3. –– Usar recursos do Java 8 e posterior, como Streams e Lambdas, para mapear uma lista em uma outra.
  4. –– Criar uma Enum que une, como configurações, a URL da API e o extrator utilizado.

Instabilidade da API da NASA

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!

https://raw.githubusercontent.com/alura-cursos/imersao-java-2-api/main/NASA-APOD-JamesWebbSpaceTelescope.json

Resultado do Desafio - 03


 


Aula 04 - Criando nossa própria API com Spring

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.

Links - 04

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

Material complementar - 04

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

Desafios desta aula - 04

  1. –– Finalizar o CRUD (Create, Read, Update e Delete) para que se possa atualizar e excluir uma linguagem cadastrada.
  2. –– Devolver a listagem ordenada pelo ranking.
  3. –– Retornar o status 201 quando um recurso (linguagem, no nosso caso) for cadastrado através do POST.

Resultado do Desafio - 04

Link para o repositório da aplicação


 


Aula 05 - Publicando nossa API no Cloud

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.

Links - 05

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

Material complementar - 05

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

Fazendo deploy da imagem da aula

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:

  1. Instale o comando flyctl na sua máquina
  2. Em um Terminal, execute o comando: flyctl launch --image jacquelineoliveira/linguagensapi:latest
  3. 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)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages