banner-pix

Jornada Java



  • R$ 170,00R$ 136,00
  • Desconto de 20%

R$ 119,68

(-12%) p/ Pagamento por PIX

Antonio Muniz

Colaborou com mais de 30 mil pessoas e mais de 100 times em consultorias, mentorias, cursos de MBA, bootcamps, videoaulas, workshops e palestras em empresas líderes de mercado, como SulAmérica, Petrobras, Vivo, Itaú, Oi, Furnas, Eletrobras, Energisa, Via Varejo, DHL, Accenture, Icatu, Banco do Brasil, Banco Safra, Banco PAN, Citibank, Ernst & Young, Finep, Sebrae, UOL, Pagseguro, Makro, Totvs, Jucesp, Ambev Tech, Dafiti, Meta, Banco Carrefour, Prudential etc. Como fundador e headhunter da Jornada Colaborativa, formou novas lideranças, com R$ 502 mil doados para instituições e o lançamento de mais de 30 livros e eventos com empresas amigas. Sua formação tem uma base multidisciplinar em negócios, tecnologia e liderança, com mestrado em administração no Ibmec, MBA em telecomunicações na FGV, graduação em tecnologia na Unigranrio e certificações em agilidade, tecnologia Lean, projetos, processos e serviços.

Contato: munizprofessor@gmail.com


English version:

Inspired more than 30,000 people and teams in MBA courses, bootcamps, video classes, workshops, consulting and lectures in leading companies such as SulAmérica, Petrobras, Vivo, Itaú, Oi, Furnas, Eletrobras, DHL, Banco do Brasil, Banco Safra, Banco PAN, Ernst & Young, Finep, Sebrae, UOL, Pagseguro, Makro, Totvs, Jucesp, Ambev Tech and Dafiti.
Bruno Kaufmann

Especialista em Java e tech lead na Comexport, focado na plataforma Java EE, Spring e líder de JUG do SouJava. Possui mais de dez anos de experiência em Java trabalhando em áreas de consultoria, desenvolvimento, treinamento, design de arquiteturas de software e metodologias ágeis com foco nas melhores práticas do mercado.


Rinaldo Pitzer Júnior

Trabalha há mais de 10 anos com projeto e desenvolvimento de soluções de software, principalmente backends com Java e Java EE. É consultor de TI na Caixa Econômica Federal e também ajuda outros desenvolvedores Java através do seu canal no YouTube, RinaldoDev. Apresenta palestras e escreve artigos, livros e publicações nas redes sociais. Sempre se empolga com novas tecnologias e também é entusiasta de jogos, liderança e desenvolvimento ágil.


Rodrigo Moutinho
Engenheiro de software e entusiasta DevOps, dedica sua carreira a ajudar desenvolvedores a automatizar a entrega do projeto sem precisar perder fins de semana ou depender de uma única pessoa no time (o herói do time). Palestrante e coordenador em eventos como Campus Party, The Developer’s Conference e Oracle CodeOne, compartilha dicas de DevOps e automação de software no projeto <https://cyborgdeveloper.tech/>.
Sandro Giacomozzi

Especialista em TI. Ajuda desenvolvedores Java que trabalham em aplicativos corporativos a se tornar especialistas em Java e DevOps praticando as habilidades certas. Voluntário e palestrante. Seu objetivo na indústria de software é tornar as organizações e as pessoas mais ágeis por meio de processos e ferramentas, com entregas mais rápidas, eficientes e de qualidade. Pessoas e tecnologia alinhadas à satisfação e entrega do cliente.


Tatiana Escovedo

Cientista de Dados, Engenheira de Software e Agilista apaixonada por ensinar e aprender. Doutora em Inteligência Artificial, Mestre em Engenharia de Software, Bacharel em Informática, Professora da PUC-Rio e Analista de Sistemas da Petrobras. Nas horas vagas, é bailarina e pensa em maneiras de mudar o mundo.


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

Comprimento 24 cm
Edição 1
Formato

Livro físico

Idioma Português
ISBN 9786588431214
Lançamento 19 de março de 2021
Largura 17 cm
Lombada 2,8 cm
Páginas 520
Volume 1142.4
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

Escreva um comentário

Acessar

Etiquetas: Livro Jornada Java, Jornada, Java