AWBK AWBZ-Ementa
AWBK AWBZ-Ementa
3
Lógica de Programação com Java para Iniciantes............................................................ 3
Banco de Dados e SQL para Iniciantes............................................................................. 5
Ignição Java....................................................................................................................... 6
Ignição Spring REST..........................................................................................................7
Especialização em Java e Padrões....................................................................................... 10
Especialista Java..............................................................................................................10
Testes Unitários com JUnit...............................................................................................22
Principais Design Patterns Aplicados com Java.............................................................. 24
TDD Essencial..................................................................................................................24
Especialização em REST, Spring e Jakarta Persistence....................................................... 26
Especialista Spring REST................................................................................................ 26
Especialista JPA...............................................................................................................40
Cursos Legados..................................................................................................................... 46
Java e Orientação a Objetos............................................................................................46
Web Design Responsivo com HTML5, CSS3 e BEM...................................................... 49
Mergulhando no JavaScript..............................................................................................51
Fullstack Angular e Spring............................................................................................... 52
Especialista React............................................................................................................60
Desenvolvimento Web com JSF 2................................................................................... 72
Sistemas Comerciais Java EE com CDI, JPA e PrimeFaces...........................................74
PrimeFaces Responsivo.................................................................................................. 79
Explorando a Linguagem JavaScript................................................................................80
Spring Framework Expert.................................................................................................82
Iniciação em Programação
3. Variáveis e constantes
3.1. Introdução a variáveis
3.2. Tipos de dados existentes
3.3. Tipos numéricos (Byte, Short, Integer, Long)
3.4. Exercício 01: Calculando o quadrado de um número
3.5. Tipo texto (String)
3.6. Exercício 02: Faça a impressão do nome e do sobrenome da pessoa
3.7. Tipo lógico (Boolean)
3.8. Exercício 03: Crie um programa que informa se o aluno passou de ano
3.9. Tipos primitivos
3.10. Alterando o valor de uma variável
3.11. Exercício 04: Encontre o valor total baseado na quantidade e no desconto
3.12. Constantes
3.13. Exercício 05: Constantes
3.14. Escolhendo bons nomes para variáveis e constantes
4. Operadores
4.1. Introdução a operadores
4.2. Operadores aritméticos
4.3. Exercício 01: Calculadora simples
4.4. Operadores relacionais
4.5. Exercício 02: Desconto de frete em compras acima de R$100,00
4.6. Operadores de atribuição
4.7. Exercício 03: Cálculo de gastos familiar
4.8. Operadores lógicos
4.9. Exercício 04: Verificação da possibilidade de aposentadoria
4.10. Concatenação de texto
4.11. Operadores de incremento e decremento
5. Estruturas de decisão
5.1. Introdução a estruturas de decisão
5.2. Estrutura “if”
5.3. Exercício 01: Verificar se a pessoa passou no concurso público
5.4. Utilizando o “if” encadeado
5.5. Exercício 02: Calcule o bônus do funcionário(a)
5.6. Estrutura "switch"
5.7. Exercício 03: Imprima o nome do dia da semana (domingo, segunda-feira, etc.)
6. Iteração
6.1. Introdução a iteração
6.2. Iterando com o “for”
6.3. Exercício 01: Encontre os números divisíveis por 3
6.4. Iterando com o “while”
6.5. Exercício 02: Repita o exercício anterior com o "while"
7. Vetores
7.1. Introdução a vetores
7.2. Declarando vetores de 1 dimensão
7.3. Exercício 01: Cadastrando as tarefas do dia
7.4. Declarando vetores de 2 dimensões
7.5. Exercício 02: Encontre a semana de maior faturamento
7.6. Declarando vetores com mais de 2 dimensões
8. Métodos
8.1. Introdução a métodos
8.2. Criando o primeiro método
8.3. Exercício 01: Crie um segundo método no algoritmo da aula passada
8.4. Recebendo parâmetros
8.5. Exercício 02: Identifique um novo padrão no algoritmo da aula passada
8.6. Retornando valores
8.7. Exercício 03: Crie uma pequena calculadora de subtração e adição
8.8. Recursividade
8.9. Exercício 04: Exibir a tabuada de um número qualquer
8.10. Escolhendo bons nomes para métodos
2. Relacionamentos
2.1. Por que mais de uma tabela?
2.2. A chave estrangeira
2.3. Relacionamento muitos-para-um
2.4. Relacionamento um-para-muitos
2.5. Desafio: Relacionando tabelas
2.6. Relacionamento muitos-para-muitos
2.7. Desafio: Relacionamento muitos-para-muitos
3. Consultas
3.1. Cláusula where
3.2. Relacionando várias tabelas em uma consultas
3.3. Trabalhando com datas
3.4. Desafio: Relacionando tabelas
4. Alterações
4.1. Alterando sua tabela
4.2. Trabalhando com índices
4.3. Deletando dados
4.4. Atualizando dados
4.5. Desafio: Alterando suas tabelas
5. Consultas avançadas
5.1. Função sum
5.2. Agrupando dados com group by
5.3. Função avg
5.4. Desafio: Funções e group by
5.5. Ordenando com order by
5.6. Filtrando com like
5.7. Resultados únicos com distinct
5.8. Filtrando com in
5.9. Consultas dentro de consultas - subselect
5.10. Desafio: subselect
Ignição Java
1. Mergulhando em Java e OO
1.1. Introdução e preparação de ambiente
1.2. Fundamentos da linguagem Java
1.3. Orientação a objetos, classes e objetos
1.4. Métodos, construtores e sobrecarga
1.5. Encapsulamento e JavaBeans
1.6. Pacotes
3. Persistindo os dados
3.1. Configurando a conexão com o banco de dados no projeto
3.2. Conhecendo e adicionando o Flyway no projeto
3.3. Criando a primeira migration com Flyway
3.4. Conhecendo o Jakarta Persistence (JPA)
3.5. Mapeando entidades com Jakarta Persistence
3.6. Implementando uma consulta com JPQL
3.7. Conhecendo o Spring Data JPA (SDJ) e criando um repositório
3.8. Injetando e usando o repositório do SDJ
3.9. Implementando Query Methods no repositório
3.10. Implementando endpoint de busca de recurso
3.11. Implementando endpoint de inclusão de recurso
3.12. Implementando endpoint de atualização de recurso
3.13. Implementando endpoint de exclusão de recurso
4. Evoluindo a API
4.1. Conhecendo e adicionando Jakarta Bean Validation no projeto
4.2. Validando entrada de dados com Jakarta Bean Validation
4.3. Implementando Domain Services
4.4. Implementando regra de negócio para restringir e-mails duplicados
4.5. Capturando exceções do controlador com @ExceptionHandler
4.6. Adicionando migration para criação da tabela de veículos
4.7. Criando e mapeando a entidade de veículo
4.8. Implementando os endpoints de consulta de veículos
4.9. Implementando o endpoint de inclusão de veículos
4.10. Implementando regras de negócio no cadastro de veículos
4.11. Protegendo propriedades somente-leitura
4.12. Validando em cascata
4.13. Validando com Validation Groups
Especialista Java
1. Plataforma Java e ambiente de desenvolvimento
1.1. Introdução ao curso
1.2. Como aprender Java e pedir ajuda
1.3. Por que aprender Java?
1.4. Um pouco sobre a história do Java
1.5. Conhecendo as plataformas Java
1.6. Conhecendo a Máquina Virtual Java (JVM)
1.7. JRE e JDK: qual é a diferença?
1.8. Conhecendo as versões do Java
1.9. Conhecendo as distribuições de JDKs e licenças de uso
1.10. Instalando o JDK no Ubuntu e macOS com SDKMan!
1.11. Instalando o JDK no Windows
1.12. Escolhendo um editor de código simples
7. Wrappers e boxing
7.1. Usando classes wrapper
7.2. Métodos de conversão
7.3. Autoboxing e unboxing
7.4. Comparando wrappers
7.5. Desafio: wrappers e boxing
7.6. Boas práticas: prefira tipos primitivos a wrappers
12. Herança
12.1. Conhecendo o projeto deste módulo
12.2. Criando classes etiquetadas (tagged classes)
12.3. Duplicando classes e isolando os comportamentos
12.4. Conhecendo herança e o relacionamento no diagrama de classes
12.5. Implementando herança
12.6. Sobrescrita de métodos
12.7. Modificador de acesso protected
12.8. Anotação @Override
12.9. Chamando método da superclasse com super
12.10. A classe Object
12.11. Invocando construtores da superclasse
12.12. Criando construtores com parâmetros na superclasse e subclasses
12.13. Boas práticas: sempre sobrescreva o método Object.toString
12.14. Modificador final em classes e métodos
12.15. Desafio: implementando herança
12.16. Sobrescrevendo o método Object.equals
14. Interfaces
14.1. Entendendo as interfaces
14.2. Criando a primeira interface
14.3. Implementando a primeira interface
14.4. Nova interface e injeção de dependências
14.5. Conhecendo o projeto da financeira
14.6. Quando herança de classes se torna um problema
14.7. Código mais flexível: refatorando para usar interfaces
14.8. Métodos default em interfaces
14.9. Classes abstratas com interfaces
14.10. Métodos privados em interfaces
14.11. Métodos estáticos em interfaces
14.12. Variáveis são estáticas e finais em interfaces
14.13. Implementando múltiplas interfaces
14.14. Herança de interfaces
14.15. Desafio: interfaces
16. Exceções
16.1. Introdução às exceções
16.2. Lançando exceções
16.3. Stack Trace: interpretando e analisando exceções
16.4. Capturando exceções com try/catch
16.5. Relançando exceções e printStackTrace
16.6. Capturando exceções com múltiplos blocos catch
16.7. Hierarquia das exceções, checked e unchecked exceptions
16.8. Capturando checked exceptions
16.9. Criando exceções customizadas
16.10. Variáveis de instância em exceções customizadas
16.11. Lançando e propagando checked exceptions
16.12. Capturando exceções menos específicas (upcasting)
16.13. Capturando e lançando nova exceção
16.14. Boa prática: embrulhe a causa raiz
16.15. Capturando exceções com multi-catch
16.16. Usando a cláusula finally
16.17. IntelliJ IDEA: lançando exceções na ferramenta de debug
16.18. IntelliJ IDEA: adicionando Java Exception Breakpoints
16.19. Boas práticas: lance exceções ao invés de retornar null
16.20. Boas práticas: não engula exceções
16.21. Desafio: exceções
17. Generics
17.1. Introdução aos Generics
17.2. Implementando métodos genéricos
17.3. Delimitando tipos genéricos
17.4. Criando classes genéricas
17.5. Criando interfaces genéricas
17.6. Usando curingas para tipos desconhecidos
17.7. Desafio: Generics
19. Enumerações
19.1. Usando enumerações à moda antiga
19.2. Criando tipos Enum
19.3. Diagrama de classes: enumeração
19.4. Usando os métodos do tipo Enum
19.5. Declarando e inicializando propriedades e construtores
19.6. Implementando métodos
19.7. Implementando métodos abstratos
19.8. Boas práticas: substitua parâmetros booleanos por enums
19.9. Desafio: enumerações
26. Optional
26.1. O jeito tradicional de evitar NPE
26.2. Evoluindo seu código com Optional
26.3. Testando valor do Optional com isPresent
26.4. Obtendo valor e lançando exceções com or Else Throw
26.5. Obtendo valor alternativo com orElse e orElseGet
26.6. Obtendo e testando valor com ifPresent e ifPresentOrElse
26.7. Testando e filtrando valor com Predicate
26.8. Aplicando transformações com map
26.9. Aplicando transformações com flatMap
26.10. Tipos especiais de Optional para tipos primitivos
26.11. Boas práticas ao usar Optional
26.12. Desafio: Optional
2. Explorando o JUnit
2.1. Introdução ao JUnit
2.2. Escrevendo o seu primeiro teste unitário
2.3. Explorando as asserções
2.4. Asserções de Exceptions
2.5. Asserções em listas
2.6. Asserções de Timeout
2.7. Asserções agrupadas com AssertAll
2.8. Executando do teste com Debug
2.9. Desabilitando testes unitários
2.10. Ignorando execução dos testes condicionalmente com Assumptions
2.11. Executando testes via Maven
2.12. Desafio - Escrevendo testes faltantes do SaudacaoUtil
2.13. Refatorando classe SaudacaoUtil
2.14. Desafio - Implementando conta bancária com testes unitários
6. Testes parametrizados
6.1. Testes parametrizados
6.2. Carregados dados de um CSV em um método de teste
6.3. Carregando valos de um Enum
7. Análise de cobertura de testes
7.1. Introdução a análise de cobertura de testes
7.2. Descobrindo cenário de testes não cobertos com ajuda da IntelliJ
7.3. Lacunas da análise de cobertura automática
7.4. Implementando o JaCoCo - Java Code Coverage Library
TDD Essencial
1. Introdução
1.1. Introdução
1.2. Eu já faço testes... ou será que não?
1.3. Tipos de testes automatizados
1.4. A importância do Teste de Unidade
1.5. Usando o JUnit para seu primeiro teste
3. O Código do Teste
3.1. O código do teste também é importante
3.2. Removendo duplicações
3.3. Defina bons nomes
3.4. O padrão Test Data Builders
3.5. Atenção as asserções
3.6. Testando exceções
21. Logging
21.1. Introdução ao Logback e SLF4J
21.2. Desafio: registrando logs de exceptions não tratadas
21.3. Criando uma conta no Loggly: serviço de gerenciamento de logs na nuvem
21.4. Configurando o appender do Loggly no Logback
21.5. Configurando o Logback para alternar as configurações por Spring Profiles
Especialista JPA
1. Introdução
1.1. Boas-vindas e como fazer o curso
1.2. Instalando o MySQL Server e o MySQL Workbench
1.3. O que é persistência de dados?
1.4. Criando tabelas e persistindo dados pelo MySQL Workbench
1.5. Usando o MySQL Client
1.6. Instalando o JDK
1.7. Instalando a IDE IntelliJ IDEA
1.8. Importando o projeto do GitHub
1.9. Entendendo e configurando o JUnit
1.10. Acessando o banco de dados com JDBC
1.11. O que é JPA?
1.12. O que é Mapeamento Objeto-Relacional (ORM)?
1.13. Jakarta Persistence vs Java Persistence API
3. Mapeamento básico
3.1. Conhecendo o modelo de domínio do projeto e criando as entidades
3.2. Mapeando as entidades e customizando os nomes das tabelas e colunas
3.3. Exercício: mapeando a classe Pedido
3.4. Entendendo a diferença entre mapear atributos ou métodos
3.5. Mapeando enumerações com @Enumerated
3.6. Mapeando objetos embutidos com @Embeddable
3.7. Conhecendo as estratégias para geração de identificador com @GeneratedValue
3.8. Configurando a geração de identificador com @SequenceGenerator
3.9. Configurando a geração de identificador com @TableGenerator
3.10. Configurando geração de identificador com a estratégia IDENTITY
3.11. Exercício: corrigindo classes de testes
4. Mapeamento de relacionamentos
4.1. Conhecendo os tipos de relacionamentos entre entidades
4.2. Mapeando relacionamentos muito-para-um com @ManyToOne
4.3. Exercício: mapeando relacionamentos muitos-para-um
4.4. Mapeando relacionamentos um-para-muitos com @OneToMany
4.5. Exercício: mapeando relacionamentos um-para-muitos
4.6. Mapeando autorelacionamentos com @ManyToOne e @OneToMany
4.7. Removendo objetos referenciados por outras entidades
4.8. Mapeando relacionamentos muitos-para-muitos com @ManyToMany e @JoinTable
4.9. Mapeamento relacionamentos um-para-um com @OneToOne
4.10. Exercício: mapeando relacionamentos um-para-um
4.11. Mapeando relacionamentos um-para-um com @JoinTable
4.12. Entendendo o funcionamento de Eager e Lazy Loading
4.13. Para o que serve o atributo optional?
4.14. Exercício: usando o atributo optional
5. Conhecendo o EntityManager
5.1. Estados e ciclo de vida dos objetos
5.2. Entendendo o cache de primeiro nível
5.3. Gerenciamento de transações
5.4. Funcionamento do método flush
5.5. Contexto de persistência e o dirty checking
5.6. Callbacks para eventos do ciclo de vida
5.7. Listeners para eventos do ciclo de vida
6. Mapeamento avançado
6.1. Conhecendo detalhes da anotação @Column
6.2. Exercício: anotação @Column
6.3. Mapeando chave composta com @IdClass
6.4. Exercício: usando @IdClass
6.5. Mapeando chave composta com @EmbeddedId
6.6. Mapeando chave primária e estrangeira na mesma coluna com @MapsId
6.7. Exercício: usando @MapsId
6.8. Declarando propriedades transientes com @Transient
6.9. Mapeando coleções de tipos básicos com @ElementCollection
6.10. Mapeando coleções de objetos embutidos com @ElementCollection
6.11. Mapeando mapas com @ElementCollection
6.12. Mapeando e persistindo dados de arquivos com @Lob
6.13. Exercício: persistindo fotos de produtos
6.14. Mapeando tabela secundária com @SecondaryTable
6.15. Mapeando herança com @MappedSuperclass
6.16. Entendendo a diferença entre estender uma entidade abstrata e usar a anotação
@MappedSuperclass
6.17. Mapeando herança com estratégia de tabela única (single table)
6.18. Mapeando herança com estratégia de uma tabela por classe (table per class)
6.19. Mapeando herança com a estratégia Joined Table
6.20. Exercício: voltando o mapeando de herança para tabela única
8. Operações em cascata
8.1. Configurando operações em cascata
8.2. Fazendo inserções de objetos em cascata
8.3. Exercício: fazendo inserções em cascata
8.4. Fazendo atualizações em cascata
8.5. Exercício: fazendo atualizações em cascata
8.6. Fazendo remoções em cascata
8.7. Entendendo a remoção em cascata com @ManyToMany
8.8. Removendo objetos órfãos com a propriedade orphanRemoval
8.9. Quando configurar operações em cascata?
15. Multitenancy
15.1. O que é Multitenancy (ou Multitenant) e os tipos de abordagem
15.2. Alteração na classe EntityManagerTest para melhorar a organização dos testes
15.3. Criando um novo schema no banco de dados
15.4. Implementando multitenancy com abordagem por schema
15.5. Implementando multitenancy com abordagem por máquina
15.6. Analisando uma aplicação web com Multitenant
15.7. Implementando multitenancy por coluna em uma aplicação web
2. Fundamentos da linguagem
2.1. Codificando, compilando e executando o programa "oi mundo"
2.2. Exercício: codificando um primeiro programa
2.3. Comentários
2.4. Sequências de escape
2.5. Palavras reservadas
2.6. Convenções de código
2.7. Trabalhando com variáveis
2.8. Nomeando variáveis
2.9. Operadores aritméticos
2.10. Exercício: variáveis e operadores aritméticos
2.11. Tipos primitivos
2.12. Outros operadores de atribuição
2.13. Conversão de tipos primitivos
2.14. Promoção aritmética
2.15. Exercício: tipos primitivos e outros operadores de atribuição
2.16. Trabalhando com strings
2.17. Recebendo entrada de dados
2.18. Operadores de comparação e igualdade
2.19. Estruturas de controle if, else if e else
2.20. Exercício: Strings, entrada de dados, operadores de comparação e if else
2.21. Escopo de variáveis
2.22. Operadores lógicos
2.23. Exercício: operadores lógicos
2.24. Estrutura de controle switch
2.25. Operador ternário
2.26. Operadores de incremento e decremento
2.27. Estrutura de controle while
2.28. Estrutura de controle do-while
2.29. Estrutura de controle for
2.30. Cláusulas break e continue
2.31. Exercício: operador ternário, decremento e estruturas de repetição
2.32. Introdução e instalação do Eclipse IDE
2.33. Depurando códigos com o Eclipse
2.34. Exercício: instalando o Eclipse IDE
6. Tópicos avançados
6.1. Coleta de lixo
6.2. Classe java.lang.Math
6.3. Desafio: classe java.lang.Math
6.4. Tratando e lançando exceções
6.5. Desafio: exceções
6.6. Classes String, StringBuffer e StringBuilder
6.7. Trabalhando com datas
6.8. Desafio: datas
6.9. Trabalhando com números
6.10. Desafio: números
6.11. Collections Framework
6.12. Métodos equals e hashCode
6.13. Desafio: collections
6.14. Arquivos JAR
6.15. Exercício: arquivos JAR
6.16. Documentação javadoc
6.17. Desafio: javadoc
6.18. Ordenando objetos
9. Serialização de objetos
9.1. Salvando e lendo objetos em arquivo
9.2. Enviando objetos na rede
9.3. Criando uma aplicação de chat
Mergulhando no JavaScript
1. Colocando os pés na água
1.1. Introdução ao curso
1.2. Por que devo aprender JavaScript moderno? (ES6+)
1.3. Configurando o ambiente de desenvolvimento
1.4. Obtendo o melhor do suporte
2. A superfície do JavaScript
2.1. Introdução ao módulo
2.2. Hello World com JavaScript
2.3. Criando objetos
2.4. Criando Array de objetos
2.5. O princípio de funções
2.6. Condicionais
2.7. Programação funcional vs Programação imperativa
2.8. Truthy e Falsy
4. Orientação a Objetos
4.1. Introdução ao módulo de OOP
4.2. Criando uma classe
4.3. Métodos e propriedades dentro de uma classe
4.4. Constructor
4.5. Heranças
4.6. Object.prototype e Arrow function
5. Desestruturação e Spread
5.1. O que é desestruturação?
5.2. Desestruturando objetos
5.3. Desestruturando arrays
5.4. Desestruturando funções
5.5. Introdução ao Spread operator
5.6. Clonando objetos com spread
5.7. Arrays e spread
5.8. Utilizando Spread dentro de parâmetros de funções
5.9. Recebendo argumentos com Rest operator
5.10. Desestruturando um array com Rest operator
8. Módulos e pacotes
8.1. Introdução ao NPM
8.2. Instalando e utilizando um pacote
8.3. Gitignore e node_modules
9. TypeScript
9.1. Por que usar TypeScript?
9.2. Tipando variáveis
9.3. Type aliasing
9.4. Tipando argumentos de funções
9.5. Tipando objetos e propriedades opcionais
9.6. Union vs Intersection
9.7. Interfaces
9.8. Exportando e importando interfaces e types
9.9. Types vs Interfaces
9.10. Generics
9.11. Conclusão e próximos passos
2. Fundamentos do REST
2.1. O que é um recurso?
2.2. Representações de um recurso
2.3. Modelo de maturidade Richardson - Nível 0
2.4. Modelo de maturidade Richardson - Nível 1
2.5. Modelo de maturidade Richardson - Nível 2
2.6. Modelo de maturidade Richardson - Nível 3
2.7. HATEOAS
2.8. Segurança de APIs REST
2.9. Idempotência
6. Segurança da API
6.1. Implementando autenticação Basic
6.2. Fluxo básico do OAuth
6.3. Implementando segurança com OAuth 2 e Password Flow
6.4. JSON Web Tokens - JWT
6.5. Configurando JWT no projeto
6.6. Renovando o access token com o refresh token
6.7. Movendo o refresh token para o cookie
6.8. Movendo o refresh token do cookie para a requisição
6.9. O que é CORS?
6.10. Criando filtro para CORS
6.11. Movendo o usuário para o banco de dados
6.12. Adicionando permissões de acesso
6.13. Desafio: Finalizando permissões de acesso
6.14. Implementando o logout
8. Introdução ao Angular
8.1. O que é Angular?
8.2. AngularJS vs Angular 2/4/X: a confusão das versões
8.3. Instalando o Visual Studio Code
8.4. Introdução ao HTML
8.5. Introdução ao CSS
8.6. Instalando o Node.js e NPM
8.7. Instalando e criando um projeto com Angular CLI
8.8. Abrindo o projeto no VS Code
8.9. Abrindo e executando um exemplo do curso
2. Introdução ao React
2.1. Introdução ao React
2.2. Entendendo mais sobre SPAs
2.3. Criando uma aplicação React com CRA
2.4. Entendendo o código gerado pelo CRA
2.5. Habilitando o ESLint no VSCode
2.6. Criando o componente de Hello World
2.7. Entendendo um pouco mais sobre o JSX
2.8. Incorporando expressões dentro do JSX
2.9. JSX também é uma expressão
2.10. Atributos com JSX
2.11. A segurança do JSX
2.12. Como o JSX é Renderizado no DOM
2.13. Atualizando um componente em tempo real
2.14. Os estados dentro de componentes React (com o hook useState)
2.15. Como funcionam as props dentro do React
2.16. Encapsulando componentes com props.children
2.17. Introdução à estilização de componentes (atributo style)
2.18. Estilizando componentes com CSS (de forma dinâmica)
2.19. Estilizando componentes com Styled Components
2.20. A importância histórica dos componentes baseados em classe
2.21. Criando um Class Component (Componente baseado em classe)
2.22. Acessando props dentro de um Class Component
2.23. Estados em Class Components
2.24. Introdução aos ciclos de vida com componentDidMount
2.25. Recuperando atualizações do estado com componentDidUpdate
2.26. Limpando efeitos colaterais com componentWillUnmount
2.27. Renderização condicional de várias formas
2.28. Manipulação de eventos
2.29. Interligação com formulários
2.30. Dica preciosa para lidar com formulários
2.31. Renderizando listas
3. Hooks avançados
3.1. Introdução aos Hooks
3.2. "Ciclos de vida" com o hook useEffect
3.3. Criando um hook personalizado
3.4. O estado local dos hooks
3.5. Passando parâmetros para os hooks
3.6. Como realmente funciona o hook useRef
3.7. Gerenciamento de estado complexo com useReducer
3.8. Gerenciando funções imperativas do DOM com useImperativeHandle
3.9. Memorizando funções com useCallback
3.10. Trocando tempo por espaço com useMemo
3. Principais componentes
3.1. Atributos comuns de componentes
3.2. Entradas, saídas de texto e imagens
3.3. Menus, caixas de listagem e itens de seleção
3.4. Campos de checagem e botões radio
3.5. Botões e links
3.6. Painéis
3.7. Mensagens
3.8. Tabelas de dados
3.9. Componentes dentro de células
3.10. Aplicando estilos em tabelas
3.11. Arquivos JavaScript e CSS
3.12. Exercícios: usando componentes e aplicando estilos
3.13. Projeto do curso: prototipando tela de consulta de lançamento
3.14. Projeto do curso: prototipando tela de novo lançamento
3.15. Exercícios: prototipando telas do projeto do curso
4. Conversão e validação
4.1. Conversores de números e datas
4.2. Customizando mensagens de erro de conversão
4.3. Exercício: usando conversores
4.4. Usando validadores
4.5. Customizando mensagens de erro de validação
4.6. Atributo immediate
4.7. Exercício: usando validadores
4.8. Criando conversores personalizados
4.9. Criando validadores personalizados
4.10. Exercício: criando conversores e validadores
4.11. Projeto do curso: usando conversores e validadores
4.12. Projeto do curso: conversor personalizado
4.13. Projeto do curso: validador de data futura
4.14. Projeto do curso: validador condicional
4.15. Exercício: usando conversores e validadores no projeto do curso
5. Persistência de dados
5.1. Preparando um banco de dados MySQL
5.2. Conhecendo e configurando JPA 2 com Hibernate
5.3. Mapeamento objeto-relacional
5.4. Testando o Hibernate
5.5. Carregando menu de pessoas do banco de dados
5.6. Integrando as telas com Hibernate
5.7. Exclusão de lançamentos do banco de dados
5.8. Transações e o pattern Open Session in View
5.9. Pattern Repository
5.10. Implementando regras de negócio
5.11. Exercício: implementando o pattern repository e a camada de regras de negócio
7. Colocando em produção
7.1. Preparando o ambiente Java em um servidor cloud
7.2. Fazendo deploy da aplicação na nuvem
PrimeFaces Responsivo
1. Introdução
1.1. Introdução ao workshop
1.2. O que é Responsive Web Design?
1.3. PrimeFaces é responsivo?
1.4. Apresentando o projeto
1.5. Ambiente de desenvolvimento do projeto
3. Componentes responsivos
3.1. DataTable responsiva com prioridade de colunas
3.2. DataTable responsiva com reflow
3.3. Configurando o tema do Bootstrap
3.4. TabView responsivo
3.5. PanelGrid responsivo e componentes fluidos (ui-fluid)
3.6. Dialog responsivo
4. Finalizando o projeto
4.1. Adicionando endereços
4.2. Adicionando clientes
4.3. Editando clientes
2. Fundamentos do JavaScript
2.1. Variáveis e hoisting
2.2. Tipagem dinâmica
2.3. Tipo Number
2.4. Tipo String
2.5. Tipo Boolean
2.6. O operador typeof
2.7. Operadores aritméticos
2.8. Operadores de comparação
2.9. Operadores lógicos
2.10. Estrutura de controle if, else if, else
2.11. Operador ternário
2.12. Estrutura de controle for
2.13. Estrutura de controle while
2.14. Valores null e undefined
3. Funções
3.1. Introdução a funções
3.2. Alert e console.log
3.3. Funções matemáticas
3.4. Criando funções
3.5. Escopo de função e global
3.6. Closures
4. Introdução a objetos
4.1. Introdução a objetos
4.2. Criando objetos
4.3. Objetos dentro de objetos
4.4. Apagando propriedades do objeto
4.5. Iterando sobre propriedades do objeto
4.6. Comparando objetos
5. Arrays
5.1. Introdução a arrays
5.2. Criando arrays
5.3. Array vs Object
5.4. Adicionando e removendo elementos do array
5.5. Iterando nos elementos com forEach
5.6. Funções toString() e join()
5.7. Elementos do array
5.8. Mais da API de arrays
6. JavaScript no Browser
6.1. Conhecendo o Developer Tools
6.2. Debug com o Developer Tools
6.3. Boas práticas
6.4. Objeto window
6.5. CDN vs local hosting
7. jQuery
7.1. Introdução ao jQuery
7.2. Seletores
7.3. CSS
7.4. Introdução ao HTTP
7.5. Ajax e promises
7.6. Manipulação do DOM
7.7. Plugins jQuery
9. Funções e objetos
9.1. Entendendo o protótipo do objeto
9.2. Como funciona o shadowing
9.3. Funções fábrica
9.4. Funções construtoras
9.5. Module Pattern
9.6. Propriedade prototype das funções
9.7. Usando a função bind
9.8. Disparando eventos customizados
9.9. Chamando funções através de call e apply
9.10. Namespaces
9.11. Conclusão
Spring Framework Expert
1. Introdução
1.1. Introdução ao curso
1.2. Conhecendo o projeto do curso
1.3. Como usar o suporte
1.4. Introdução ao protocolo HTTP
1.5. Introdução ao Maven
1.6. Instalando e configurando o Eclipse
1.7. Instalando o Apache Tomcat
1.8. Iniciando o Tomcat no Eclipse
1.9. Instalando e configurando o MySQL no Mac
1.10. Instalando e configurando o MySQL no Windows
1.11. Instalando o myJrebel no Eclipse
2. Introdução ao Spring
2.1. O Spring
2.2. Spring vs Java EE
2.3. O padrão MVC
2.4. Spring MVC vs JSF
2.5. Por dentro do Spring MVC
4. O Thymeleaf
4.1. O que é uma template engine?
4.2. Thymeleaf vs JSP
4.3. Mantendo os dados no formulário
4.4. Thymeleaf e Spring
4.5. Framework extensível
4.6. Plugin do Eclipse para o Thymeleaf
6. Logging
6.1. Introdução
6.2. Configurando o SLF4J com Log4j 2
6.3. Configurando níveis de log com Log4j2
27. Internacionalização
27.1. O header "Accept-Language"
27.2. Configurando a internacionalização e o Thymeleaf
27.3. Internacionalizando as mensagens de validação
27.4. Desafio: internacionalizando sistema