Desenvolvimento - Java

Web – Uma Introdução ao Desenvolvimento para a Internet com Java – Parte 01 – Preparando o Ambiente para o Desenvolvimento

Certamente o leitor ao encontrar este artigo pode pensar “Mais uma introdução...”. Bem, não quero dizer que este trabalho seja melhor que os já existentes na WEB, mas espero que ele leve a você conceitos e pontos que vejo como básicos, primordiais para meus alunos.

por Everton Coimbra de Araújo



Demorei um certo tempo desde a publicação de meu último (e primeiro) artigo no Linha de Código, não foi por falta de tema, mas sim por falta de tempo. Muitas atribuições e diversas novas atividades surgiram e continuam a surgir. Envolvimento ativo com EaD pela UTFPR – Campus Medianeira e o lançamento de meu novo livro, Orientação a Objetos com Java – Simples, Fácil e Eficiente,  pela Visual Books (WWW.visualbooks.com.br), foram alguns dos motivos que me deixaram longe do portal, mas espero que neste segundo semestre eu recupere o tempo perdido, publicando artigos sobre as disciplinas que ministro.

Certamente o leitor ao encontrar este artigo pode pensar “Mais uma introdução...”. Bem, não quero dizer que este trabalho seja melhor que os já existentes na WEB, mas espero que ele leve a você conceitos e pontos que vejo como básicos, primordiais para meus alunos. Nos materiais que escrevo, procuro apresentar, de forma didática, conceitos e aplicações acerca de um tema e, espero que ao concluir sua leitura, possa ter a sensação de ter entendido minha proposta.

Procurarei não comentar sobre aplicações desktop e os conflitos, diferenças e problemas que existem entre o desenvolvimento destas aplicações e das aplicações web, apesar de o mundo hoje buscar aplicações web com a versatilidade de aplicações desktop. Existem vários artigos, livros e tutorias que certamente fazem estas comparações, mas acredito que, da mesma forma que aprender Orientação a Objetos é mais simples para quem nunca programou de forma estruturada, aprender a desenvolver para web, sem saber que existe um mundo desktop, pode ser mais simples.

INTERNET COMO PLATAFORMA

Antes da implementação de qualquer código, saber determinados conceitos é extremamente importante.  O primeiro conceito a ser trabalhado, pode parecer simples e sem necessidade de explicação, mas, por via das dúvidas, prefiro fazê-lo.

PLATAFORMA

Pode-se dizer que plataforma é uma arquitetura específica, podendo esta arquitetura ser composta de hardware, software, ou ambos. Uma plataforma determina a tecnologia empregada em infra-estruturas específicas, buscando garantir facilidade de integração entre os diversos elementos existentes nesta infra-estrutura.

Pela definição exposta anteriormente para plataforma, pode-se definir que uma aplicação desenvolvida para a Internet, mais especificamente para a web, que é o foco deste artigo, tem como tecnologias empregadas para a infra-estrutura da mesma, de forma bem resumida: computadores e softwares servidores, equipamentos de redes de computadores, softwares específicos para aplicações web, como servidores de aplicações e/ou containeres de aplicações web, servidores de banco de dados e softwares navegadores. Veja, tudo isso de forma bem resumida e superficial, mas o importante é saber que todos estes componentes devem se integrar e garantir o perfeito funcionamento da sua aplicação.

Veja por esta simples definição que o desenvolvimento de uma aplicação web não é tarefa simples e nem para poucos profissionais da área, é preciso uma equipe. Mas existem muitas empresas que já oferecem toda a infra-estrutura pronta, restando para os desenvolvedores apenas a implementação da aplicação e disponibilização (distribuição/instalação) da mesma em servidores específicos.

Veja na Figura 1 o esboço de uma plataforma web, com servidores e serviços específicos (lado esquerdo da figura) e a indicação que as aplicações hospedadas nestes equipamentos são acessadas através de um conjunto de equipamentos, simulando três redes independentes, possivelmente em lugares geograficamente diferentes (lado direito). Veja que, ligando os equipamentos que necessitam acessar as aplicações e os equipamentos que hospedam as aplicações existe uma rede, a Internet.

01-Plataformas.gif

Figura 1 – Arquitetura para a Plataforma WEB

Fonte : http://www.virto.com.br/diferenciais.aspx

ARQUITETURA

Pode-se conceituar arquitetura como um conjunto de componentes (quer seja hardware ou software), suas propriedades externas e seus relacionamentos com outros componentes.

