Aplicativos Web com Java

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, interconectados através de uma rede comum.

Porque então a web se tornou tudo isso que é hoje ? Dentre tantos motivos podemos destacar as seguintes mais importantes:

  1. Pode ser acessados em qualquer lugar do mundo, a qualquer hora, a qualquer dia, ou seja, 100% de disponibilidade, desde de que tenha acesso a web.
  2. Não importa qual é a maquina ou sistema operacional, aplicativos web são implementados em cima de tecnologias padronizadas como HTTP e HTML que são reconhecidos e utilizadas em qualquer plataforma.
  3. Os clientes acessam via aplicativos browsers (Navegadores de Internet) que é fácil de usar e atualmente estão 100% popularizados.
  4. Não precisa ser instalados nada nas maquinas clientes para usar os sistemas.
  5. Milhões de pessoas podem acessar o mesmo sistema ao mesmo tempo.
  6. Atualizações dos sistemas nas maquinas servidores não refletem nenhuma mudança necessária nas maquina clientes, quando o responsável mudar os sistema o mundo inteiro é automaticamente atualizado.

E sempre a pergunta vem a tona: Mas como eu posso fazer um aplicação web com Java ? Quais classes usar? E é nesse ponto que os iniciantes se perdem dentro tantas siglas existentes dentro das 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.

Os problemas dos iniciantes no JEE é que eles NÃO DETEM O CONHECIMENTO DE TODAS AS POSSIBILIDADES REFERENTES AOS DIFERENTES TIPOS DE APLICATIVO WEB que possam ser desenvolvido e muito menos QUAIS SÃO AS TECNOLOGIAS E FERRAMENTAS EXISTENTES USADAS EM CADA CASO.

E pior, tem iniciante que não tem nem 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 tb não conseguindo abstrair a motivação por de traz de uma simples e básica tecnologia…..como por exemplo: existe pessoas que não consegue entender “o por que” deve ser colocado o IP da maquina em um conexão JDBC. :-(

Reunindo todos estes fatos………..seria como o camarada chegando 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 oque, Jpara la, Jpara ca…..????? :-)

Outro fator de peso nestes momentos de desespero é o fato desconhecido de muitos “é que 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 negocio e mecanismos de persistência Objeto/Relacional………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 aonde o foco é arrastar e soltar, resultando em muito desenvolvedores folgados, burro e com uma serie de vícios.

As famílias de produtos disponíveis no atual JEE se resume assim:

Web Application Technologies
JavaServer Faces 1.2 (JSR 252)
JavaServer Pages 2.1 (JSR 245)
JavaServer Pages Standard Tag Library (JSR 52)
Java Servlet 2.5 (JSR 154)

Enterprise Application Technologies
Common Annotations for the Java Platform (JSR 250)
Enterprise JavaBeans 3.0 (JSR 220)
J2EE Connector Architecture 1.5 (JSR 112)
JavaBeans Activation Framework (JAF) 1.1 (JSR 925)
JavaMail (JSR 919)
Java Data Objects (JDO) (JSR 243)
Java Message Service API (JSR 914)
Java Persistence API (JSR 220)
Java Transaction API (JTA) (JSR 907)

Web Services Technologies
Implementing Enterprise Web Services (JSR 109)
Java API for XML-Based Web Services (JAX-WS) 2.0 (JSR 224)
Java API for XML-Based RPC (JAX-RPC) 1.1 (JSR 101)
Java Architecture for XML Binding (JAXB) 2.0 (JSR 222)
SOAP with Attachments API for Java (SAAJ) (JSR 67)
Streaming API for XML (JSR 173)
Web Service Metadata for the Java Platform (JSR 181)

Management and Security Technologies
J2EE Application Deployment (JSR 88)
J2EE Management (JSR 77)
Java Authorization Contract for Containers (JSR 115)

Cada um destes podem possuir subdivisões e tecnologias internas, constituindo uma extensa 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 um aplicação web. Provavelmente será usado duas a cinco tecnologias combinas para construir uma grande, boa, robusta e confiável solução.

Este post 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 vc esteje iniciando, não se desespere e nem perca seus cabelos :-) o lugar indicado para começar é na especificação de WEB APPLICATION TECHNOLOGIES constituído pelas tecnologias Servlets, JSP, Filters, Web Listeners, TagLibs e JSF. Aqui vc 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. Segue os links abaixo:

Head Fist Servlet e JSP

Use a cabeça Servlet e JSP em Português

