O documento discute boas práticas para o uso do JavaServer Faces (JSF), incluindo: otimizar requisições AJAX e atualizações parciais de páginas; depurar o ciclo de vida de uma requisição JSF; usar Facelets para melhor desempenho; integrar JSF com bibliotecas como RichFaces e ExtJS.
JavaServer Faces Produtividade em DesenvolvimentoEduardo Bregaida
O documento discute as vantagens e funcionalidades do framework JavaServer Faces (JSF), incluindo especificações, managed beans, ciclo de vida, templates e novidades no JSF 2.0. Uma apresentação passa por tópicos como produtividade no desenvolvimento com JSF, implementações e IDEs suportadas.
O documento descreve um curso de JavaServer Faces oferecido pela empresa AlgaWorks. O curso dura 40 horas e ensina sobre desenvolvimento web usando JSF. A AlgaWorks também oferece outros cursos relacionados a Java e metodologias ágeis.
JavaServer Faces - Desenvolvendo aplicações web com produtividadeRafael Ponte
O documento apresenta JavaServer Faces (JSF), um framework MVC para desenvolvimento de aplicações web com componentes. JSF é uma especificação padrão que fornece produtividade através de uma variedade de componentes ricos prontos para uso e integração com diversas ferramentas de desenvolvimento.
This document discusses the development of a web framework based on components. It outlines some key features of the framework including:
- Configuration of components through a model
- Components can be reused and composed to build interfaces
- Events allow components to interact and validate data
The framework is designed to simplify development of web applications using reusable components with an interface to backend services. Standard components are proposed to represent common interface elements.
O documento fornece uma introdução ao Java Server Faces (JSF), explicando seu funcionamento baseado no padrão MVC, com detalhes sobre o ciclo de vida de requisições, uso de XHTML, Managed Beans e componentes de interface.
O documento introduz o framework JavaServer Faces (JSF) para desenvolvimento de interfaces web. Ele descreve o funcionamento entre cliente e servidor, apresenta os tópicos cobertos como JSF, vantagens e desvantagens, e demonstra como configurar o ambiente de desenvolvimento e criar um formulário simples com JSF.
Os 10 maus hábitos dos desenvolvedores JSFRafael Ponte
O documento lista os 10 piores hábitos de desenvolvedores JSF e fornece soluções para cada um. 1) A maioria dos desenvolvedores não entende plenamente o ciclo de vida do JSF; 2) Componentes AJAX são usados de forma ineficiente; 3) Paginação de registros na sessão mata a escalabilidade.
Lidando com o Caos: Testando Código PLSQL em um Projeto CriticoRafael Ponte
O documento descreve as dificuldades enfrentadas por um desenvolvedor em um projeto crítico que envolvia grande volume de dados e regras de negócio complexas em PL/SQL. Para lidar com esses desafios, a equipe implementou práticas como funções pequenas com nomes legíveis, testes automatizados utilizando uma biblioteca Java para executar procedimentos PL/SQL e validar os resultados.
JavaServer Faces Produtividade em DesenvolvimentoEduardo Bregaida
O documento discute as vantagens e funcionalidades do framework JavaServer Faces (JSF), incluindo especificações, managed beans, ciclo de vida, templates e novidades no JSF 2.0. Uma apresentação passa por tópicos como produtividade no desenvolvimento com JSF, implementações e IDEs suportadas.
O documento descreve um curso de JavaServer Faces oferecido pela empresa AlgaWorks. O curso dura 40 horas e ensina sobre desenvolvimento web usando JSF. A AlgaWorks também oferece outros cursos relacionados a Java e metodologias ágeis.
JavaServer Faces - Desenvolvendo aplicações web com produtividadeRafael Ponte
O documento apresenta JavaServer Faces (JSF), um framework MVC para desenvolvimento de aplicações web com componentes. JSF é uma especificação padrão que fornece produtividade através de uma variedade de componentes ricos prontos para uso e integração com diversas ferramentas de desenvolvimento.
This document discusses the development of a web framework based on components. It outlines some key features of the framework including:
- Configuration of components through a model
- Components can be reused and composed to build interfaces
- Events allow components to interact and validate data
The framework is designed to simplify development of web applications using reusable components with an interface to backend services. Standard components are proposed to represent common interface elements.
O documento fornece uma introdução ao Java Server Faces (JSF), explicando seu funcionamento baseado no padrão MVC, com detalhes sobre o ciclo de vida de requisições, uso de XHTML, Managed Beans e componentes de interface.
O documento introduz o framework JavaServer Faces (JSF) para desenvolvimento de interfaces web. Ele descreve o funcionamento entre cliente e servidor, apresenta os tópicos cobertos como JSF, vantagens e desvantagens, e demonstra como configurar o ambiente de desenvolvimento e criar um formulário simples com JSF.
Os 10 maus hábitos dos desenvolvedores JSFRafael Ponte
O documento lista os 10 piores hábitos de desenvolvedores JSF e fornece soluções para cada um. 1) A maioria dos desenvolvedores não entende plenamente o ciclo de vida do JSF; 2) Componentes AJAX são usados de forma ineficiente; 3) Paginação de registros na sessão mata a escalabilidade.
Lidando com o Caos: Testando Código PLSQL em um Projeto CriticoRafael Ponte
O documento descreve as dificuldades enfrentadas por um desenvolvedor em um projeto crítico que envolvia grande volume de dados e regras de negócio complexas em PL/SQL. Para lidar com esses desafios, a equipe implementou práticas como funções pequenas com nomes legíveis, testes automatizados utilizando uma biblioteca Java para executar procedimentos PL/SQL e validar os resultados.
Desenvolver software é uma luta contra complexidade. Cada linha de código que um programador escreve pode ser mais um ponto de falha no software. Para diminuir os riscos é fundamental que o programador e a equipe adotem uma cultura na escrita de testes, de preferência automatizados, para garantir que o software se comporte como esperado durante todo o ciclo de vida do desenvolvimento. Nesta apresentação explanarei a importância dos testes automatizados de acordo com a cultura ágil, os tipos de testes que podemos escrever, os benefícios obtidos a médio e longo prazo, e as dificuldades ao escreve-los. Será também apresentado algumas ferramentas úteis e relatos da minha experiência na escrita de testes no mercado de trabalho
Greenbar - Testes automatizados na sua empresaRafael Ponte
Experiência de quase 2 anos tentando inserir e manter a cultura de testes automatizados numa empresa. Desafios e as barreiras enfrentadas ao adotar a cultura de testes automatizados nesta empresa, onde acertamos e onde erramos, como a equipe (e isso inclui os gerentes) responderam a mudança e como isso impactou nos sprints e entrega de software.
Migrations for Java (Javou #4 - JavaCE)Rafael Ponte
O documento descreve a evolução incremental de um banco de dados utilizando migrations. As principais etapas descritas são: 1) Criar scripts SQL para cada mudança no banco de dados; 2) Rodar os scripts no banco de forma controlada; 3) Versionar as mudanças realizadas no banco.
O documento descreve o framework JavaServer Faces (JSF), incluindo: 1) O que é JSF e suas principais características como um framework baseado em componentes, dirigido a eventos e padrão de mercado; 2) Por que usar JSF, com seus benefícios como produtividade, reusabilidade e suporte a diversas ferramentas; 3) Uma visão geral da tecnologia, abordando conceitos como componentes, renderers, managed beans e conversão/validação.
O documento discute o framework JavaServer Faces (JSF) para desenvolvimento de aplicações web. Ele explica o que é JSF, sua estrutura, ciclo de vida, conversores e validadores, conjuntos de componentes disponíveis e as novidades do JSF 2.0 como anotações e melhor integração com Ajax.
O documento discute JavaServer Faces (JSF), um framework para desenvolvimento web em Java. JSF facilita a criação de interfaces gráficas, expressões de linguagem para acessar objetos e validação de campos. O documento também explica como configurar beans, formulários, controllers e arquivos de configuração para construir aplicações web simples com JSF.
Play Framework - Desenvolvendo Aplicações Web com Java sem DorAllyson Barros
O documento apresenta o framework Play! para desenvolvimento de aplicações web com Java. Apresenta uma introdução ao framework, instruções de instalação e configuração, criação de modelos, controllers e views, utilização de módulos e deploy da aplicação.
O documento introduz o framework JavaServer Faces (JSF), descrevendo-o como uma especificação baseada em componentes para construir interfaces com o usuário para aplicações web usando o padrão MVC. O JSF facilita a criação de telas, a transferência de dados entre telas e camadas, e a produtividade ao criar aplicações web rapidamente através de ferramentas RAD.
O documento apresenta as tecnologias Servlets, JSP e JSF para desenvolvimento de sistemas web. Resume os conceitos básicos de cada tecnologia e demonstra seu uso através de códigos e páginas web geradas.
O documento apresenta um plano de aula sobre desenvolvimento web com JavaServer Faces (JSF), abordando os fundamentos e características do JSF, exemplos básicos de implementação e configuração do ambiente.
O documento apresenta uma aula sobre o framework JavaServer Faces (JSF) com Spring. Discutem-se os principais conceitos de JSF como componentes, renderers, managed beans e ciclo de vida. Também são explicados elementos como configuração do JSF, wrappers HTML, propriedades comuns e integração do JSF com Spring.
O documento descreve conceitos de pilhas e filas em Java. Ele apresenta:
1) As definições de pilha e fila, incluindo os princípios LIFO e FIFO.
2) As principais operações de pilhas e filas como push, pop, enqueue e dequeue.
3) Implementações de pilhas e filas usando arranjos em Java e suas complexidades de tempo e espaço.
Este documento fornece informações sobre os cursos e recursos educacionais oferecidos pela Caelum, incluindo cursos online, blog, newsletter e redes sociais. Além disso, descreve brevemente o conteúdo e objetivo de uma apostila sobre desenvolvimento Java.
1. O documento discute o desenvolvimento web com JSF 2 e JPA 2.
2. Os tópicos incluem banco de dados, JDBC, JPA e Hibernate, web container, visão geral do JSF 2, componentes visuais, Facelets, navegação e managed beans.
3. O documento fornece exemplos de código e exercícios para cada tópico.
O documento apresenta uma introdução ao Domain-Driven Design (DDD), definindo-o como uma abordagem de design de software focada na lógica do domínio para criar um modelo de domínio. Detalha alguns conceitos-chave do DDD como linguagem ubíqua, padrões de domínio e arquitetura orientada a camadas. Apresenta também vantagens da adoção do DDD e referências para aprendizado adicional sobre o tópico.
O documento discute a tecnologia JavaServer Faces (JSF), incluindo uma breve história, explicações sobre o que é JSF e como funciona, exemplos de tags HTML vs tags JSF, e discussões sobre frameworks relacionados como PrimeFaces, RichFaces e IceFaces.
O documento discute protótipos de baixa e alta fidelidade, explicando que protótipos de alta fidelidade apoiam a avaliação de todos os detalhes de um design, mas requerem mais tempo e recursos para serem construídos, enquanto protótipos de baixa fidelidade não apoiam a avaliação de todos os detalhes mas necessitam de pouco tempo e recursos para serem construídos e apoiam a avaliação do modelo conceitual.
O documento apresenta uma aula sobre pilhas ministrada pelo professor Sérgio Souza Costa. A aula discute o conceito de pilha, as operações básicas de empilhar e desempilhar elementos, e apresenta uma implementação de pilha usando vetores em C com funções como criaPilha(), empilha(), desempilha() e topo().
O documento discute o desenvolvimento de aplicações web usando Java Server Faces (JSF). Aborda os principais conceitos como camadas, arquitetura MVC, ciclo de vida JSF e navegação entre páginas. Também apresenta o uso de managed beans para navegação dinâmica.
Existem diversas arquiteturas no mundo Android hoje em dia, a mais vista entre elas é a MVVM que utiliza programação imperativa. Nessa palestra vamos falar sobre MVI e como criar uma arquitetura reative utilizando um fluxo unidirecional entre as ações do usuário e os diferentes estados apresentados na tela.
Desenvolver software é uma luta contra complexidade. Cada linha de código que um programador escreve pode ser mais um ponto de falha no software. Para diminuir os riscos é fundamental que o programador e a equipe adotem uma cultura na escrita de testes, de preferência automatizados, para garantir que o software se comporte como esperado durante todo o ciclo de vida do desenvolvimento. Nesta apresentação explanarei a importância dos testes automatizados de acordo com a cultura ágil, os tipos de testes que podemos escrever, os benefícios obtidos a médio e longo prazo, e as dificuldades ao escreve-los. Será também apresentado algumas ferramentas úteis e relatos da minha experiência na escrita de testes no mercado de trabalho
Greenbar - Testes automatizados na sua empresaRafael Ponte
Experiência de quase 2 anos tentando inserir e manter a cultura de testes automatizados numa empresa. Desafios e as barreiras enfrentadas ao adotar a cultura de testes automatizados nesta empresa, onde acertamos e onde erramos, como a equipe (e isso inclui os gerentes) responderam a mudança e como isso impactou nos sprints e entrega de software.
Migrations for Java (Javou #4 - JavaCE)Rafael Ponte
O documento descreve a evolução incremental de um banco de dados utilizando migrations. As principais etapas descritas são: 1) Criar scripts SQL para cada mudança no banco de dados; 2) Rodar os scripts no banco de forma controlada; 3) Versionar as mudanças realizadas no banco.
O documento descreve o framework JavaServer Faces (JSF), incluindo: 1) O que é JSF e suas principais características como um framework baseado em componentes, dirigido a eventos e padrão de mercado; 2) Por que usar JSF, com seus benefícios como produtividade, reusabilidade e suporte a diversas ferramentas; 3) Uma visão geral da tecnologia, abordando conceitos como componentes, renderers, managed beans e conversão/validação.
O documento discute o framework JavaServer Faces (JSF) para desenvolvimento de aplicações web. Ele explica o que é JSF, sua estrutura, ciclo de vida, conversores e validadores, conjuntos de componentes disponíveis e as novidades do JSF 2.0 como anotações e melhor integração com Ajax.
O documento discute JavaServer Faces (JSF), um framework para desenvolvimento web em Java. JSF facilita a criação de interfaces gráficas, expressões de linguagem para acessar objetos e validação de campos. O documento também explica como configurar beans, formulários, controllers e arquivos de configuração para construir aplicações web simples com JSF.
Play Framework - Desenvolvendo Aplicações Web com Java sem DorAllyson Barros
O documento apresenta o framework Play! para desenvolvimento de aplicações web com Java. Apresenta uma introdução ao framework, instruções de instalação e configuração, criação de modelos, controllers e views, utilização de módulos e deploy da aplicação.
O documento introduz o framework JavaServer Faces (JSF), descrevendo-o como uma especificação baseada em componentes para construir interfaces com o usuário para aplicações web usando o padrão MVC. O JSF facilita a criação de telas, a transferência de dados entre telas e camadas, e a produtividade ao criar aplicações web rapidamente através de ferramentas RAD.
O documento apresenta as tecnologias Servlets, JSP e JSF para desenvolvimento de sistemas web. Resume os conceitos básicos de cada tecnologia e demonstra seu uso através de códigos e páginas web geradas.
O documento apresenta um plano de aula sobre desenvolvimento web com JavaServer Faces (JSF), abordando os fundamentos e características do JSF, exemplos básicos de implementação e configuração do ambiente.
O documento apresenta uma aula sobre o framework JavaServer Faces (JSF) com Spring. Discutem-se os principais conceitos de JSF como componentes, renderers, managed beans e ciclo de vida. Também são explicados elementos como configuração do JSF, wrappers HTML, propriedades comuns e integração do JSF com Spring.
O documento descreve conceitos de pilhas e filas em Java. Ele apresenta:
1) As definições de pilha e fila, incluindo os princípios LIFO e FIFO.
2) As principais operações de pilhas e filas como push, pop, enqueue e dequeue.
3) Implementações de pilhas e filas usando arranjos em Java e suas complexidades de tempo e espaço.
Este documento fornece informações sobre os cursos e recursos educacionais oferecidos pela Caelum, incluindo cursos online, blog, newsletter e redes sociais. Além disso, descreve brevemente o conteúdo e objetivo de uma apostila sobre desenvolvimento Java.
1. O documento discute o desenvolvimento web com JSF 2 e JPA 2.
2. Os tópicos incluem banco de dados, JDBC, JPA e Hibernate, web container, visão geral do JSF 2, componentes visuais, Facelets, navegação e managed beans.
3. O documento fornece exemplos de código e exercícios para cada tópico.
O documento apresenta uma introdução ao Domain-Driven Design (DDD), definindo-o como uma abordagem de design de software focada na lógica do domínio para criar um modelo de domínio. Detalha alguns conceitos-chave do DDD como linguagem ubíqua, padrões de domínio e arquitetura orientada a camadas. Apresenta também vantagens da adoção do DDD e referências para aprendizado adicional sobre o tópico.
O documento discute a tecnologia JavaServer Faces (JSF), incluindo uma breve história, explicações sobre o que é JSF e como funciona, exemplos de tags HTML vs tags JSF, e discussões sobre frameworks relacionados como PrimeFaces, RichFaces e IceFaces.
O documento discute protótipos de baixa e alta fidelidade, explicando que protótipos de alta fidelidade apoiam a avaliação de todos os detalhes de um design, mas requerem mais tempo e recursos para serem construídos, enquanto protótipos de baixa fidelidade não apoiam a avaliação de todos os detalhes mas necessitam de pouco tempo e recursos para serem construídos e apoiam a avaliação do modelo conceitual.
O documento apresenta uma aula sobre pilhas ministrada pelo professor Sérgio Souza Costa. A aula discute o conceito de pilha, as operações básicas de empilhar e desempilhar elementos, e apresenta uma implementação de pilha usando vetores em C com funções como criaPilha(), empilha(), desempilha() e topo().
O documento discute o desenvolvimento de aplicações web usando Java Server Faces (JSF). Aborda os principais conceitos como camadas, arquitetura MVC, ciclo de vida JSF e navegação entre páginas. Também apresenta o uso de managed beans para navegação dinâmica.
Existem diversas arquiteturas no mundo Android hoje em dia, a mais vista entre elas é a MVVM que utiliza programação imperativa. Nessa palestra vamos falar sobre MVI e como criar uma arquitetura reative utilizando um fluxo unidirecional entre as ações do usuário e os diferentes estados apresentados na tela.
Spring + Tapestry Um novo paradigma de desenvolvimento webelliando dias
O documento discute o framework Spring, incluindo sua organização, inversão de controle, integração com bancos de dados e frameworks web, transações declarativas, uso de mocks e projetos relacionados. O Spring é um container leve que facilita o desenvolvimento web, diminui código e integra com diversas tecnologias de forma portável e testável.
5 técnicas para acelerar o desenvolvimento e reduzir Bugs em aplicações WEBRafael Chinelato Del Nero
O documento discute técnicas para acelerar o desenvolvimento e reduzir bugs em aplicações web Java, incluindo: 1) manipulação efetiva das fases do JSF; 2) uso efetivo de Ajax; 3) uso efetivo de escopos do JSF; 4) reuso de componentes prontos; e 5) uso do Facelets. Ele também discute as vantagens e desvantagens do JSF e exemplos de implementações e extensões populares.
Projetos reativos com Angular, RxJS e Redux (ngRx)Loiane Groner
O documento resume uma apresentação sobre programação reativa com Angular, RxJS e Redux (ngRx). Apresenta conceitos como Observables, Promises, padrão Observer e como desenvolver funcionalidades reativas em Angular com forms, http, pipes e arquitetura escalável com ngrx/store. Inclui exemplos de uso de redux para gerenciamento de estado e integração com serviços HTTP.
Um framework para validação automática de modelos aplicado ao subsistema de e...Italo Pinto Rodrigues
O documento apresenta a defesa final de dissertação de mestrado de Italo Pinto Rodrigues sobre um framework para validação automática de modelos aplicado ao subsistema de energia de um picossatélite. O framework propõe: 1) Definir regras para modelar equipamentos do subsistema de energia; 2) Demonstrar interface entre simulação e modelo físico; 3) Desenvolver estratégia de associação entre simulação e execução automática de testes funcionais. O documento descreve conceitos, a demonstração do framework e conclusões, contribu
O documento descreve um Web Service Checker para verificar o status de disponibilidade de serviços web externos antes de realizar requisições, evitando I/O desnecessário. Ele funciona através de interceptadores que checam um cache de status e lançam falhas caso o serviço esteja indisponível. Classes como ServicesCheckerSchedule e WebServiceCheckerInterceptor implementam essa verificação e manutenção do cache. A arquitetura e projetos são configurados para utilizar esses componentes.
Semelhante a Boas Práticas com JavaServer Faces (Jsf) (7)
TechDay: 10 Features do Oracle que voce nao conhecia - CONNECT BY CLAUSERafael Ponte
Todo banco de dados possui features na qual desconhecemos, o que acaba nos levando a soluções mais complicadas ou menos eficientes, com o Oracle não é diferente. Por esse motivo, pretendo apresentar de forma bastante didática uma série com 10 features do Oracle 11g que eu desconhecia e que tem facilitado bastante minha vida desde meados de 2016.
Como primeira feature, apresento o CONNECT BY CLAUSE, na qual nos permite escrever consultas hierárquicas de forma simples levando todo o processamento para dentro do banco de dados. Além disso, também apresento outras maneiras de tirar proveito desta feature no dia a dia.
Apresentação de retrospectiva do ano de 2018 para exibir o que a equipe de desenvolvedores da MDIAS BRANCO obteve com seus tech-talks semanais, conhecidos como TechDays, e mostrando ranking dos profissionais que mais palestraram durante o ano.
Arquitetura Java - Escalando além do HypeRafael Ponte
É muito comum evangelizarem que hoje em dia uma aplicação somente escala se utilizarmos micro-serviços, containers, cloud computing e muitos outras tecnologias e práticas da moda, do tal do HYPE.
Mas será mesmo? Já se perguntou como as aplicações escalavam ANTES desse hype todo? Que tipos de práticas e tecnologias eram utilizadas? Alias, será mesmo que meu sistema web precisa escalar para centenas ou milhares de usuários?
Nessa palestra (lightning talk) de 15min vamos entender como podemos escalar nosso sistema web SEM se levar pelo hype, partindo de práticas mais simples e baratas até mais as rebuscadas e com um maior investimento. Se você entende pouco ou quase nada sobre como escalar uma aplicação web, então essa palestra é para você!
É muito comum um estagiário de TI após 6 meses de experiência deixar a empresa sem qualquer domínio ou conhecimento técnico para se virar no mercado, ou pior, ele desiste da área devido as dificuldades, cobranças e principalmente frustrações. Não é à toa, a TI é uma das áreas que mais contrata estagiários e ao mesmo tempo uma das que menos investe nesses aprendizes.
A verdade, é que um estagiário deveria (e deve) ser encarado como um investimento de médio-longo prazo em vez de simples mão de obra barata. Uma empresa que investe em um estagiário tem como retorno um profissional motivado e qualificado, acima da média, que absorveu não só conhecimentos técnicos, mas também a cultura da empresa e da sua equipe.
Mas como investir em um estagiário? Como treiná-lo? Nesta palestra compartilharei como a TriadWorks tem investido em seus estagiários e assim formado profissionais competentes no mercado, além dos erros e acertos nesse processo, dessa forma, empresas terão uma boa idéia de como aplicar práticas simples e úteis para treinar e orientar seus aprendizes e, claro, seus futuros profissionais.
Como Apresentar Codigo em Slides - Javou #7 - 2016Rafael Ponte
O documento fornece dicas para apresentar código-fonte em slides de maneira efetiva: (1) use fonte mono-espaçada para melhor legibilidade, (2) evite excesso de informação e distrações, focando no essencial, (3) utilize cores de forma sutil para enfatizar partes-chave. O objetivo é guiar a audiência na solução de forma clara e direta ao invés de recriar a IDE.
Importancia dos Testes Automatizados no dia a dia FIC-Estacio 2015Rafael Ponte
O documento discute os problemas causados por desenvolvedores que trabalham sem disciplina e testes automatizados ("cowboys"), levando a reincidência de bugs, funcionalidades que param de funcionar sem motivo aparente e diminuição na velocidade de entrega de novas funcionalidades. O autor defende que é necessário mudar a forma como os desenvolvedores trabalham, adotando práticas como escrita de testes automatizados para aumentar a produtividade e qualidade do código.
Hibernate efetivo (IA-2014 / Disturbing the Mind)Rafael Ponte
Mesmo anos após o lançamento do Hibernate ainda é fácil encontrar projetos utilizando o framework de maneira ineficiente, podendo leva-lo a problemas sérios de performance ou até inviabilizar a aplicação. O uso não efetivo do Hibernate está intimamente ligado a erros comuns e más práticas em sua utilização, que vão desde pool de conexões, select n+1, configuração de cache, batch-size até o uso indevido do cache level 1 em processamentos batch e o tratamento de LazyInitializationException.
Palestra ministrada no evento Disturbing the Mind 2014 do Instituto Atlântico (IA).
Mesmo anos após o lançamento do Hibernate ainda é fácil encontrar projetos utilizando o framework de maneira ineficiente, podendo leva-lo a problemas sérios de performance ou até inviabilizar a aplicação. O uso não efetivo do Hibernate está intimamente ligado a erros comuns e más práticas em sua utilização, que vão desde pool de conexões, select n+1, configuração de cache, batch-size até o uso indevido do cache level 1 em processamentos batch e o tratamento de LazyInitializationException.
Palestra ministrada no evento COALTI 2014 a convite do ALJUG (Grupo de usuários Java de Alagoas).
O documento descreve a evolução incremental do banco de dados de um projeto ao longo do tempo, começando com o uso do Hibernate para gerar esquemas automaticamente e depois migrando para ferramentas de migração como MyBatis Migrations.
Importancia dos Testes Automatizados no dia a dia (Don't Panic)Rafael Ponte
O documento discute a importância dos testes automatizados no desenvolvimento de software. Ele contrasta o método "cowboy" de programação, sem testes, com o método profissional que utiliza testes automatizados. O método cowboy leva a mais bugs, funcionalidades que param de funcionar aleatoriamente e menos novas funcionalidades implementadas, enquanto o método profissional permite um desenvolvimento mais estável e produtivo a longo prazo.
Importância dos testes automatizados no dia a diaRafael Ponte
Desenvolver software é uma luta contra complexidade. Cada linha de código que um programador escreve pode ser mais um ponto de falha no software. Para diminuir os riscos é fundamental que o programador e a equipe adotem uma cultura na escrita de testes, de preferência automatizados, para garantir que o software se comporte como esperado durante todo o ciclo de vida do desenvolvimento.
Nesta apresentação explanarei a importância dos testes automatizados de acordo com a cultura ágil, os tipos de testes que podemos escrever, os prejuízos causados pelo não uso de testes, os benefícios obtidos a médio e longo prazo, e as dificuldades ao escreve-los.
O documento discute problemas comuns relacionados ao Hibernate e suas soluções, abordando tópicas como: configuração incorreta de pool de conexões, exceção de inicialização preguiçosa e resoluções para lidar com ela, especialmente em aplicações web.
Assim como as Migrations no mundo Ruby On Rails, o mundo Java também possui diversas alternativas para evoluir o banco de dados de uma aplicação. Aprenda como você e sua equipe podem evoluir de maneira iterativa e incremental seu banco de dados (já em produção) durante a evolução da sua aplicação.
Os 10 maus habitos dos desenvolvedores jsf (JustJava e CCT)Rafael Ponte
O documento lista 10 maus hábitos comuns de desenvolvedores JSF. Estes incluem usar tags JSTL para esconder componentes em vez de atributos rendered, alterar estado de componentes no lado cliente, e não entender completamente o ciclo de vida do JSF. O documento fornece soluções como usar atributos rendered, alterar estado via AJAX, e estudar o ciclo de vida do JSF para desenvolver de forma mais eficiente.
Os 10 maus habitos dos desenvolvedores jsf (JustJava e CCT)
Boas Práticas com JavaServer Faces (Jsf)
1. JavaServer Faces (JSF)
e boas práticas
Rafael Ponte
rponte@gmail.com
http://www.rponte.com.br
2. | O que é importante
saber...
● Ciclo de vida de uma requisição JSF
● Otimizar requisições AJAX e atualizações
parciais de páginas
● Tudo funcionando em uma única página
● E Facelets, vai me servir para algo?
● Integrando JSF e ExtJs, em busca de
uma abordagem flexível
4. JSF Request lifecycle
Retrieve component tree
Restore from client or session May skip to
View render phase
Decode components or abort request
Apply Request (populate w/ String
Values values) Convert Strings to
Process Objects
Validations Validate Objects
Request
Update Call setters
Model on managed beans
Invoke bean
Invoke
method(s)
Response Application
Compute navigation
Call bean getters to Render
populate Response
components
5. | Depurando o ciclo
● A primeira chamada
● Refresh
● Submetendo o form
● Adiciona immediate=”true” para UIInput somente
● Adiciona immediate=”true” para UICommand somente
● Adiciona immediate=”true” para UIInput e UICommand
● Erro de conversão
● Erro de validação
6. | Depurando o ciclo
● A primeira chamada
* A fase é “pulada” pois não
houve form submit
1. Restore view
Como a UIViewRoot está vazia, não há o que fazer aqui
2. Apply request values *
3. Process validations *
4. Update model values *
5. Invoke application *
6. Render response
Os componentes são criados pela primeira vez e
armazenados na UIViewRoot e são setados os component
bindings.
7. | Depurando o ciclo
● Refresh
* A fase é “pulada” pois não
houve form submit
1. Restore view
Os componentes são restaurados do UIViewRoot e são
setados os component bindings
2. Apply request values *
3. Process validations *
4. Update model values *
5. Invoke application *
6. Render response
Os valores à serem exibidos são recuperados através dos
getters no managed bean, se eles não foram setados então o
valor default será null
8. | Depurando o ciclo
● Submetendo o form
1. Restore view
Os componentes são restaurados do UIViewRoot e são
setados os component bindings
2. Apply request values
Nada demais aqui. Os valores são recuperados do form e
setados nos componentes no UIViewRoot
3. Process validations
Os valores são recuperados como objetos dos componentes
através do método getAsObject() do converter e validados
pelo validator. Finalmente o valueChangeListener é invocado
[...]
9. | Depurando o ciclo
● Submetendo o form
4. Update model values
Os valores convertidos e validados serão agora setados
através do setters dos value bindings do managed bean
5. Invoke application
O processamento real da submissão do form acontece aqui
6. Render response
Os valores à serem exibidos são recuperados através dos
getters no managed bean, se um converter é definido então
o valor será obtido através do método getAsString() do
converter e o valor será exibido no form
10. | Depurando o ciclo
● Adiciona immediate=”true” para UIInput
1. Restore view
Os componentes são restaurados do UIViewRoot e são
setados os component bindings
2. Apply request values
Os valores são recuperados através do método getAsObject() do
converter, validados pelo validator e o valueChangeListener é
invocado. Daí os valores convertidos e validados são setados nos
componentes relevantes no UIViewRoot. Isso acontece aqui invés da
fase Process validations devido ao immediate=”true” no h:inputText
3. Process validations
Nada aqui. A conversão e validação já foram processadas na
fase anterior antes de os valores serem setados nos
componentes
[...]
11. | Depurando o ciclo
● Adiciona immediate=”true” para UIInput
4. Update model values
Os valores convertidos e validados serão agora setados
através do setters dos value bindings do managed bean
5. Invoke application
O processamento real da submissão do form acontece aqui
6. Render response
Os valores à serem exibidos são recuperados através dos
getters no managed bean, se um converter é definido então
o valor será obtido através do método getAsString() do
converter e o valor será exibido no form
12. | Depurando o ciclo
● Adiciona immediate=”true” para UICommand
1. Restore view
Os componentes são restaurados do UIViewRoot e são
setados os component bindings
2. Apply request values
O processamento real da submissão do form acontece aqui. Isso
acontece nesta fase invés da fase Invoke application devido ao
immediate=”true” no h:commandButton. Os componentes UIInput
que não possuem immediate=”true” setado serão ignorados, e
portanto, eles não serão convertidos nem validados
3. Process validations
Esta fase é “pulada” devido ao immediate=”true” no
h:commandButton
[...]
13. | Depurando o ciclo
● Adiciona immediate=”true” para UICommand
4. Update model values
Esta fase é “pulada” devido ao immediate=”true” no
h:commandButton
5. Invoke application
Esta fase é “pulada” devido ao immediate=”true” no
h:commandButton
6. Render response
Os valores à serem exibidos são recuperados através dos getters no
managed bean. Atenção: Como a fase Update model values é
“pulada” os value bindings não são setados e o getters dos value
bindings retornarão null. Os componentes UIInput que não possuem
immediate=”true” setado serão ignorados e não será possível
recuperar os valores do componente ou value binding.
14. | Depurando o ciclo
● Adiciona immediate=”true” para UIInput e
UICommand
1. Restore view
Os componentes são restaurados do UIViewRoot e são setados os component
bindings
2. Apply request values
Os valores são recuperados através do método getAsObject() do converter,
validados pelo validator e o valueChangeListener é invocado e os valores
convertidos e validados são setados no componentes relevantes no
UIViewRoot. Isso acontece aqui invés da fase Process validations devido ao
immediate=”true” no h:inputText. Finalmente o processamento real da
submissão do form acontece aqui. Isso acontece nesta fase ao invés da fase
Invoke application devido ao immediate=”true” no h:commandButton.
3. Process validations
Esta fase é “pulada” devido ao immediate=”true” no
h:commandButton [...]
15. | Depurando o ciclo
● Adiciona immediate=”true” para UIInput e
UICommand
4. Update model values
Esta fase é “pulada” devido ao immediate=”true” no h:commandButton
5. Invoke application
Esta fase é “pulada” devido ao immediate=”true” no h:commandButton
6. Render response
Os valores à serem exibidos são recuperados através dos getters no managed
bean. Atenção: Como a fase Update model values é “pulada” os value
bindings não são setados e o getters dos value bindings retornarão null. Mas
os valores ainda estão avaliados por component bindings que foram setados
na fase Apply request values, assim você poderá recuperar o valor do input
com inputBinding.getValue() no método action(). O novo valor do input será
também avaliado pelo ValueChangeEvent no método inputChanged()
16. | Depurando o ciclo
● Erro de conversão
1. Restore view
Os componentes são restaurados do UIViewRoot e são
setados os component bindings
2. Apply request values
Nada demais aqui. Os valores são recuperados do form e
setados nos componentes no UIViewRoot
3. Process validations
Os valores são recuperados como objetos dos componentes
através do método getAsObject() do converter onde um
ConverterException é lançado. O validator e o
valueChangeListener são “pulados”. O ciclo de vida “pulará”
imediatamente para a fase Render response
[...]
17. | Depurando o ciclo
● Erro de conversão
4. Update model values
Esta fase é pulada devido ao ConverterException
5. Invoke application
Esta fase é pulada devido ao ConverterException
6. Render response
Os valores à serem exibidos são recuperados através dos
getters no managed bean, explicitando os valores para qual
os ConverterException tem ocorrido
18. | Depurando o ciclo
● Erro de validação
1. Restore view
Os componentes são restaurados do UIViewRoot e são
setados os component bindings
2. Apply request values
Nada demais aqui. Os valores são recuperados do form e
setados nos componentes no UIViewRoot
3. Process validations
Os valores são recuperados como objetos dos componentes
através do método getAsObject() do converter e validados
pelo validator, onde um ValidatorException é lançado. O
valueChangeListener é “pulado”. O ciclo de vida “pulará”
imediatamente para a fase Render response
[...]
19. | Depurando o ciclo
● Erro de validação
4. Update model values
Esta fase é pulada devido ao ValidatorException
5. Invoke application
Esta fase é pulada devido ao ValidatorException
6. Render response
Os valores à serem exibidos são recuperados através dos
getters no managed bean, explicitando os valores para qual
os ValidatorException tem ocorrido
21. | Richfaces?
● Projeto da JBoss
● Insere funcionalidades AJAX em
aplicações JSF existentes
● Já inclui Ajax4jsf, é claro!
● Excelente compatibilidade com diversos
conjuntos de componentes
● Possui diversos componentes ricos
25. | Ajax4jsf?
Antes de enviar uma
requisição AJAX..
Decida o
que enviar!
26. | Ajax4jsf?
● Limitando regiões com a4j:region
● Diminuindo o trafégo na rede com
eventsQueue e requestDelay
● ajaxSingle=”true”, o lobo solitário
● Ninguém gosta de esperar, mas com
a4j:status as coisas até melhoram
27. | Ajax4jsf?
Antes de enviar uma
requisição AJAX..
Também decida
o que mudar!
28. | Ajax4jsf?
● Otimizando o atributo reRender
● Limitando-se a região,
renderRegionOnly=”true” e
selfRendered=”true”
● Limitando a lista de id's também ajuda,
limitToList=”true”
● Definindo áreas atualizavéis,
a4j:outputPanel
30. | Única página?
● Menos configurações para regras de
navegação
● Menos arquivos (jsp, xhtml) para
manutenção
● Renderização mais rápida
● Menos overhead no servidor
● Sem reload de página, lógico!
32. | Facelets?
● Desenvolvido especialmente para JSF
● Rápido templating de componentes e
páginas
● De 30% à 50% mais rápido que JSP
● Não está preso a Web Container
● JBoss Seam usa e abusa
33. | Facelets?
● Compatível com JSF 1.1 e JSF 1.2
● Excelente depuração de erros
● Será integrado ao JSF 2.0
● Utiliza-se de XHTML nas páginas (alguns
seres não gostam disso o.O)
● Compatível com a maioria (se não
todos) os conjuntos de componentes