Com a definição de arquitetura exposta, deve-se afirmar que uma arquitetura voltada para uma aplicação web (que é uma plataforma específica) possui componentes que precisam conhecer uns aos outros, saber o que precisam para integrarem entre si e então garantir o perfeito funcionamento de uma aplicação web. Por exemplo, um servidor que hospede uma aplicação web pode ter nele, servidores de aplicação, servidores de bancos de dados e servidores de autenticação. Cada um deles precisando conhecer as propriedades externas dos outros, para que possam se comunicar sempre que necessário pela aplicação.

EXECUÇÃO DAS APLICAÇÕES

Pelo que pode ser verificado, ainda na Figura 1, é que existem dois ou mais pontos logicamente (na maioria das vezes fisicamente) separados na arquitetura para aplicações a serem executados na plataforma Internet. A parte representada pelo lado esquerdo da figura representa os serviços oferecidos, normalmente a aplicação web fica “hospedada” neste lado. O lado direito representa os interessados em utilizar os serviços oferecidos.

A separação física é mais clássica. Quando você acessa os serviços oferecidos pelo seu banco, você sabe realmente onde estão os serviços requisitados? Onde estão os seus dados pessoais e de transações que são trazidos para sua máquina? A separação lógica ocorre mais no momento de implementação, quando em uma única máquina têm-se os servidores, serviços oferecidos e desta mesma máquina, estes recursos são acessados.

Independente de como a separação dos recursos e dos interessados neles exista, é preciso saber que as aplicações web, acessadas via browser são acessadas e atendidas através de requisições e respostas (request e response).

REQUISIÇÃO/

REQUEST

Entende-se por requisição (request), no contexto de aplicações web, a solicitação por um recurso disponibilizado na Internet, quer seja este recurso uma simples página web, em HTML, quer seja uma URL de uma aplicação. Esta requisição é submetida ao servidor onde o recurso desejado está hospedado

RESPOSTA/

RESPONSE

Uma resposta (response), no contexto de aplicações web, é o retorno de uma requisição. Como as aplicações web são normalmente (principalmente em nosso contexto) invocadas através de um browser, toda resposta é uma página HTML, não importando a tecnologia utilizada no servidor para implementação da solução.

Figura 2 – Processo de requisição e resposta de uma aplicação web

Fonte : http://students.mimuw.edu.pl/SR/prace-mgr/jawaharlal/index.htm

Verifique, através da Figura 2 que um cliente (o browser) está em um computador qualquer em qualquer parte do mundo e, precisa de um serviço que está disponibilizado em um outro equipamento, em qualquer parte do mundo. Para utilizar este serviço, ele requisita o mesmo, através do browser, que envia esta requisição através do protocolo HTTP (HyperText Transfer Protocol). O servidor, por sua vez, recebe a requisição, juntamente com dados que vêm junto ao cabeçalho HTTP, como dados informados pelo usuário em um formulário em uma página web. Neste momento, o servidor identifica o serviço e define quem é responsável por ele. O responsável, então, atende a requisição e gera uma resposta para o solicitante (o cliente). Um detalhe importante é saber que quem atende uma requisição normalmente é uma aplicação, implementada em qualquer linguagem, mas a resposta, gerada para o cliente, é sempre HTML, pois o browser, sabe ler (por enquanto) apenas HTML.

HTTP

