Atualmente podemos encontrar aplicações web em todos os lugares, em todas a empresas, de vários tipos diferentes como por exemplo: blogs, fotologs, sites de vendas de todo e qualquer tipo de produtos, pedidos/reservas de passagens de ônibus, avião, hotel e até aplicativos de alto risco e desempenho como aplicações corporativas, bancarias, leilões etc etc etc e muitooo etc aqui!!! Não economize imaginação, qualquer coisa pode estar disponível na web!!!!
Entrando na parte técnica da coisa, aplicativos web são por natureza APLICAÇÕES DISTRIBUÍDAS. Ou seja, são pedaços de um mesmo programa que de forma combinada executam em diferentes lugares em maquinas separadas denominados clientes e servidores, inter-conectados através de uma rede comum.
Por que então a web se tornou tudo isso que é hoje? Dentre tantos motivos podemos destacar os seguintes mais importantes:
- Podem ser acessados em qualquer lugar do mundo, a qualquer hora, a qualquer dia. Ou seja, 100% de disponibilidade, desde de que se tenha acesso à web.
- Não importa qual é a máquina ou sistema operacional, aplicativos web são implementados em cima de tecnologias padronizadas como HTTP e HTML que são reconhecidas e utilizadas em qualquer plataforma.
- Os clientes acessam via aplicativos browsers (Navegadores de Internet) que são fáceis de usar e atualmente estão 100% popularizados.
- Não precisam ser instalados nada nas máquinas-clientes para usar os sistemas.
- Milhões de pessoas podem acessar o mesmo sistema, ao mesmo tempo.
- Atualizações dos sistemas nas máquinas-servidores não refletem nenhuma mudança necessária nas máquinas-clientes; quando o responsável muda o sistema, o mundo inteiro é atualizado automaticamente .
E sempre a pergunta vem à tona: mas como eu posso fazer um aplicação web com Java? Quais classes usar? E é nesse ponto que os iniciantes se perdem dentre tantas siglas existentes nas tecnologias Java. Antes de tudo, deve ser entendido que:
Existe uma série de tipos diferentes de aplicações Web e que Java oferece um kit de ferramentas e tecnologias para todos eles.
Por isso que encontramos um monte de sigla nos livros, artigos, revistas, tutoriais no mundo afora.
Vamos fazer uma simples brincadeira: Uma pessoa precisa fazer um bolo de chocolate com cobertura de morango. Esta pessoa se dirige até o supermercado adquire todos os ingredientes necessários para se fazer este bolo, como por exemplo farinha, açúcar, ovos, chocolate em pó e principalmente os morangos, e as ferramentas para a confecção auxiliares, como por exemplo panelas, batedeiras, colheres etc.
O que acontece com o desenvolvimento de aplicativos web em Java é simplesmente a mesma coisa!!!!!!!
Para o desenvolvimento de diferentes tipos de aplicativos web, a tecnologia Java disponibiliza um conjunto extenso de tecnologias e ferramentas agrupadas em um pacote chamado atualmente de Java Platform, Enterprise Edition 5 ou JEE 5 + um conjunto de ferramentas e padronizações com o objetivo exclusivo de economizar tempo e dinheiro no ciclo de desenvolvimento.
Com base no discernimento DO TIPO E AS CARACTERÍSTICAS DA APLICAÇÃO WEB que necessite desenvolver é que se seleciona as tecnologias e ferramentas a serem utilizadas para este fim.
O problema dos iniciantes no JEE é que eles não detêm o conhecimento de todas as possibilidades referentes aos diferentes tipos de aplicativos web que possam ser desenvolvidos e muito menos quais são as tecnologias e ferramentas existentes usadas para cada caso.
E, pior, tem iniciante que não tem o mínimo de conhecimento referente ao fundamento primordial de Java, que é a programação orientada a objetos, herança, polimorfismo, programação baseado em interfaces etc…. e também não consegue abstrair a motivação por trás de uma simples e básica tecnologia. Como por exemplo, existem pessoas que não conseguem entender “o porquê” de o IP da máquina ter que ser colocado em uma conexão JDBC.
Reunindo todos estes fatos, seria como o camarada que chega no hipermercado com 2 andares e um milhão de anúncios de produtos e ferramentas disponíveis, mas ele NÃO SABE QUAL É O DOCE QUE ELE PRECISA FAZER, NÃO SABE QUAIS SÃO E NEM PARA QUE SERVE CADA INGREDIENTE NAS PRATELEIRAS E MUITO MENOS QUAL FERRAMENTA ADQUIRIR!
Quem não se sentiu assim lendo uma revista Java ou navegando no site da SUN, vendo aquela sopa de letrinhas tudo começando com Jnão sei o que, Jpara lá, Jpara cá?
Outro fator de peso nestes momentos de desespero é o fato desconhecido de muitos que é o de “construir sistemas no paradigma web é indiscutivelmente muito mais difícil do que seu correspondente no desktop”, que por enquanto ainda é mais popular. O desenvolvimento web requer uma grande versatilidade no domínio de muitas e diferentes tecnologias e linguagens que podem ser resumidas em tecnologias que rodam no cliente, como HTML, CSS, JavaScript, DHTML e AJAX, e tecnologias rodam na parte do servidor como páginas dinâmicas, componentes de negócio e mecanismos de persistência Objeto/Relaciona e principalmente de ter concretos conhecimentos sobre conceitos básicos de engenharia de software, como por exemplo desenvolvimento baseado em camadas lógicas, físicas, distribuídas, concorrências, transações etc….que normalmente não usados em desenvolvimento desktop, sem mencionar uso de ferramentas RAD, onde o foco é arrastar e soltar, resultando em muito desenvolvedores preguiçosos, sem a oportunidade de adquirir conhecimentos arquiteturais e com uma série de vícios.
Atualmente as famílias de produtos disponíveis no atual JEE se resumem assim:
Web Application Technologies
JavaServer Faces 1.2
JavaServer Pages 2.1
JavaServer Pages Standard Tag Library
Java Servlet 2.5
Enterprise Application Technologies
Common Annotations for the Java Platform
Enterprise JavaBeans 3.0
J2EE Connector Architecture 1.5
JavaBeans Activation Framework (JAF) 1.1
JavaMail
Java Data Objects (JDO)
Java Message Service API
Java Persistence API
Java Transaction API (JTA)
Web Services Technologies
Implementing Enterprise Web Services
Java API for XML-Based Web Services (JAX-WS) 2.0
Java API for XML-Based RPC (JAX-RPC) 1.1
Java Architecture for XML Binding (JAXB) 2.0
SOAP with Attachments API for Java (SAAJ)
Streaming API for XML
Web Service Metadata for the Java Platform
Management and Security Technologies
J2EE Application Deployment
J2EE Management
Java Authorization Contract for Containers
Cada um destes pode possuir subdivisões e tecnologias internas, constituindo uma extensa lista de opções de produtos e ferramentas. Mas a boa notícia é que ninguém tem que saber tudo ou dificilmente vai ter que deter o conhecimento de tudo ou utilizar tudo ao mesmo tempo para a construção de uma aplicação web. Provavelmente serão usadas de duas a cinco tecnologias combinadas para construir uma grande, boa, robusta e confiável solução.
Este artigo não tem o objetivo de descrever todos os tipos/características que podem diferenciar um aplicativo web de outro e nem contrastá-lo com as tecnologias certas disponíveis dentro do JEE, mas se caso você esteja iniciando, não se desespere e nem perca seus cabelos….., o lugar ideal para começar é na especificação de WEB APPLICATION TECHNOLOGIES constituído pelas tecnologias Servlets, JSP, Filters, Web Listeners, TagLibs e JSF. Aqui o iniciante se deparara com todas as mudanças de paradigma necessárias para iniciar sua carreira de desenvolvimento de aplicativos web, podendo posteriormente entrar em outras tecnologias como JPA, EJB e JMS e SOA.
Na série Head First existe um ótimo livro que aborda este conteúdo, podendo atualmente ser adquirido em português ou inglês.
Bons estudos para todos e até a próxima.