🚀 Capítulo 20: A Era de Ultron P2 (Tema: Vingadores)

NOTE

Este capítulo finaliza o curso de Backend com Java e Spring Boot. Aprenda a empacotar a sua aplicação e a usar o Docker para colocá-la no mundo real!


1. 🎯 Objetivo da Aula

Compreender como empacotar a aplicação Spring Boot gerando o arquivo executável .jar, e entender o conceito de Docker para criar contêineres e garantir a portabilidade do sistema.

2. 🏢 O Cenário Prático (Seu Desafio)

No final do filme Vingadores: Era de Ultron, após muitas batalhas e correções no código do sistema, a equipe dos Vingadores consegue conter a ameaça do robô Ultron e estabilizar o sistema de defesa. O projeto foi concluído e agora está pronto para proteger o mundo!

O seu projeto de API de E-commerce está pronto e funcionando perfeitamente! Mas, por enquanto, ele só roda dentro do seu computador de desenvolvimento (o famoso localhost).

  • Para que uma empresa de verdade possa usar o seu sistema, nós precisamos “empacotar” todo o código Java e as configurações em um único arquivo de entrega.
  • No Java, esse arquivo de pacote se chama .jar (Java Archive).
  • E para garantir que esse arquivo rode em qualquer servidor do mundo (na nuvem) sem dar o erro clássico de “Na minha máquina funciona, mas no servidor não”, nós usamos o Docker! Seu desafio final é estabilizar o sistema e lançá-lo para o mundo!

🧠 Fundamentos: A Teoria Traduzida

📦 1. O arquivo .jar:

Quando você termina o projeto e usa o Maven para compilar (comando mvn clean package), ele junta todas as suas classes, imagens e arquivos de configuração e gera um único arquivo gigante com a extensão .jar. Ele funciona como o .exe do Windows: basta dar dois cliques ou rodar no terminal para o seu sistema inteiro ligar!

🐳 2. O que é o Docker?

É uma plataforma que permite empacotar a sua aplicação (o arquivo .jar) junto com todas as coisas que ela precisa para rodar (como a versão exata do Java e do banco de dados) dentro de uma caixa fechada chamada Contêiner.

  • A grande vantagem: O contêiner do Docker roda exatamente do mesmo jeito no seu computador, no computador do seu chefe ou nos servidores da Amazon e da Google!
  • O Docker combina perfeitamente com a filosofia do Java que vimos no Capítulo : portabilidade total!

4. 📖 Exemplo Guiado: O Arquivo Dockerfile

Para dizer ao Docker como ele deve criar a caixa para o nosso projeto Java, nós criamos um arquivo de texto chamado Dockerfile na raiz do projeto:

# 1. Baixa uma imagem que já vem com o Java 17 instalado
FROM openjdk:17-jdk-slim
 
# 2. Copia o nosso arquivo .jar para dentro do contêiner
COPY target/projeto-ecommerce.jar app.jar
 
# 3. Diz o comando que deve ser executado para ligar o sistema!
ENTRYPOINT ["java", "-jar", "/app.jar"]

5. 🛠️ Prática Obrigatória 1: O Pacote Java

Com base no texto:

  1. Qual é a extensão do arquivo executável que o Maven gera quando finalizamos e empacotamos o nosso projeto Java?

6. 🛠️ Prática Obrigatória 2: O Fim do “Na Minha Máquina Funciona”

  1. Por que o uso de contêineres Docker é tão importante hoje em dia para as empresas que colocam sistemas na internet? O que ele evita?

7. 📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)

  1. Faça o Commit: No GitHub Desktop, digite a mensagem (ex: Finaliza Capítulo 20 Java_UltronP2) e clique em Commit to main.
  2. Envie para a Nuvem (Push): Clique em Push origin.

8. 📂 Estrutura de Pastas

spec_backend_com_java_e_springboot/
├── capitulos/
│   └── capitulo_20_ultron_p2.md

💡 Checkpoint de Lógica

Parabéns por chegar até aqui! Você aprendeu desde os conceitos mais básicos de lógica e variáveis no Java até a criação de APIs profissionais, seguras e prontas para a nuvem com Spring Boot! Você agora faz parte de um grupo seleto de desenvolvedores!

🔑 Gabarito de Código/Fórmulas

Gabarito da Prática 1:

  1. A extensão é .jar (Java Archive). Gabarito da Prática 2:
  2. O Docker evita o problema do “na minha máquina funciona”. Ele garante que a aplicação vai rodar em qualquer computador ou servidor exatamente com o mesmo comportamento, pois todas as dependências e configurações já vão presas dentro do contêiner, eliminando surpresas na hora de colocar o site no ar!

Capitulo Anterior