Precisa de ajuda?

+ 55 11 99384-2442
[email protected]

Livro Impresso

Jornada Java



java, jornada, jornada java, Livro Jornada Java


Sinopse

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

Metadado adicionado por Brasport em 31/03/2021

Encontrou alguma informação errada?

ISBN relacionados

--


Metadados adicionados: 31/03/2021
Última alteração: 31/03/2021

Autores e Biografia

Medeiros, Alison (Autor)

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



Áreas do selo: AutoajudaEducaçãoLiteratura nacionalTécnicos

A Editora Brasport foi fundada em janeiro de 1995 com o objetivo principal de proporcionar aos nossos estudantes e profissionais de Informática e Negócios uma literatura técnica de qualidade superior, apostando, acima de tudo, no potencial do talento do autor nacional. É, portanto, uma editora especializada e comprometida com as necessidades crescentes do nosso mercado de tecnologia. Sua vocação editorial é oferecer uma bibliografia técnica de alto nível para os diferentes nichos de mercado: ensino técnico, acadêmico e de aperfeiçoamento e certificação profissional. Hoje, a Brasport conta com mais de 600 títulos produzidos e uma comercialização de quase 2 milhões de exemplares. Além disso, acompanhando as mudanças no mercado editorial, a Brasport já produziu mais de 100 e-Books para diferentes plataformas e, recentemente, começou a fazer publicações digitais em inglês.

Saiba mais

Para acessar as informações desta seção, Faça o login.