Vivemos em uma época em que a integração de tecnologias é fundamental. Não há mais espaço para isolamento. Um exemplo típico são os navegadores web. A quantidade de componentes desenvolvidos para eles fez com que agissem cada vez mais como “cola”, provendo um ambiente para que elementos muito diversos pudessem se comunicar e se integrar.
A utilização de applets em páginas web, em alguns casos é uma solução excelente. Por exemplo, se você precisa acessar um hardware específico no computador do usuário, como um leitor de smart cards, um applet é a solução. Nesse caso, seria mais interessante se o applet pudesse se comunicar com o restante da página web e preencher um formulário com os dados processados. A integração entre componentes da página e o applet também é vista nos conhecidos teclados numéricos dos sites bancários.
Veremos neste artigo como integrar applets Java a outros componentes de uma página web e como código JavaScript pode fazer chamadas a métodos de um applet; ou seja, demonstraremos a comunicação nas duas direções entre elementos web (acessando o modelo DOM) e applets.
Para desenvolver o exemplo, usaremos o IDE Eclipse com o WTP (Web Tools Project). No site do WTP (eclipse.org/webtools) existe uma versão do Eclipse com este plug-in incluso. Se você já tem o Eclipse instalado, pode também baixar e instalar somente o WTP do site de atualizações do Callisto. Todos os arquivos e códigos do exemplo estarão disponíveis no site da Java Magazine.
Um pouco de teoria
Para entender melhor os exemplos, precisamos inicialmente definir o conceito de DOM (Document Object Model). De forma sucinta, o DOM é uma estrutura hierárquica de componentes em uma página web que podem ser acessados e alterados. Todos os componentes dentro de uma página web (figuras, tabelas, textos, formulários etc.) fazem parte da estrutura DOM. Isso inclui os applets, pois estão inseridos nas páginas web. A Figura 1 ilustra o DOM de uma página HTML simples.
Acesso aos componentes
Há várias maneiras de acessar os componentes do DOM. A mais tradicional é através de um identificador (ID). O código JavaScript a seguir acessa um componente do DOM que possui o ID “appletJM”:
<script> var meuApplet= document.getElementByID(‘appletJM’); </script>
A definição de um identificador, normalmente se dá através do atributo id>. Veja alguns exemplos de componentes com identificadores:
<applet id="appletJM" /> <table id=”tabela01” /> <img id=”minhaFigura” />
Agora, vamos explorar como um applet pode acessar os componentes do DOM. De início já temos um problema. Embora o applet seja inserido na página com um tag HTML, sua funcionalidade, como sabemos, é toda implementada por código Java (referenciado pelo tag).
Para que o applet acesse o DOM ou funções JavaScript, usaremos uma API que estabelece este canal de comunicação. Tal suporte é dado pelas classes da API netscape.javascript, fornecida pela Netscape. O arquivo desta biblioteca acompanha a distribuição do Java Runtime Enviroment (JRE). É o plugin.jar, localizado dentro do diretório lib da instalação do JRE (um path típico, no JDK 6 para Windows, seria C:\Arquivos de programas\Java\jdk1.6.0\jre\lib).
A principal classe desta API, e a que usaremos no nosso exemplo, é a classe JSObject. Seguem alguns dos seus principais métodos:
- JSObject.getWindow() – Retorna uma referência ao objeto window do JavaScript. Este objeto fornece informações sobre a janela atual do navegador. Por exemplo, para acessar o conteúdo da URL você usaria window.location.
- JSObject.call(String, Object[]) – Chama uma função JavaScript através de dois parâmetros; o primeiro é o nome da função e o segundo contém os seus argumentos. ...