Bons estudos para todos.

“Não recorram aos médiuns, nem busquem a quem consulta espíritos, pois vocês serão contaminados por eles. Eu sou o Senhor, o Deus de vocês.” Levítico 19:31

About these ads

13 responses to “Aplicativos Web com Java”

  1. Rodrigo Rosa says :

    Grande Fernando!

    Belo texto, veio em boa hora! Já fiz broadcast para todo o departamento de desenvolvimento aqui da empresa. Esse é uma assunto recorrento na discussão durante o café. O “por onde começar” a desenvolver em java, em especial, no que tange a web.
    Para o próximo, vc poderia abordar os diversos frameworks que o mercado oferece!
    =)

    Keep coding!
    Abração!

    PS: RSS devidamente assinado!

  2. Fernando Franzini says :

    Rodrigo

    Legal !! quanto mais pessoas opinarem e apresentarem sua opinião melhor, porque todos vamos crescer com isso !!! Vamos ver o tempinho que sobra para os próximos post…e também tenho outras idéias em outros assuntos relacionado com Java. Se caso eu não vier a complementar este assunto com novos post, fique a vontade para perguntar outras duvidas relacionado com o contexto do post.
    Keep coding with Java !!!!

    Valeu :-)

  3. Adriana Costa says :

    Fernando,

    Gostei muito do seu artigo! Sou recém formada em Computação. Tenho conhecimento de OO, mas sem nenhuma experiência em desenvolvimento para web…uma pena! Pra piorar, a empresa em que trabalho está querendo migrar as aplicações cliente-servidor para a web e os outros programadores só possuem experiência no paradigma procedural….Seu artigo, de certa forma, me tranquilizou, pois sei que as dificuldades que estamos encontrando na fase de estudo das tecnologias disponíveis é normal.

    Atualmente, estamos avaliando o JDeveloper e o Java Studio Creator como IDEs, mas não sabemos se estas ferramentas são suficientes…qualquer matéria sobre o assunto será proveitosa!!

    Continue com a iniciativa…estamos prestando atenção :-D

  4. Fernando Franzini says :

    Ola Adriana

    Atualmente não existe uma empresa que não queira uma aplicação na web, seja um portal anúncios, aplicativo corporativo até soluções da própria empresa disponíveis remotamente ! E é nesse contexto que Java continua pegando muita força e liderando o mercado de soluções com escalabilidade. Muitas pessoas e empresas estão na mesma situação que a sua detendo solução não escaláveis, plataformadas e amarradas com vendores especifico….e agora que a coisa esta partindo para acesso 100% remoto..todos querem migrarem para web. Mas tenho observado que a curva do aprendizado para Java, a falta de conhecimentos mínimos e a falta de orientação tem feito muitas empresas desistirem do Java e adotarem outras soluções similares…Não desista…va com calma e faça tudo o que puder: cursos de extensões, compre livros e é claro estudar muito !!!!!

  5. Diego Rosa says :

    Fernando, programo Java há algum tempo, mas só agora estou começando a entrar no mundo JavaEE. Qual servidor de aplicações open source você recomendaria para quem está iniciando? JBoss, Apache Geronimo, GlassFish, JOnAS? E para aplicações em ambientes de produção, qual seria o servidor de aplicações mais recomendado?

  6. Fernando Franzini says :

    JBoss e e Tomcat em ambos os casos.

  7. Leonardo says :

    Fernando, muito bom o post. Também estou iniciando do desenvolvimento de aplicações web e quando vi as inúmeras opções existentes, tecnologias/frameworks fiquei completamente perdido.
    Preciso desenvolver um projeto onde todos nossos clientes irão acessar o mesmo sistema, sendo que o sistema irá trabalhar com bases diferentes para cada cliente. Neste cenário optei por usar JSF + JBoss Seam + JPA. O que tu acha dessa combinação??

    Um grande abraço!

  8. Fernando Franzini says :

    Ola Leonardo

    Ótima combinação !! Prega fogo !!
    A paz !!

  9. Regina Vaine says :

    Olá, iniciei um trabalho de tradução e gostaria de saber quando em que contexto devo usar as palavras applicativo-applicação. Obrigada pela sua assistência.

    Regina

    • Fernando Franzini says :

      Acredito que seja basicamente a mesma coisa..sendo assim pode usar intercambialmente.

  10. Yuri says :

    Ótimo texto, muito obrigado!

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.

Junte-se a 660 outros seguidores

%d blogueiros gostam disto: