• Nenhum resultado encontrado

Conclusões Neste capítulo são feitas as considerações finais sobre o trabalho, são apresentadas as

principais contribuições, trazidas com os estudos realizados durante este trabalho, e os possíveis trabalhos futuros.

Conclusões

129

8.1 Considerações Finais

XML é uma meta linguagem criada para atender às necessidades de aplicações Web. Um documento XML pode armazenar dados e, por ser um arquivo texto, possibilita a troca de informação entre diferentes sistemas.

Para que os dados presentes em um documento sejam disponibilizados para uma aplicação, dois padrões de manipulação de documentos XML foram criados: DOM e SAX.

DOM é uma API orientada a objetos que foi projetada pelo W3C. Este consórcio mantém atualmente três níveis de DOM: DOM1, DOM2 e DOM3. A cada nível foram acrescidas novas características para atender as constantes necessidades das aplicações. As especificações dessa API são grandes, e possuem interfaces e métodos muitas vezes redundantes, como pode ser observado nos Capítulos 3 e 4.

SAX é um padrão baseado em um paradigma que não é muito familiar a muitos programadores, o paradigma orientado a eventos. No entanto, esta API é simples e pode ser utilizada em diversas aplicações.

SAX gera eventos para quase todos os itens encontrados em um documento XML. Ele foi projetado para informar a aplicação apenas sobre os dados presentes no documento. Inicialmente, os itens léxicos, que muitas vezes não são significativos para a aplicação, eram ignorados. Na sua segunda versão várias alterações foram feitas: SAX passou a suportar namespace, DTDs, e reconhecer alguns conteúdos léxicos. Outro problema ainda presente em SAX é a falta de métodos que possibilitem alterar e salvar documentos na memória.

Apesar destes problemas, em muitas aplicações, SAX obtém um desempenho melhor do que DOM, como pode ser observado nos testes realizados no Capítulo 6.

Cada uma dessas APIs possui vantagens e desvantagens. Os requisitos de uma aplicação é que vão definir a melhor API a ser utilizada. Em algumas situações elas podem ser usadas em conjunto para obter um melhor resultado.

Além de escolher a API, é importante para o desempenho do sistema a escolha da ferramenta de processamento mais adequada para sua aplicação. Estes software podem

Conclusões

implementar ambas as APIs, ou apenas uma, ou ainda implementar parcialmente alguns níveis de DOM e de SAX.

Neste trabalho foi realizado um estudo descritivo e comparativo entre os parsers: JAXP, Xerces2, XML4J, Crimson e GNU. Cada parser define suas próprias classes para criar parser DOM e parser SAX. Os nomes e os métodos destas classes variam de uma ferramenta para outra. Isto pode causar certas dificuldades como, por exemplo, ter que recompilar o sistema em caso de mudança da ferramenta de processamento. Para resolver esta questão, a Sun definiu em sua ferramenta JAXP classes factory para criar parser DOM e parser SAX que são independentes do parser. Todos os software citados no trabalho suportam JAXP.

Todas as ferramentas estudadas podem validar documentos com DTD e suportam

namespace, mas apenas JAXP, Xerces e XML4J validam utilizando XML Schema.

Elas implementam as versões 1 e 2 de SAX, mas nenhum suporta completamente todos os módulos de DOM2 e DOM3. Entretanto, muitas aplicações utilizam apenas o modulo Core de DOM.

Quanto ao desempenho dos parsers, é importante observar o tempo de processamento de cada um e também a quantidade de memória consumida por eles. O Crimson, por exemplo, é a ferramenta mais rápida para criar a árvore DOM, mas ocupa mais memória do que os outros parsers testados. GNU mostra um bom desempenho com

parser SAX. As ferramentas JAXP, Xerces e XML4J implementam um conjunto maior

de padrões e possuem desempenhos equivalentes.

8.2 Contribuições

As principais contribuições deste trabalho são:

• Análise das características das APIs de processamento de documento XML: DOM e SAX. Essas duas APIs pertencem a dois paradigmas diferentes, um orientado a objeto e o outro orientado a eventos. Em determinadas situações é mais adequado utilizar uma ou outra.

• Análise comparativa das APIs DOM e SAX, apresentando uma implementação de uma aplicação real usando essas APIs e comparando

Conclusões

131

• Análise das características dos parsers: JAXP, Xerces2, XML4J, Crimson e GNU. Cada aplicação possui um conjunto de necessidades quanto ao uso do XML. Algumas não necessitam realizar as validações dos documentos, outras precisam validar os seus documentos com DTDs apenas, outras precisam de XML Schema, enquanto que outras necessitam de suporte a

namespace. Todas essas características podem ser encontradas totalmente

ou parcialmente nos parsers que estão no mercado. Alguns parsers possuem características que outros não possuem: saber se um determinado parser atende a todas as necessidades de uma determinada aplicação é muito importante no processo de escolha. Apesar de serem encontrados alguns trabalhos realizando comparações entre parsers XML [Harold 2002], estes avaliam o desempenho de versões anteriores. Como os parsers estão em constante desenvolvimento, estes trabalhos ficaram desatualizados, além do que, não reunem os mesmos parsers mostrados neste trabalho.

• Análise do desempenho dos parsers. A forma com que os parsers são implementados tem impacto direto na performance dos mesmos. Numa aplicação XML, os parsers são muito utilizados, pois os dados XML são disponibilizados por eles. Desta maneira a performance do parser será um ponto crítico para a performance da aplicação como um todo. Um estudo comparativo sobre as performances dos parsers pode auxiliar o gerente de projetos a escolher o parser que venha oferecer melhor performance para a sua aplicação.

8.3 Trabalhos Futuros

Como trabalhos futuros podem ser destacados:

• Analisar aplicações reais onde módulos específicos de DOM2 e DOM3 são ou podem ser utilizados;

• Desenvolver uma ferramenta de suporte aos módulos de DOM3 e alguns módulos de DOM2 ainda não suportados pelos parsers analisados;

Conclusões

• Analisar o desempenho dos parsers com validação de documentos com gramáticas maiores.

• Analisar outros parsers de documentos XML, como por exemplo, Oracle XML Parser e Piccolo XML Parser for Java.