O HyperText Transfer Protocol (HTTP) é um protocolo de aplicação responsável pelo tratamento de pedidos/respostas entre cliente e servidor na World Wide Web. Ele surgiu da necessidade de distribuir informações pela Internet e para que essa distribuição fosse possível foi necessário criar uma forma padronizada de comunicação entre os clientes e os servidores da Web e entendida por todos os computadores ligados à Internet. Com isso, o protocolo HTTP passou a ser utilizado para a comunicação entre computadores na Internet e a especificar como seriam realizadas as transações entre clientes e servidores, através do uso de regras básicas. (fonte : http://pt.wikipedia.org/wiki/HTTP)

DISTRIBUINDO AS APLICAÇÕES

Pode parecer estranho falar antes da distribuição de uma aplicação em um artigo sobre desenvolvimento, mas acredite, didaticamente é melhor você saber como esta aplicação é disponibilizada.

Quando se desenvolve uma aplicação web, a mesma deve ser distribuída/instalada (deploy) na máquina servidora, onde um servidor (container) de aplicações web está instalado. Note que uma aplicação web não é instalada na máquina de quem usa a aplicação.

DEPLOY/ UNDEPLOY

Deploy é o processo relacionado à disponibilização de uma aplicação web em um servidor web (ou container web) para que a mesma possa estar disponível para acesso a todos que precisem da mesma. Undeploy é o processo inverso, refere-se a situação onde uma aplicação é retirada (desinstalada) do servidor, tornando-a indisponível para acesso.

Figura 3 – Deploy e Undeploy de uma aplicação WEB no Tomcat

De forma simplificada, no caso do Tomcat, pode-se dizer que para distribuir uma aplicação para funcionar em uma máquina tendo ele (Tomcat) como servidor web, bastaria criar uma pasta na pasta webapps que represente sua aplicação, e nela, copiar a mesma (sua aplicação). A Figura 3 apresenta cinco aplicações disponíveis.

CONTAINER WEB

Um Web Container implementa um componente que está de acordo à arquitetura JEE. A especificação JEE exige que a implementação possua um ambiente para componentes web que inclui segurança, concorrência, gerenciamento de ciclo e vida, transação, distribuição e outros serviços.

SERVLET CONTAINER

Um Servlet Container é um Web Server especializado que suporta a execução de Servlets.  Nele são combinadas a funcionalidade básica de um Web Server com certas otimizações e extensões de Java/Servlet, como um ambiente de execução Java integrado, além da habilidade de traduzir automaticamente URLs específicas em requisições Servlets.

PRATICANDO

Obtendo e instalando o Apache Tomcat

Antes da implementação de exemplos iniciais é preciso que o Apache Tomcat esteja devidamente instalado em sua máquina. Para isso, acesse http://tomcat.apache.org/. Na página exibida, no lado esquerdo (de acordo a layout de site acessado em 13/08/2008 às 15h:03m), em download, clique no link referente à versão desejada, neste caso, Tomcat 6.x. Uma nova página será exibida, procure pela parte que traz a versão (6.0.18), como mostrado na Figura 4.

Figura 4 – Realizando o download do Apache Tomcat.

Para este material o download necessário é Binary Distributions (aplicação executável). O Source Code Distributions é para o caso de você precisar do código fonte do Tomcat para personalizações. Dentro de Binary Distributions existem as opções Core e Deployer. Iremos nos ater ao Core, núcleo básico do Tomcat. Se você utiliza o MS Windows suas opções de download são zip ou Windows Service Installer. A segunda opção irá realizar o download de um instalador para o Tomcat. Ao executar este instalador você pode optar em ter o Tomcat funcionando como um serviço em sua máquina ou ainda como uma aplicação normal. A primeira opção (zip) traz uma pasta (diretório) com toda a aplicação do Tomcat, bastando descompactar o arquivo e é esta opção que usaremos neste artigo. Realize o download do zip que contém o Core do Tomcat. Ao descompactar este arquivo, você terá uma estrutura semelhante a apresentada pela Figura 5.

Figura 5 – Estrutura de diretórios criada pela descompactação do arquivo baixado

Iniciando (“startando”) o Tomcat

Um ponto importante antes de iniciar o Tomcat, tornando-o disponível para publicação de aplicações web, é saber a qual porta o mesmo responde. Por padrão, a porta HTTP é 8080, porém, pode ocorrer de em sua máquina existir outros serviços que utilizem esta porta, como por exemplo o IIS (Internet Information Services). Se você realizou o download do instalador Windows, você poderá informar uma outra porta (se quiser), como por exemplo a 8084, porém, em caso de download do arquivo compactado, como sugerido neste artigo, é preciso realizar esta configuração de forma manual. Localize, na pasta conf o arquivo server.xml e o edite no bloco de notas (ou um editor XML, se o tiver em sua máquina). Procure pelo trecho de código semelhante ao apresentado pela Figura 6. No elemento port, logo no início da tag Connector, coloque a porta desejada. Procure no arquivo outras referências à porta 8080 e mude para a nova que escolheu.

Figura 6 – Arquivo de configuração do Apache Tomcat

Uma vez configurada a porta pela qual o Tomcat atenderá as requisições é preciso executá-lo para que assim ele fique disponível para atender as requisições. Como nossa opção de download foi a do arquivo compactado, é preciso acessar, via console, a pasta onde estão os aplicativos responsáveis pelo startup do Tomcat. Esta pasta é nomeada como bin e se encontra dentro da pasta descompactada, como pode ser constatado na Figura 5. A Figura 7 apresenta o acesso a esta pasta.

Figura 7 – Acessando a pasta bin do Tomcat

Para iniciar o Tomcat através da console é necessário que algumas variáveis de ambiente estejam devidamente configuradas. Uma vez que o Tomcat é um Servlet Container, é preciso que ele consiga identificar onde se localizam o Java Development Kit (JDK) e o Java Runtime Environment (JRE). As variáveis são JAVA_HOME e JRE_HOME respectivamente. Para configurar estas variáveis, acesse as propriedades avançadas do computador e configure as variáveis. Clique com o botão direito sobre o ícone Meu Computador e opte por Propriedades ou, acesse o Painel de Controle e nele a opção Sistema. Em qualquer uma das opções, a janela representada pela Figura 8 será exibida.

Figura 8 – Acessando opções para configurar variáveis de ambiente

Acesse a guia Avançado e nela o botão (logo abaixo) Variáveis de Ambiente e será exibida uma janela, representada pela Figura 9.

Figura 9 – Configurando variáveis de ambiente

Verifique na parte referente à Variáveis do sistema se existem as duas a serem inseridas (JAVA_HOME e JRE_HOME). Caso existam, verifique se os valores atribuídos estão corretos. Caso as variáveis não existam clique no botão Nova e informe os dados na janela que se faz exibir, como apresentado na Figura 10.

Figura 10 – Registrando variáveis de ambiente

Uma vez as variáveis estarem devidamente configuradas é possível iniciar o Tomcat. Na pasta Bin onde o mesmo foi descompactado, execute o arquivo de lotes (batch file) chamado startup.bat. Ele executará algumas verificações e se tudo estiver correto o Tomcat será iniciado e passará a atender as requisições na porta especificada na configuração. Veja o Tomcat em execução na Figura 11.

Figura 11 – Tomcat em execução

Agora é preciso testar e ver se o Tomcat está respondendo às requisições. Acesse seu browser e nele digite http://localhost:8084 (onde 8084 é a porta configurada, verifique a que utilizou). Caso esteja tudo bem configurado e funcionando, a página exibida na Figura 12 é apresentada.

Figura 12 – Página principal do Tomcat na máquina local

Praticando

Para que este artigo não fique apenas na instalação e funcionamento do Tomcat, vamos desenvolver uma aplicação simples para disponibilizar para acesso via browser. Na realidade, esta aplicação se limitará a uma página HTML.

Uma página com conteúdo estático

Pode-se dizer que uma página que possui conteúdo estático é aquela em que sempre, independente de qualquer situação, exibirá o mesmo conteúdo. Uma página que possui conteúdo puramente HTML, desde sua criação, é uma página com conteúdo estático.

Crie em sua máquina uma pasta chamada, por exemplo, meus_sites e dentro dela outra, chamada olahtml e, dentro desta pasta, crie um arquivo chamado ola.html e dentro dele o código da Listagem 1.

OLA.HTML

<html>

  <head>

   <title>Página com conteúdo estático</title>

  </head>

  <body>

    Esta página tem seu conteúdo estático

  </body>

</html>

Listagem 1 – Código da página ola.html, com conteúdo estático

Para o Tomcat, uma aplicação existe quando a mesma está hospedada dentro de seu diretório (pasta) webapps. Existem algumas técnicas para deploy, que serão ainda vistas, mas no momento, copie a sua pasta olahtml para dentro da pasta webapps. Pode-se dizer que com esta operação, sua aplicação está disponível para ser acessada através de requisições ao Tomcat. Acesse seu browser e digite http://localhost:8084/olahtml/ola.html e o resultado deverá ser algo semelhante ao exibido na Figura 13.

Figura 13 – Requisição para aplicação exemplo atendida pelo Tomcat

Caso apareça em seu browser uma mensagem que informe o erro 404 (recurso solicitado não encontrado), verifique se informou a URL de forma correta. Caso esteja tudo certo no endereço, é preciso parar o Tomcat e iniciá-lo novamente. Na janela onde o mesmo está executando, pressione as teclas CTRL e C juntas. Isso interrompe a execução do Tomcat. Chame novamente o startup.bat para executá-lo novamente.

Bem, termino aqui o conteúdo desta primeira parte e em breve disponibilizarei a segunda parte, que apresentará algumas técnicas de deploy.

Everton Coimbra de Araújo

Everton Coimbra de Araújo - Desde 1987 atua na área de treinamento e desenvolvimento. Como Mestre em Ciência da Computação, é professor da UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ, Campus Medianeira, onde leciona disciplinas relacionadas ao desenvolvimento de aplicações web, com Java e .NET.

É autor dos livros Desenvolvimento para WEB com Java, Orientação a Objetos com Java - Simples, Fácil e Eficiente, Algoritmo - Fundamento e Prática em sua terceira edição e dos livros Delphi - Implementação e Técnicas para Ambientes Virtuais e C++ Builder - Implementação e Técnicas para Ambientes Virtuais. Todos pela VisualBooks. Pode ser contactado através do e-mail everton@utfpr.edu.br ou evertoncoimbra@gmail.com.