Disciplina dos cursos de Ciência da Computação, Sistemas de Informação e Análise e Desenvolvimento de Sistemas do Centro Universitário Newton Paiva
- 1°Sem 2024
IDE (Ambiente de Desenvolvimento Integrado) e editores especializados ajudam a escrever, depurar e manter código com mais eficiência. Ferramentas como IntelliJ IDEA e VS Code oferecem recursos como autocompletar, depuração visual, integração com Git, suporte a frameworks como Spring e muito mais.
Ao se cadastrar no GitHub Student Developer Pack, você garante acesso gratuito à versão Ultimate das ferramentas da JetBrains, como o IntelliJ IDEA Ultimate 🧠💻. Essa é uma excelente oportunidade para utilizar recursos avançados de desenvolvimento — tudo sem custo para estudantes! 🚀
1️⃣ Adicione seu e-mail institucional do Centro Universitário Newton Paiva (terminado em @newtonpaiva.br
) como e-mail secundário na sua conta do GitHub em https://github.com/settings/emails
2️⃣ Acesse a caixa de entrada do e-mail e clique no link de confirmação enviado pelo GitHub.
3️⃣ Ao acessar o GitHub Student Developer Pack, permita que o navegador compartilhe sua localização atual 🌍.
4️⃣ Selecione "Centro Universitário Newton Paiva" como sua instituição, envie um print do comprovante de matrícula mais recente como forma de verificação. Depois, aguarde até 2 dias úteis para que o selo GitHub Pro 🏅 seja ativado na sua conta.
5️⃣ Acesse: https://www.jetbrains.com/shop/eform/students
➡ Vá até a aba GitHub e clique em "Authorize with GitHub" 🔑.
6️⃣ Instale o IntelliJ IDEA e, ao abrir o programa, vá em "Ativar licença". Escolha a opção "Log in with GitHub", faça login com sua conta GitHub (que já possui o selo GitHub Pro 🏅 e que você autorizou previamente no site da JetBrains — passo 5), e a licença Ultimate será ativada automaticamente 🎉.
🏁 Pronto! Agora você pode aproveitar todos os benefícios do GitHub Pro 🏅, incluindo:
- Acesso gratuito às ferramentas profissionais da JetBrains, como o IntelliJ IDEA Ultimate 🧠💻
- GitHub Copilot com sugestões inteligentes de código (com testes gratuitos por tempo limitado) 🤖
- Repositórios privados ilimitados 🔒
- Insights avançados de contribuições, métricas e estatísticas dos seus projetos 📊
- Ferramentas de CI/CD integradas com GitHub Actions ⚙️
- Integrações com dezenas de serviços e ferramentas educacionais 🧩
Esses recursos ajudam a elevar seu aprendizado, organizar seus projetos e turbinar sua produtividade como desenvolvedor 💼🚀
🔗 Confira todos os detalhes do plano GitHub Pro para estudantes aqui:
A documentação oficial é a principal referência para aprender, consultar funcionalidades e entender o comportamento da linguagem Java e suas bibliotecas padrão. Essencial tanto para iniciantes quanto para desenvolvedores experientes.
O ecossistema Spring oferece suporte completo para criação de aplicações Java robustas, modulares e escaláveis. O Spring Boot, em especial, simplifica a configuração e o desenvolvimento de APIs RESTful, facilitando a integração com bancos de dados, autenticação, mensageria, entre outros.
Essas ferramentas facilitam a representação visual de sistemas, fluxos de dados, entidades e componentes, sendo úteis tanto na fase de modelagem quanto na documentação de projetos.
- Draw.io (Diagramas)
- Astah - Licença gratuita para estudantes
- PlantUML (Diagramas UML)
- Figma - Templates
Frameworks frontend ajudam a criar interfaces responsivas e modernas, muitas vezes utilizados junto com tecnologias como JSF, Thymeleaf ou APIs REST em Java.
Clientes REST permitem enviar requisições HTTP (GET, POST, PUT, DELETE), testar endpoints, autenticações e visualizar respostas com facilidade.
Ferramentas como Docker, Fly.io, Vercel, Render, WebDock e Heroku permitem criar ambientes isolados, implantar APIs e serviços em nuvem de forma simples, escalável e muitas vezes gratuita para projetos educacionais.
- 🐳 Docker Desktop
- 🐳 Docker Hub
- ☁️ Fly.io
- ☁️ Heroku
- ☁️ Vercel
- ☁️ Render
- ☁️ WebDock
- Oferece acesso via SFTP com suporte a upload por arrastar e soltar, facilitando o envio de arquivos diretamente do seu computador.
- Mantém o servidor ativo mesmo durante períodos de inatividade, ao contrário de plataformas como o Render, que desligam instâncias ociosas.
Essas ferramentas são fundamentais para persistência de dados em aplicações Java. MongoDB (NoSQL) e PostgreSQL (relacional) são amplamente utilizados em projetos web modernos.
- 🗺️ dbdiagram.io - Criação e visualização de diagramas ER online
- 💡 Permite gerar diagramas a partir de código (DBML, SQL, PostgreSQL, etc.)
- 🔄 É possível exportar os diagramas para imagens, PDFs ou scripts SQL.
- 🧰 Excelente para documentar e compartilhar o modelo de dados com equipes de desenvolvimento.
Ferramentas como Grafana e Prometheus permitem acompanhar o comportamento da aplicação, uso de recursos e definir alertas para garantir estabilidade em ambientes produtivos.
Frameworks como JUnit e Mockito são essenciais para escrever testes unitários e mocks. Selenium e Selenide permitem testes automatizados em navegadores, garantindo qualidade e confiança em cada entrega.
Plataformas como Mercado Pago e Stripe oferecem SDKs para Java que facilitam pagamentos online, geração de cobranças, webhooks e checkout transparente.
O Twilio permite envio de SMS, ligações, mensagens de WhatsApp e muito mais, podendo ser facilmente integrado a backends Java para notificações automatizadas e comunicação em tempo real.
- 🌐 Twilio - Plataforma de comunicação (SMS, voz, WhatsApp etc.)
twilio - Repositório oficial no GitHub
- 📚 Twilio Docs
Swagger facilita a criação de APIs REST bem documentadas, com suporte a testes via interface gráfica e geração automática de contratos e documentação OpenAPI para serviços Java.
- 🌐 Swagger - Ferramenta para design, documentação e testes de APIs REST
swagger-api - Repositório oficial no GitHub
- 📚 Swagger Docs
Ferramentas para análise estatística de código, detecção de code smells, métricas de qualidade e identificação de más práticas de programação.
- PMD: Ferramenta que verifica problemas comuns em código Java, como variáveis não utilizadas, duplicação de código e estilos de codificação.
- SonarQube: Plataforma para análise contínua de qualidade de código, cobrindo múltiplas linguagens. Avalia bugs, vulnerabilidades e cobertura de testes.
- Qodana: Plataforma de análise estática de código desenvolvida pela JetBrains. Integra-se com IDEs, CI/CD e repositórios para detectar code smells, vulnerabilidades de segurança e violações de boas práticas, com suporte a múltiplas linguagens como Java, Kotlin, PHP, Python e JavaScript.
- JNose: Ferramenta focada na identificação de test smells e design smells em código Java. Ajuda na compreensão de problemas relacionados à testabilidade e manutenibilidade.
- Code Climate: Ferramenta de análise contínua de qualidade de código que gera métricas como complexidade ciclomática, duplicação, cobertura de testes e code smells. Suporta diversas linguagens e se integra com GitHub, GitLab e outros.
- CodeQL: Plataforma de análise de segurança e qualidade de código da GitHub, que permite executar consultas para detectar vulnerabilidades, bugs e más práticas em diversos tipos de código fonte.
- CK: Ferramenta de linha de comando para análise estática de código Java. Extrai métricas como CBO, LCOM, WMC, RFC, DIT, NOM e LOC, úteis para avaliar a complexidade e a qualidade do código.
Relatórios anuais e pesquisas globais ajudam a entender as principais linguagens, ferramentas, salários, preferências e tendências no mercado de desenvolvimento de software. São ótimos para orientar decisões de carreira e identificar habilidades em alta.
- DevSkiller Report 2025
- Stack Overflow Developer Survey 2025
- Stack Overflow Developer Survey 2024
- JetBrains Developer Ecosystem 2024
- GitHub Octoverse 2024
🧑🤝🧑 Exemplo de slides para apresentação em grupo:
📘 Exemplos de README de projeto:
Exemplos de portfólio profissional:
- 🌐 Portfólio
- 📦 Lib utilizada - Shadcn: https://ui.shadcn.com/
- 📖 Shadcn Docs: https://ui.shadcn.com/docs/registry/getting-started
GitHub
- 🌐 Portfólio
- 📦 Lib utilizada - Three JS: https://threejs.org/
- 📖 Three JS Docs: https://threejs.org/docs/
- Repositório do website
GitHub
- https://portfolio-starter-template.webflow.io/
- https://craig-roush-portfolio-template.webflow.io/
- https://alex-grant-template.webflow.io/
- https://dexter-morgan.webflow.io/
- https://novo-demo.squarespace.com/
- https://kester-demo.squarespace.com/
- https://pt.wix.com/website-template/view/html/1913
docker --version
docker build -t minha-aplicacao .
docker build --platform linux/amd64 -t minha-aplicacao .
docker images
docker run -d -p 8080:8080 minha-aplicacao
docker run --platform linux/amd64 -d -p 8080:8080 minha-aplicacao
docker ps
docker stats
Comandos Docker: Guia rápido
Comando | Descrição |
---|---|
docker run | Executa um novo contêiner a partir de uma imagem. |
docker ps | Lista os contêineres em execução. |
docker ps -a | Lista todos os contêineres, incluindo os que não estão em execução. |
docker images | Lista todas as imagens locais disponíveis. |
docker rmi | Remove uma ou mais imagens. |
docker rm | Remove um ou mais contêineres. |
docker build | Cria uma nova imagem a partir de um Dockerfile. |
docker pull | Baixa uma imagem do Docker Hub ou de um repositório remoto. |
docker push | Envia uma imagem para um repositório remoto no Docker Hub. |
docker exec | Executa um comando em um contêiner em execução. |
docker logs | Exibe os logs de um contêiner. |
docker network | Gerencia redes Docker. |
docker volume | Gerencia volumes para persistência de dados. |
docker-compose up | Inicia e orquestra múltiplos contêineres definidos no docker-compose.yml. |
docker-compose down | Para e remove os contêineres, redes e volumes definidos no docker-compose.yml. |
docker stats | Exibe estatísticas em tempo real sobre o uso de recursos de contêineres em execução. |
docker inspect | Mostra informações detalhadas sobre um contêiner ou imagem. |
docker start | Inicia um contêiner que foi parado. |
docker stop | Para um contêiner em execução. |
docker restart | Reinicia um contêiner. |
docker pause | Pausa um ou mais contêineres em execução. |
docker unpause | Retoma um ou mais contêineres que foram pausados. |
docker commit | Cria uma nova imagem a partir das alterações em um contêiner. |
docker tag | Adiciona uma nova tag a uma imagem existente. |
docker login | Faz login em um repositório Docker. |
docker logout | Faz logout de um repositório Docker. |
docker search | Busca imagens no Docker Hub. |
docker pull | Baixa uma imagem do Docker Hub ou de um repositório remoto. |
docker cp | Copia arquivos ou diretórios entre o sistema de arquivos do contêiner e o host. |
docker volume create | Cria um novo volume Docker. |
docker volume rm | Remove um ou mais volumes. |
docker network create | Cria uma nova rede Docker. |
docker network rm | Remove uma ou mais redes. |
docker network ls | Lista todas as redes Docker. |
docker history | Mostra o histórico de camadas de uma imagem. |
Obs: Para iniciar um code review, você precisa abrir um pull request (PR) no repositório. O PR é a solicitação para mesclar suas alterações no branch principal. Depois de aberto, você e seus colegas podem navegar pelas mudanças, clicar nas linhas de código para adicionar comentários e discutir melhorias diretamente no PR.
A classe UserService
atualmente contém lógica de acesso direto ao banco de dados usando EntityManager
. Para seguir o princípio da separação de responsabilidades e melhorar a testabilidade do código, considere extrair essa lógica para um DAO (UserDAO
).
- Redução do acoplamento entre a camada de serviço e a persistência.
- Facilidade para substituir a implementação do DAO futuramente (por exemplo, ao trocar Hibernate por outra tecnologia).
- Facilidade para criar mocks e testar a lógica de negócio isoladamente.
- Criar uma classe
UserDAO
com métodos comofindById(Long id)
esave(User user)
. - Injetar essa classe no
UserService
. - Mover a lógica de persistência para o DAO.
Um roadmap é um guia visual que apresenta etapas, habilidades ou conhecimentos necessários para atingir um objetivo específico. Ele ajuda a organizar o aprendizado ou desenvolvimento ao longo do tempo, mostrando caminhos recomendados e prioridades.
Veja também:
A arquitetura de um app Spring Boot é como um ecossistema bem orquestrado, onde cada componente tem um papel essencial para garantir a escalabilidade, manutenibilidade e organização do sistema.
🔍 Entender a fundo cada uma dessas peças é o que diferencia um bom desenvolvedor!
Confira abaixo o papel fundamental de cada componente ilustrado no GIF:
- 🎬 Gif criado por Victor Targino Von Melentovytch
Componente | Descrição |
---|---|
🧭 Controller | É a primeira linha de contato, recebendo as requisições HTTP e devolvendo as respostas. Atua como a interface da aplicação. |
🧠 Service | Contém as regras de negócio da aplicação. É onde a lógica central é executada, separada da interface e da persistência. |
💾 Repository | Responsável pela comunicação com o banco de dados, abstraindo as operações de persistência e consulta. |
🔗 JPA (Java Persistence API) | Atua como uma ponte entre objetos Java e tabelas do banco de dados, facilitando o mapeamento e a persistência dos dados. |
🌐 REST | Define os padrões de comunicação via HTTP, essenciais para a construção de APIs modernas e interoperáveis. |
📦 Entity | Representa uma tabela do banco de dados como um objeto Java. Base para o mapeamento e a persistência dos dados. |
🧪 Testes | Garante que todas as funcionalidades funcionem como esperado. Pilar para a qualidade e robustez do software. |
📤 DTOs (Data Transfer Objects) | Objetos leves usados para transportar dados entre camadas, evitando o envio de informações desnecessárias. |
📚 Swagger | Ferramenta que gera uma documentação interativa da API, facilitando o entendimento e uso por outros desenvolvedores. |
🔐 Security | Cuida da autenticação (quem você é) e autorização (o que você pode fazer), protegendo os recursos da aplicação. |
⚙️ Configuration | Centraliza as configurações da aplicação, como portas, credenciais e parâmetros de comportamento. |
🚨 Exception Handler | Centraliza o tratamento de erros, permitindo respostas consistentes e amigáveis em caso de falhas. |
✅ Conhecer a arquitetura do Spring Boot ajuda a escrever sistemas mais limpos, coesos e testáveis. Cada camada tem sua função e respeitar essa separação é o primeiro passo para a excelência no desenvolvimento backend.
O Spring Boot continua sendo uma das ferramentas mais poderosas e utilizadas por desenvolvedores Java. Sua proposta de simplificar o desenvolvimento de aplicações robustas e prontas para produção o tornou o padrão de fato no desenvolvimento backend moderno.
Em 2025, dominar o Spring Boot é essencial para quem deseja se destacar como desenvolvedor backend. Com a crescente adoção de arquiteturas de microserviços e práticas nativas de nuvem, a demanda por profissionais especializados nesse ecossistema só aumenta.
O roadmap abaixo vai te guiar desde os conceitos fundamentais até os tópicos mais avançados, combinando teoria e prática de forma progressiva. Você entenderá como o ecossistema evoluiu — com recursos como compilação nativa, melhorias de performance e integração com a nuvem — e como aplicar esses conhecimentos no desenvolvimento de aplicações reais.
Um roadmap é um guia visual que apresenta etapas, habilidades ou conhecimentos necessários para atingir um objetivo específico. Ele ajuda a organizar o aprendizado ou desenvolvimento ao longo do tempo, mostrando caminhos recomendados e prioridades.
- 📘 Spring Boot Roadmap 2025 – AmigosCode
- 📗 Spring Boot Roadmap – roadmap.sh
Java Developer Roadmap – kamranahmedse/developer-roadmap (GitHub)