eBook: Jornada Java
- Catálogo: E-books da Brasport
- Modelo:EB277
- Categorias
- - e-Books
- - Informática e Tecnologia
- Disponibilidade:Em estoque
- R$ 99,00
Venda de e-book Compre na Amazon Compre no Google Play
Livro Jornada Java: unindo práticas para construção de código limpo e implantação que entregue valor ao cliente
> Conteúdo criado por 32 pessoas com grande atuação no mercado e experiências complementares
> Prefácios escritos pelos Java Champions Bruno Souza e Edson Yanaga, grandes referências no mundo Java
Considerando que as empresas dependem cada vez mais de software para sobreviver e prosperar em um mercado tão competitivo e acelerado, nosso time de organizadores e coautores tem a convicção de que cada leitor será beneficiado em sua carreira com a aplicação deste suprassumo para desenvolvedores comprometidos em entregar soluções para seus clientes e sociedade.
***
A Jornada Colaborativa é uma comunidade apaixonada por pessoas e tecnologia que escreve livros unindo experiências diversificadas dos coautores e curadoria dos organizadores selecionados para manter o alto padrão de qualidade.
Os royalties dos livros ficam reservados com a editora para ajudar na compra dos exemplares que usamos na Jornada Summit e a receita é doada para instituições carentes (doamos R$ 137 mil para 12 instituições em 2019 e 2020).
Parabenizamos a dedicação dos organizadores e coautores para concretizar esta obra e agradecemos às organizações que apoiam a Jornada Summit para transformar cada vez mais vidas.
Antonio Muniz
Fundador da Jornada Colaborativa e JornadaCast
Bruno Kaufmann e Rodrigo Moutinho
Líderes do time organizador e curadoria
***
Coautores:
Alison Medeiros
Allan Rodrigo Leite
André Felipe Joriatti
Antonio Muniz
Bárbara Cabral da Conceição
Bruno Kaufmann
Bruno Souza
Diego de Medeiros Rocha
Dorival Querino
Edson Yanaga
Eduardo Costa
Fábio Braga
Gabriela Moraes
Jonas Santos
Kamila Santos
Leonardo de Moura Rocha Lima
Luca Fenris Elert
Marcelo Henrique Diniz de Araujo
Marcos Paulo
Otavio Santana
Rafael Buzzi de Andrade
Raphael Vitorino da Silva
Rhuan Henrique
Rinaldo Pitzer Júnior
Roan Brasil Monteiro
Rodrigo Moutinho
Rodrigo Sobral
Sandro Giacomozzi
Silvio Buss
Tatiana Escovedo
Vitor Vieira
Zair Ramos
E-ISBN | 9786588431207 |
Edição | 1 |
Idioma | Português |
Lançamento | 29/03/2021 |
Páginas | 520 |
Ano | 2021 |
Sumário | PARTE I. POR QUE DESENVOLVER SOFTWARE USANDO JAVA? 1. Introdução (Bruno Kaufmann) 2. História do Java (Sandro Giacomozzi) 3. Benefícios da linguagem Java (Zair Ramos/Tatiana Escovedo) 4. Aplicações do Java (Zair Ramos) PARTE II. INTRODUÇÃO AO JAVA 5. Java na era moderna (Rhuan Henrique) Java em múltiplos ambientes e plataformas Computação em nuvem Java na computação em nuvem Cadência de liberação do Java SE Jakarta EE MicroProfile Frameworks para containers 6. Java é livre? (Zair Ramos/Leonardo de Moura Rocha Lima) Java é especificado por comitê! Como assim? A máquina virtual Java Juntando as partes 7. Sabores de Java: OpenJDK, Oracle e outros (Zair Ramos/Leonardo de Moura Rocha Lima) 8. Licenciamento, atualizações e suporte (Zair Ramos/Leonardo de Moura Rocha Lima) PARTE III. JAVA BÁSICO 9. Preparando o ambiente de desenvolvimento (Sandro Giacomozzi/André Felipe Joriatti) 10. O primeiro programa em Java (Tatiana Escovedo) Boas práticas de código Sintaxe 11. IDEs (Rafael Buzzi de Andrade) 12. Declaração de variáveis e tipos de dados (Tatiana Escovedo) 13. Operadores (if, else e ternários) (Rodrigo Sobral) 14. Controle de fluxo (while, for, break e continue) (Rodrigo Sobral) 15. Arrays (Rafael Buzzi de Andrade) Instanciando Lendo elementos Iterando sobre todos os elementos Varargs A classe Arrays 16. Strings, input/output e manipulação de arquivos (Rafael Buzzi de Andrade) String Input e output Manipulação de arquivos Lendo o conteúdo de um arquivo PARTE IV. ORIENTAÇÃO A OBJETOS EM JAVA 17. Introdução a orientação a objetos (Allan Rodrigo Leite/Luca Fenris Elert) Paradigmas de desenvolvimento de software História da orientação a objetos Orientação a objetos 18. Classe (Allan Rodrigo Leite/Luca Fenris Elert) 19. Objeto (Allan Rodrigo Leite/Luca Fenris Elert) 20. Pacote (Allan Rodrigo Leite/Luca Fenris Elert) 21. Encapsulamento e modificadores de acesso (Allan Rodrigo Leite/Luca Fenris Elert/Rodrigo Sobral/Tatiana Escovedo) 22. Herança (Rhuan Henrique/Tatiana Escovedo) 23. Polimorfismo (Tatiana Escovedo) 24. Abstração, interfaces e enum (Rodrigo Sobral/Tatiana Escovedo/Kamila Santos/Rinaldo Pitzer Júnior) Interfaces Enum 25. Elementos estáticos (Tatiana Escovedo) 26. Estrutura de dados, collections e generics (Allan Rodrigo Leite/Luca Fenris Elert) Java Collections List
Set
Map
Iterator e foreach Java Generics Evolução do Java Collections e Java Generics 27. Ciclo de vida de um objeto e a classe Object (Kamila Santos) A classe Object O método toString()
O método equals()
O método hashCode()
28. Typecasting, autoboxing e unboxing (Kamila Santos) Typecasting Upcasting
Downcasting
Autoboxing e unboxing 29. Exceptions (Rafael Buzzi de Andrade/Sandro Giacomozzi) Delegando uma exception Contendo e manipulando uma exception Checked e unchecked exceptions Capturando exceções Implementando várias instruções try-catch Lançando uma exceção O bloco finally Try-with-resources Criando suas próprias exceções Pilha de execução Boas práticas para lidar com exceções PARTE V. NOVOS RECURSOS DA LINGUAGEM 30. Programação funcional e expressões lambda (Marcos Paulo) Imutabilidade Funções puras Expressões lambda 31. Processamento de dados com Stream (Marcos Paulo) API Stream Método default Map Filter Distinct Reduce Sorted 32. Datas (Rinaldo Pitzer Júnior) História Representando uma data Representando um horário Representando uma data com horário Data com horário e sem fuso horário
Data com horário e fuso horário
Data e horário como um instante na linha do tempo
Representando intervalos de data Representando intervalos de tempo Convertendo entre formatos antigos Formatando datas e horários Utilizando formatos ISO 8601 predefinidos
Utilizando estilos Java predefinidos
Utilizando um estilo personalizado
Formatando Date e Calendar
33. JShell (Rinaldo Pitzer Júnior) Acessando o JShell Criando variáveis e métodos Autocompletar e documentação Comandos Uso prático de JShell Mais informações 34. Módulos (Rinaldo Pitzer Júnior) Introdução aos módulos Declarando um módulo Definindo dependências entre módulos Disponibilizando serviços com módulos Permitindo reflexão Conclusão e exemplos 35. Text blocks (Rinaldo Pitzer Júnior) Introdução Usando text blocks Demais facilidades Outros exemplos PARTE VI. BANCO DE DADOS 36. Trabalhando com banco de dados relacional (André Felipe Joriatti) O que é socket? Banco de dados relacional Normalização 37. JDBC (André Felipe Joriatti) Exemplos 38. JPA (André Felipe Joriatti) Mapeamento de entidades Trabalhando com entidades Comandos básicos
Realizando consultas
39. Hibernate (Kamila Santos/Tatiana Escovedo) Módulos Consultas com Hibernate Criteria API
Hibernate Query Language (HQL)
SQL Query nativo
Configurando uma aplicação 40. Trabalhando com banco de dados NoSQL (Otavio Santana) Chave-valor Orientado a documentos Família de colunas Grafos Multi-model database Teorema do CAP Escalabilidade versus complexidade
Master/Slave versus masterless
Base de dados relacionais
ACID versus BASE
Comparando as aplicações Java que utilizam bancos relacionais
41. JNoSQL (Otavio Santana) Uma API para múltiplos bancos de dados Indo além do JPA A Fluent API Não reinventamos a roda: grafo Comportamentos específicos importam Um padrão fácil de utilizar e uma API extensível Conclusão PARTE VII. TÓPICOS AVANÇADOS 42. Multithreading e programação concorrente (Rinaldo Pitzer Júnior) Aplicações web Quando usar paralelismo Implementando paralelismo A classe Thread e a interface Runnable
A interface ExecutorService
Usando Streams paralelos
Outras formas de paralelismo
O modificador volatile
Classes úteis Pacote java.util.concurrent
Sincronizando coleções
43. Java Virtual Machine (JVM) (Rodrigo Moutinho) Tipos de linguagens Arquitetura JVM Entendendo o funcionamento do JIT Outros tipos de compiladores Outras linguagens 44. Garbage collection (Rodrigo Moutinho) Conceitos básicos Tipos de garbage collector Monitoramento e escolha do GC ideal PARTE VIII. TESTES 45. Importância dos testes (Alisson Medeiros) 46. Desenvolvimento orientado a testes com TDD, BDD e ATDD (Bárbara Cabral da Conceição/Diego de Medeiros Rocha) Por que usar TDD? Exemplo
Passos
Boas práticas
Frameworks
Tudo é comportamento no BDD Gherkin – a linguagem oficial do BDD
Frameworks de testes para BDD (Selenium, Serenity BDD)
ATDD – Acceptance Test Driven Development 47. Testes de unidade (Alisson Medeiros/Sandro Giacomozzi) JUnit Mocks 48. Testes de integração: teste de API (Silvio Buss) Como utilizar Explorando a API de uma aplicação Java Testando os endpoints e suas respostas Testando códigos de erro HTTP Enviando dados JSON com chamada POST Conclusão 49. TestContainers (Sandro Giacomozzi/André Felipe Joriatti) Testes integrados e containers Utilizando o TestContainers Casos de uso Caso de uso 1 – Teste de migração de banco de dados
Caso de uso 2 – Teste de API Rest com banco de dados
Caso de uso 3 – Teste de API Rest com MockServer
50. Cobertura de código (Silvio Buss) 51. Teste de mutação com Java (Silvio Buss) 52. Selenium (Raphael Vitorino da Silva) PARTE IX. GESTÃO DE CONFIGURAÇÕES E FERRAMENTAS DE APLICAÇÃO 53. Gestão de configurações e mudanças (Bruno Kaufmann) Gerenciamento do código-fonte Engenharia de compilação e construção Configuração do ambiente Controle da mudança Liberação Implantação 54. Git (Jonas Santos) Máquina do tempo do código O que é Git Os três estados
Repositório
Commit
Histórico
Branch
Instalando o Git Principais comandos Configurações locais
Iniciando um novo repositório
Clonando um repositório remoto
Baixando as atualizações do servidor
Enviando atualizações ao servidor remoto
Verificando alterações
Trabalhando com branches
Revertendo alterações
Verificando os logs
Stash
55. Git Flow (Jonas Santos) 56. GitHub, Bitbucket, GitLab (Jonas Santos) GitHub Bitbucket GitLab Recursos Pull/Merge request 57. Maven e Gradle (Luca Fenris Elert/Allan Rodrigo Leite) Build tolos Maven Gradle Importância dos builders 58. Integração contínua (Marcelo Henrique Diniz de Araujo) O que é preciso para trabalhar com integração contínua? Sistema de versionamento de código (SVC)
Desenvolvimento orientado a testes
Pull request/Code review
Monitorar e otimizar o tempo de execução das pipelines
Integre o código o mais frequentemente possível
A construção do projeto deve estar sempre funcionando!
Construindo sua primeira pipeline de CI/CD
59. Entrega/Implantação contínua (Marcelo Henrique Diniz de Araujo) Por que utilizar? Etapas de uma pipeline de CI/CD O que é preciso para trabalhar com entrega/implantação contínua? 60. Ferramentas de automação: Jenkins, CircleCI, Travis CI (Luca Fenris Elert/Allan Rodrigo Leite) Jenkins CircleCI Travis CI Conclusão PARTE X. FUNDAMENTOS DE DESENVOLVIMENTO DE JAVA PARA WEB 61. Fundamentos da web e introdução a HTML (Tatiana Escovedo) Breve história da internet A web e suas aplicações 62. Container, Servlets e JSPs (Tatiana Escovedo) 63. Modelo MVC – Model View Controller (Tatiana Escovedo) 64. Tutorial: nossa primeira aplicação web (Tatiana Escovedo) PARTE XI. TÓPICOS AVANÇADOS PARA O DESENVOLVIMENTO WEB 65. Introdução à API REST (Roan Brasil Monteiro/Otavio Santana/Bruno Kaufmann) API Design Contract First Contract Last 66. Boas práticas de API REST (Roan Brasil Monteiro/Otavio Santana/Bruno Kaufmann) Utilize JSON Identificação dos recursos Plural versus singular Granularidade Versionamento Versionamento URI
Query parameters
Customizando request-header
Versionando o accept header
Modelo de maturidade de Richardson Nível 0 – O pântano do POX (Plain Old XML)
Nível 1 – Recursos individuais
Nível 2 – Verbos HTTP
Nível 3 – Controles hipermídia
Documentação
Retorno de erros
67. Jakarta EE 8 (Vitor Vieira) Exemplo RESTful Server Adicionando a capacidade de banco de dados a um RESTful Server Conclusão 68. Spring Boot (Gabriela Moraes/Bruno Kaufmann) Utilização do framework Funcionalidades mais importantes Web starter JPA starter Conclusão PARTE XII. SEGURANÇA DE APLICAÇÕES 69. Como as APIs são protegidas (Bruno Kaufmann/Jonas Santos) API REST e API SOAP Métodos de autenticação API Keys Basic authentication (autenticação básica) Oauth SAML Práticas de segurança JWT – JSON Web Token Header
Payload
Assinatura
Token
Usando o JWT com Java 70. OAuth 2.0 como solução (Bruno Kaufmann/Jonas Santos) História O que é OAuth 2.0? Os papéis (roles)
Fluxo da comunicação
Código de autorização (authorization code)
Implícito (Implicit)
Credenciais de senha do proprietário do recurso (resource owner password credentials)
Credenciais do cliente (client credentials)
Usando o token de acesso Usando o token de atualização 71. Aplicação com Spring Security (Gabriela Moraes/Bruno Kaufmann) Conclusão PARTE XIII. CLOUD E DEPLOY 72. Introdução à computação em nuvem (cloud) (Dorival Querino/Fábio Braga) Tipos de nuvem As modalidades dos serviços de nuvem Benefícios da nuvem 73. Java na nuvem (Dorival Querino) O investimento dos provedores de nuvem em Java 74. Deploy de uma aplicação na nuvem da AWS (Dorival Querino/Rodrigo Sobral) Configurar alertas Criando uma instância EC2 e fazendo um deploy Acessando uma instância EC2 via SSH 75. Boas práticas para construção de aplicações nativas para nuvem (Eduardo Costa) Faça o versionamento da sua aplicação Explicitamente declare e isole suas dependências Configurações devem pertencer ao ambiente Trate serviços de apoio como recursos que possam ser facilmente anexados Crie releases versionadas e imutáveis que possam ser facilmente implantadas e retiradas de produção Aplicações não devem possuir estado Permita que a infraestrutura gerencie atribuições de hosts e portas Maximize a robustez da sua aplicação com inicializações rápidas e desligamentos seguros Mantenha seus ambientes similares Escale sua aplicação horizontalmente Trate seus logs como um fluxo de eventos Tenha atenção às tarefas de administração 76. Docker (Rodrigo Sobral) 77. Monitoramento (Dorival Querino) As ferramentas de monitoramento para Java JConsole
Java Mission Control
Eclipse MAT – Eclipse Memory Analyzer
JVM Debugger Memory View – IntelliJ
JProfiler
PARTE XIV. A JORNADA CONTINUA 78. O que vem depois? (Sandro Giacomozzi) Referências bibliográficas Dedicatória e agradecimentos Sobre os autores |
Etiquetas: eBook Jornada Java, Jornada, Java