JAVA EE AJAX - Daniela Meurer

Propaganda
JAVA EE
Java Enterprise Edition: a arquitetura JEE define o padrão para desenvolvimento de aplicações corporativas multicamadas.
Servidores de aplicação:
- É o núcleo da plataforma JEE.
- Fornece a infraestrutura básica para o desenvolvimento e execução de um aplicativo empresarial.
- Oferece elementos básicos, tais como: Segurança, Controle de transação, Filas de processamento, Elementos de gestão,
Escalabilidade, Tolerância a falhas e Outros elementos de infraestrutura.
- São softwares onde são hospedados os componentes responsáveis por implementarem as diversas camadas da aplicação.
- Fornecem serviços que permitem a persistência e interação com outros aplicativos.
- Permitem o desenvolvimento de aplicações distribuídas multicamadas.
- Agem como a interface entre: Os clientes e as bases de dados e os sistemas de informação corporativos (ERPs, sistemas legado,
etc.).
Aplicações JEE são geralmente consideradas como aplicações de três camadas, porque são distribuídos em três locais:
- Na máquina do cliente: Camada Cliente.
- No servidor JEE: Camada Web e Camada de Negócio.
- Nas máquinas onde residem bancos de dados e sistemas legados: Camada EIS.
A especificação JEE define os seguintes componentes:
– Componentes que são executados no cliente: Aplicações clientes e Applets.
– Componentes web que rodam no servidor: Java Servlet, JavaServer Pages (JSP) e JavaServer Face (JSF).
– Componentes de negócios que rodam no servidor: Enterprise JavaBeans (EJB).
Camada Cliente: Aplicação cliente (Uso opcional de JavaBeans), Browser, página, applets (Uso opcional de JavaBeans).
Applet: É um pequeno aplicativo cliente escrito em Java que executa na máquina virtual Java instalada no navegador web.
JavaBeans: São componentes que possuem: Propriedades e Métodos. As camadas cliente e servidor podem incluir esse
componentes para gerenciar o fluxo de dados.
Componente Web:
Servlets são classes Java que dinamicamente processam requisições e constroem respostas.
Páginas JSP são documentos baseados em texto que são executados como servlets, mas permitem uma abordagem mais natural
para a criação de conteúdo dinâmico.
Tecnologia JavaServer Faces: Baseia-se nas tecnologias acima e Fornece um framework de componentes de interface de usuário
para aplicações web.
JavaBeans opcional.
Componentes de negócios:
A lógica de negócio atende aos requisitos de um determinado domínio de negócios e é tratada por EJBs em execução na camada de
negócios.
Camadas EIS: Banco de dados - Sistemas Legados.
AJAX
AJAX (Asynchronous JavaScript and XML):
– AJAX utiliza Javascript, DOM e XML.
– Apenas as partes das páginas que são alteradas é que são carregadas.
– O tráfego com o servidor é reduzido.
– Aplicações AJAX precisam de Javascript para executar.
- Duas das tecnologias que compõem o Ajax são: DOM e CSS.
- No uso do AJAX para o desenvolvimento é importante adotar boas práticas de acessibilidade ter um mecanismo de comunicação
do tipo “Aguarde, carregando lista” de forma que o usuário fique ciente que atualizações dinâmicas na página estão sendo
realizadas: Destacar as áreas do que foram atualizadas; Oferecer outros mecanismos que garantam o funcionamento do site caso o
JavaScript não esteja habilitado e Oferecer a opção de desabilitar atualizações automáticas e permitir ao usuário atualizar
manualmente a página.
- AJAX é uma tecnologia que visa, entre outras coisas, aumentar a escalabilidade do servidor Web, trazendo parte do
processamento para o lado cliente.
- Sua principal característica é a habilidade de se comunicar com o servidor e atualizar partes de uma página Web sem recarregá-la
inteiramente.
- Objetos do tipo XMLHttpRequest são utilizados para trocar dados com servidores.
- Requisições a servidores feitas via AJAX podem ser feitas tanto via método GET como POST.
XML
XML:
– O conteúdo de um elemento XML é especificado entre uma tag de abertura e uma tag de fechamento.
– Documentos XML podem ser utilizados para a transferência de dados através da web.
– São tecnologias derivadas do XML: SOAP, XHTML e SVG.
– Documentos XML possuem obrigatoriamente um elemento raiz, que deve englobar todos os demais elementos do documento.
– XML Schema é uma linguagem usada para expressar restrições sobre documentos XML.
– XSLT pode ser utilizada para transformar documentos XML em documentos HTML.
– XML organiza dados em uma estrutura hierárquica, e cada ocorrência de um mesmo elemento pode ter uma estrutura particular
de subelementos.
– EncodingStyle é um atributo usado no XML para definir tipos de dados usados no documento.
– O XMI é um padrão baseado em XML para exportar modelos definidos em UML entre ferramentas CASE compatíveis com esse
padrão.
– Sobre a sintaxe da linguagem XML, é correto afirmar que: os valores de atributos devem estar entre aspas.
– XML é case sensitive, portanto difere letras maiúsculas e minúsculas.
– É autodocumentado (DTDs e XML Schemas): o próprio formato descreve a sua estrutura e nomes de campos, assim como valores
válidos.
– XPROC - Modelo de processamento: define quais operações devem ser executadas e em que ordem em um documento XML.
– XSD - Linguagem para expressar restrições sobre documentos XML.
– XSLT - Linguagem para transformar documentos XML em outros documentos XML, documentos de texto ou documentos HTML.
– DTD define uma construção de blocos válidos bem como possibilita a descrição de cada marca e o fornecimento de regras para
interpretar cada informação usada em um arquivo XML.
– As tags XML são case sensitive.
- Para que um parser XML ignore uma certa seção de um documento XML, deve-se utilizar a sintaxe: <![CDATA[ Texto a ser
ignorado ]]>.
A linguagem de marcação extensível (ou XML) é recomendada pelo World Wide Web Consortium como padrão internacional para
representação e intercâmbio de informação estruturada na Internet. Em comparação a outras linguagens de marcação existentes,
como a HTML, uma vantagem da linguagem XML é permitir a representação de diversos tipos de estruturas de dados, como listas,
registros e árvores.
- O XML é uma linguagem de marcação de dados, utilizada para a troca, compartilhamento e armazenamento de dados.
- A linguagem XML surgiu a partir do antigo SGML, com o intuito de promover a criação de novas linguagens de marcação para a
Web.
- Através do XML é possível criar uma linguagem a partir de tags customizadas, como é o caso do XHTML.
- Os arquivos XML podem ser armazenados tanto no sistema de arquivos como em uma base de dados XML, uma vez que um
arquivo XML é apenas um arquivo texto.
- O XML Schema é usado para descrever o formato das tags e os valores aceitos em cada uma delas.
Um banco de dados XML é utilizado para gerenciar um volume grande de arquivos XML de forma a promover recursos similares aos
SGBD tradicionais, mas usando linguagens específicas de consulta. Dentre as linguagens usadas para fazer consultas em bases de
dados XML, temos: Xquery e XPath.
- Na linguagem padrão XML, os atributos podem ser associados com um elemento anexando-os a uma tag inicial ou uma tag de
elemento vazio: <table border = “1”>
- Na linguagem padrão XML, um locator XPointer pode conter dois XPointers separados por “..” para especificar os pontos de início
e fim de recurso. A palavra-chave do XPointer, que pode ser usada no segundo par de XPointers e que especifica que a fonte da
localização para seu primeiro termo é igual ao recurso indicado pelo primeiro XPointer é denominada de DITTO.
- Utiliza o DTD para apresentar as regras que definem um documento.
- Prescinde de um editor de arquivos específico para criar um documento XML.
Um DTD (Document Type Definition) é um conjunto de regras usado para definir uma linguagem de marcação XML particular;
- XSLT é uma linguagem de marcação XML usada para criar documentos XSL, que, por sua vez, definem a apresentação dos
documentos XML;
- XML Schema é uma linguagem usada para expressar restrições sobre documentos XML.
- XML é uma linguagem na qual seus elementos formam documentos com estruturas de árvore.
- Um arquivo DTD pode ser utilizado para definir a estrutura que determinados documentos XML devem seguir.
WEB Service
A expressão é utilizada para classificar aplicações que são expostas em uma rede via o uso de padrões XML e protocolos de Internet
de tal modo que eles sejam bastante interoperáveis com outros aplicativos distribuídos distintos. Um Web Service é uma classe
escrita em uma linguagem suportada pela plataforma .NET que pode ser acessada via protocolo http. O acesso sempre será via
http. Mas internamente existe uma string XML que está empacotada em um protocolo SOAP.
A base da plataforma de web services são:
- XML: Fornece uma linguagem que pode ser usada entre diferentes: Plataformas e Linguagens de programação. Expressa
mensagens e funções complexas.
- HTTP: É o protocolo mais usado protocolo de Internet.
Elementos de plataforma de web services:
- SOAP (Simple Object Access Protocol);
- UDDI (Universal Description Discovery and Integration);
- WSDL (Web Services Description Language);
Modelo operacional triangular dos web services:
1) Um provedor publica seu serviço em um registrador UDDI (ou em vários): Utiliza-se o SOAP para publicação
2) O serviço é localizado pelo consumidor no registrador: Utiliza-se o SOAP para localização
3) O consumidor usa a informação localizada do serviço para localizar e baixar uma cópia da descrição WSDL
4) O consumidor usa a informação do WSDL para vincular-se ao serviço Web e invocá-lo.
Integração Contínua, TDD e Refactoring
Segundo Martin Fowler, Integração Contínua é:
“Uma prática de desenvolvimento de software onde os membros de uma equipe integram seu trabalho frequentemente,
geralmente cada pessoa integra pelo menos diariamente – podendo haver multiplas integrações por dia. Cada integração é
verificada por um build automatizado (incluindo testes) para detectar erros de integração o mais rápido possível. Muitas equipes
acham que essa abordagem leva a uma significante redução nos problemas de integração e permite que uma equipe desenvolva
software coeso mais rapidamente.”.
Uma prática importante prevista pela Integração Contínua é a execução dos testes automatizados a cada integração.
Test Driven Development (TDD) ou Desenvolvimento orientado a testes é uma técnica de desenvolvimento de software que baseia
em um ciclo curto de repetições: Primeiramente o desenvolvedor escreve um caso de teste automatizado que define uma melhoria
desejada ou uma nova funcionalidade. Então, é produzido código que possa ser validado pelo teste para posteriormente o código
ser refatorado para um código sob padrões aceitáveis. Kent Beck, considerado o criador ou o 'descobridor' da técnica, declarou em
2003 que TDD encoraja designs de código simples e inspira confiança. Desenvolvimento dirigido por testes é relacionado a
conceitos de programação de Extreme Programming, iniciado em 1999, mas recentemente tem-se criado maior interesse pela
mesma em função de seus próprios ideais. Através de TDD, programadores podem aplicar o conceito de melhorar e depurar código
legado desenvolvido a partir de técnicas antigas.
Desenvolvimento dirigido por testes requer dos desenvolvedores criarem testes de unidade automatizados que definam requisitos
em código antes de escrever o código da aplicação. Os testes contêm asserções que podem ser verdadeiras ou falsas. Após as
mesmas serem consideradas verdadeiras após sua execução, os testes confirmam o comportamento correto, permitindo os
desenvolvedores evoluir e refatorar o código. Desenvolvedores normalmente usam Frameworks de testes, como xUnit, para criar e
executar automaticamente uma série de casos de teste.
Refactoring: A técnica da refatoração consiste no aprimoramento do design e legibilidade de um código que esteja se tornando
ultrapassado. A medida que esses pontos do código são encontrados eles devem ser corrigidos.
Hibernate, Spring e Strutus
O Hibernate é um framework para o mapeamento objeto-relacional escrito na linguagem Java. Este framework facilita o
mapeamento dos atributos entre uma base tradicional de dados relacionais e o modelo objeto de uma aplicação, mediante o uso
de arquivos (XML) ou anotações Java. Hibernate é um software livre de código aberto distribuído com a licença LGPL. Hibernate
pode ser utilizado em aplicações Java standalone ou em aplicações Java EE, utilizando servlet ou sessões Enterprise Java Beans.
O Spring é um framework open source para a plataforma Java.
No Spring o container se encarrega de "instanciar" classes de uma aplicação Java e definir as dependências entre elas através de
um arquivo de configuração em formato XML, inferências do framework, o que é chamado de auto-wiring ou ainda anotações nas
classes, métodos e propriedades. Dessa forma o Spring permite o baixo acoplamento entre classes de uma aplicação orientada a
objetos.
O Spring possui uma arquitetura baseada em interfaces e POJOs (Plain Old Java Objects), oferecendo aos POJOs características
como mecanismos de segurança e controle de transações. Também facilita testes unitários e surge como uma alternativa à
complexidade existente no uso de EJBs. Com Spring, pode-se ter um alto desempenho da aplicacao.
Struts é um framework de desenvolvimento da camada controladora, numa estrutura seguindo o padrão Model 2 de aplicações
web construído em Java para ser utilizado em um container web em um servidor J2EE.1.
Componentes: ActionForm; ActionForward; ActionMapping; ActionServlet; DynaActionForm.
O objetivo do Struts é separar o model (modelo - lógica de aplicativo que interage com um banco de dados) do view (visualização páginas HTML apresentadas para o cliente) e do controller (controlador - instância que transmite informações entre a exibição e o
modelo). Struts fornece o controlador/controller (um servlet conhecido como ActionServlet) e facilita a escrita de moldes
padronizados para a camada de visualização/view (normalmente em JSP, mas XML/XSLT e Velocity também são suportados). O
programador de aplicativo da web é responsável por escrever o código do modelo/model, e por criar um arquivo de configuração
centralizador (struts-config.XML) que une modelo, visualização e controlador.
Testes Funcionais e Unidade
Teste de Função ou Funcional: Testes destinados testar as funcionalidades, requerimentos, regras de negócio presentes na
documentação. Esse teste é implementado e executado em diferentes objetivos do teste, como unidades, unidades integradas,
aplicativos e sistemas.
Teste Caixa-preta ou Funcional ou Comportamental: também chamado de teste funcional, orientado a dado ou orientado a
entrada e saída, a técnica de caixa-preta avalia o comportamento externo do componente de software, sem se considerar o
comportamento interno do mesmo. Tende a ser realizado ao final do processo de teste focalizando a atenção no domínio da
informação, ou seja, conformidade com os requisitos.
São tipos de erros encontrados nos testes de caixa-preta: interface; comportamento ou desempenho; iniciação ou térmico e
estruturas de dados ou de acesso à base de dados externa;
Sobre Teste de Unicidade:
- Tem por objetivo verificar se um dado algoritmo, subrotinas ou mesmo pequenos trechos de código estão funcionando
corretamente.
- Teste de unidade: teste caixa-branca sobre a unidade de estruturação avalia cada unidade de modularização isoladamente ele é
aplicado nos menores componentes de código criados, visando garantir que estes atendem às especificações, em termos de
características e funcionalidade.
- Teste de unidade tem o objetivo de testar componentes ou módulos de software, incluindo, por exemplo, teste das estruturas de
dados.
- Teste de Unidade: Tipo de teste que focaliza cada componente de um software de forma individual, garantindo que o
componente funciona adequadamente.
- Testes unitários: também conhecido como teste de módulo, é a fase em que se testam as menores unidades de software
desenvolvidas (pequenas partes ou unidades do sistema). O universo alvo desse tipo de teste são as subrotinas ou mesmo
pequenos trechos de código. Assim, o objetivo é o de encontrar falhas de funcionamento dentro de uma pequena parte do
sistema, funcionando independentemente do todo.
Sobre JUnit:
- O JUnit é considerado um framework para execução automática de casos de teste em programas Java. Um dos pontos de
extensão (hotspots) desse framework é a classe TestCase, que deve ser estendida para a especificação de casos de teste.
- O Junit é um conjunto de classes em Java que pode ser estendido para se criar um ambiente de testes de regressão automatizado.
- Os fatores de qualidade de McCall são utilizados para se aferir a qualidade de um software. Dentre tais fatores, há o fator
eficiência, que estabelece a quantidade de recursos de computação necessários para que o software possa atender à sua função
especificada.
Download