+1

Alternativas para Desenvolvimento Web J2EE, .NET e Django/Python

criado por Leidmar Magnus Festa em 08/03/2010 11:16pm
Introdução
A vantagem competitiva das empresas nos dias atuais está no desenvolvimento de aplicações específicas que forneçam serviços de negócio únicos; Atualmente, a maioria dos sistemas desenvolvidos são distribuídos, e estes realizam tarfas simples, desde controle de estoque até coleta e fornecimento de dados para a diretoria. Estas aplicações
precisam ainda ter a possibilidade de receberem incrementos sem maiores dificuldades. Como é sempre aconselhável que um padrão único seja utilizado no desenvolvimento, abaixo são expostas as principais características de 3 das plataformas mais utilizadas neste tipo de desenvolvimento: J2EE, .NET e Django – os quais satisfazem pelo menos um dos requisitos mínimos: rapidez no desenvolvimento, simplicidade, portabilidade, escalabilidade ou integração de sistemas legados.

1: J2EE
A plataforma J2EE (Java 2 Enterprise Edition) foi concebida com uma visão comercial tendo como um dos objetivos centrais a simplificação de problemas complexos e a padronização do desenvolvimento/distribuição de aplicações. É importande ressaltar que o J2EE é um padrão/filosofia de desenvolvimento para uma plataforma e não um produto do qual podemos fazer o download (a exemplo aplicativos disponíveis na internet o Dvd Shrink por exemplo). “A plataforma J2EE foi projetada para oferecer um padrão para o desenvolvimento e distribuição das aplicações necessárias para tirar proveito do grande alcance da economia em rede” (CATTELL, 2001 p.2).

1.1 Descrição da Tecnologia J2EE
Esta tecnologia foi baseada na linguagem de programação Java, e a característica que sempre foi marcante nesta linguagem é a portabilidade, ou seja, o mesmo código pode ser executado em diferentes sistemas operacionais. O processo ocorre assim:
1) O código fonte em Java é escrito
2) Este código é compilado para bytecode, que é um código intermediário entre o código fonte e a linguagem de máquina.
3) A JRE (Java Runtime Environment) interpreta o bytecode e o executa.

Ou seja, analogamente todos os componentes J2EE são convertidos para
bytecode e executados (o mesmo código para diferentes sistemas operacionais). A J2EE é baseada em componentes que segundo BODOFF (2003) são de 3 tipos:

• Clientes J2EE (clientes web ou aplicação)
• Componentes Web (servlets ou páginas jsp)
• Componentes de negócio (estes possuem o código de negócio)

Em J2EE as funções que estão relacionadas ao gerenciamento e à alocação de recursos são controlados por um por um middleware do servidor de aplicação. Como exemplo destas funções, temos: gerência de transações distribuídas, persistência, segurança, fail-over e resource pooling. “Isso tudo possibilita uma redução da complexidade e do tempo de desenvolvimento de novas aplicações, uma vez que os esforços são concentrados na lógica de negócio”2 (OLIVEROS, Dário e SANTUCI, José 2001 p.1).

1.2 Foco de Mercado do J2EE
A plataforma J2EE devido a sua forma mais robusta (lembrando da middleware que fornece vários serviços, já exemplificados anteriormente, os quais podem ser invocados através de comandos simples) fornece meios para se construir aplicações seguras, que possuem uma boa escalabilidade (devido ao elevado número de usuários que executam transações ao mesmo instante) e de fácil manutenção. Estes fatores favorecem a sua utilização na criação de sistemas de grande porte. Como exemplo podemos citar sistemas de intranet de grandes instituições, internet home banking “e quaisquer outros que necessitem de uma padronização bem estruturada e rigorosa”(SHEIL e MONTEIRO, 2002). Como exemplos práticos, encontramos o J2EE sendo visivelmente utilizado no internet banking do Banco do Brasil e Hsbc, na intranet e nos servidores de e-mail do Banco do Brasil e do TRE/PR.

1.3 Benefícios e Desvantagens do J2EE
Algumas das mais importantes e vantajosas características desta plataforma não dizem respeito à tecnologia, mas sim à Java Developer Community, de onde chegam muitas idéias que, após muitos testes, são incrementadas à plataforma. Assim sendo, os desenvolvedores têm a chance de saber o que o container está realmente fazendo com seu código, não que isso seja realmente necessário, mas deixa todo o processo mais
claro.
O fato de existirem grandes empresas, como a Sun e a IBM, mantendo a
padronização do desenvolvimento da middleware traz confiança para todos os desenvolvedores e para as empresas que utilizam a plataforma, ou seja, sabemos que estas empresas não tomariam uma atitude de mudança drástica quebrando a compatibilidade entre as versões.
Multiplataforma é a vantagem mais mencionada por todos que discutem sobre J2EE, sobre ela não é necessário alongar a discussão, mas sobre o fato de este somente aceitar uma linguagem de programação podemos explanar algumas palavras. Esta característica da plataforma pode ser vista como uma vantagem no quesito padronização mais rígida, pois temos somente uma linguagem. Isso deixa os desenvolvedores em uma
posição mais confortável com relação à programação de “nível mais baixo” , desta maneira, mesmo que um programador ainda não conheça profundamente o código de um sistema ele facilmente poderá dar manutenção no mesmo, já que sua principal preocupação será com as regras de negócio. Desta maneira, cada profissional estará mais livre para desempenhar sua verdadeira função, e não ficar apenas consertando as
SQL ou ainda perder horas tentando encontrar a solução para uma nova adaptação que foi feita na camada de persistência.
A desvantagem em não aceitar outras linguagens também diz respeito o
desenvolvedor que já está habituado a linguagens como VB, C# ou ainda C++, o mesmo precisará se habituar à linguagem Java para poder utilizar de maneira correta os recursos com a J2EE.
O suporte e integração de sistemas pode ser realizado através de várias maneiras no J2EE e é o mais completo em relação a outras plataformas:
• JMS(Java Message Service) para realizar a integração com os sistemas de mensagem pré-existentes
• Serviços web que podem ser utilizados em quaisquer sistemas
• CORBA para interface com código escrito em outras linguagens e que possa existir em máquinas remotas
• JNI para carregar bibliotecas nativas e chamá-las localmente

O J2EE oferece também soluções completas, todas inseridas em sua plataforma. Isso é feito através de uma grande variedade de ferramentas e aplicações existentes no mercado, as quais proporcionam mais funcionalidade do que qualquer outra plataforma provê. Mas esta característica pode muitas vezes não ser muito vantajosa, pois devido a
implementação low-end (software livre) você muitas vezes precisará mesclar ferramentas para obter uma solução completa, o que pode causar imperfeções no quesito portabilidade. Por este motivo, é importante escolher um “fornecedor” de grande porte (como IBM, Oracle, BEA ou iPlanet) os quais oferecem soluções completas, isso evita problemas com interoperabilidade.
A base de conhecimento formada por toda a comunidade de desenvolvedores
habilita os mesmos a aplicar as melhores práticas, enquanto na produção de empresas privadas existe uma tendência maior de falhas de comunicação e um menor conhecimento aplicado.

2 .NET
O Microsoft .NET é um conjunto de produtos que possibilita a empresa a construir de uma forma moderna os seus serviços web e aplicações. Já podemos destacar aqui um importante ponto: .NET é um produto estratégico, enquanto J2EE é um padrão dentro do qual são criados os produtos.

2.1 Descrição da Tecnologia .NET
“Microsoft.NET é baseado no Windows DNA, que foi uma plataforma desenvolvida para dar suporte ao desenvolvimento de aplicações empresariais. O Windows DNA incluía muitas tecnologias que estavam sendo testadas e que hoje já são utilizadas normalmente, incluindo o
MTS(Microsoft Transaction Server) e o COM+(Component Services), MSMQ(Microsoft Message Queue a o Microsoft SQL Server Database. O novo Framework .NET substitui estas tecnologias e inclui ainda uma camada de serviços web e um melhor suporte às linguagens aceitas” (VAWTER e ROMAN - J2EE vs. Microsoft.NET, 2001);
De uma maneira resumida, o funcionamento tem 3 características:
1. As aplicações .NET são executadas dentro de um container que fornece todo o suporte necessário, desde transações simples até segurança e funções de persistência em banco de dados e serviços de mensagens
2. A camada de negócios do .NET utiliza os componentes de gerenciamento .NET. Esta camada executa as regras de negócio e a lógica de dados. Ela se conecta ao banco de dados utilizando ADO.NET (Active Data Objects) a outros sistemas existentes utilizando os serviços providos pelo Microsoft Host Integration Server 2000 tal como o COM TI (COM Transaction Integrator). Pode ainda concectar-se Alternativas de aos business partners utilizando serviços web com SOAP, UDDI e WSDL.
3. Os clientes como navegadores e dispositivos wireless conectam-se via
ASP.NET(Active Server Pages) através de interfaces HTML, XHTML ou WML.

A plataforma .NET foi concebida com interoperabilidade e independência de linguagens de programação, ou seja, é possível que o desenvolvedor programe em qualquer uma das linguagens da plataforma (VB, C++, C# ou ASP). O funcionamento desta característica se resume a tradução do código para MSIL (Microsoft Intermediate Language) também chamada de IL, a qual se caracteriza por ser uma linguagem neutra, sendo análoga ao bytecode Java . Após isso, a IL é interpretada e traduzida para a
linguagem executável da máquina - o Framework .NET possui o CLR (Common Language Runtime) que também é análoga à JRE que realiza esta tarefa. O CLR é o mediador entre o código desenvolvido, desenvolvedores e o hardware, sendo que a maioria dos códigos são executados por este container, o qual “fornece muitos recursos que não estavam disponíveis no Windows DNA, como por exemplo automatic garbage collection, manipulação de excessões, mescla de herança entre as linguagens, debugging e a execução equivalente de versões diferentes do mesmo componente .NET” (OLIVEROS e SANTUCI , 2001 p.10).

2.2 Foco de Mercado do .NET
A filosofia desta plataforma é altamente comercial, visando maior praticidade, e velocidade no desenvolvimento (o que reduz muito os custos). Sua arquitetura possui uma avaliação razoável no quesito escalabilidade para processos de usuários concorrentes e alto nível de segurança(quase totalmente dependente do programador).
Todas estas características moldam o perfil do desenvolvimento .NET, o qual passou ser mais utilzado em sistemas de médio porte e em alguns de pequeno porte. Como exemplos práticos, temos os portais de compra de médio porte como www.submarino.com.br, www.pontofrio.com e outros sistemas como http://myspace.com e http://dell.com .

2.3 Benefícios e Desvantagens do .NET
O suporte à múltiplas linguagens de programação que foi introduzido pela Microsoft através do CLR foi uma grande inovação para o mercado e é claramente uma grande vantagem da plataforma .NET . Mas este aspecto pode, em alguns casos, ser uma fraqueza, em especial se considerarmos que um sistema escrito em mais de uma linguagem com certeza terá sua sinergia prejudicada e tornará a manutenção trabalhosa e desgastante. O fato é que uma combinação de linguagens sendo executada na CLR pode levar o desenvolvedor a um labirinto muitas vezes sem saída, considere por exemplo a manutenção, incremento de funcionalidades e o debug.
Agora imagine que você precisará de um expert em cada linguagem para realizar cada um destes itens. Desenvolver um sistema em várias linguagens pode demandar muito tempo e aumentar o custo. Na maioria dos casos, a experiência demonstra que o melhor caminho é o da padronização
com uma só linguagem, inclusive para possibilitar a sua futura integração caso venham a se tornar sistemas legados.
Ainda abordando o tópico acima, é de praxe que desenvolvedores utilizando as linguagens VB c C# conseguem desenvolver com uma velocidade maior do que as outras suportadas, mas o
que acontece caso o seu desenvolvedor perito em C# sair da empresa? Ou você precisará treinar o seu desenvolvedor VB.NET para entender e programar em C#, ou achar outro programador que não possui conhecimento sobre seu sistema. Ambas as soluções causarão atraso e baixa
produtividade.
Uma vantagem incontestável do .NET sobre a maioria dos seus concorrentes é que este oferece uma grande variedade de opções time-to-market, as quais não são encontradas em outras plataformas, ou seja, provê processos de gerenciamento de negócios e funções de ecommerce
que ajudam muito o desenvolvedor em suas tarefas.
Finalizando, podemos ainda destacar a aguçada percepção e experiência de mercado que o time de desenvolvimento da Microsoft possui. Quaisquer novidades que surgem são logo testadas e, caso sejam “produtivas” logo são adicionadas ao escopo da plataforma.

3 Django
O Django é um Framework, construído com a linguagem Python, para
desenvolvimento rápido web que é distribuído como software livre e mantido por uma comunidade ativa de desenvolvedores. Assim como os frameworks CakePHP e Grails, o Django foi criado com base no Ruby on Rails que foi o framework que causou mais impacto nos últimos anos.

Comentários:

Mostrando 1 - 10 de 10 comentários
Wendson disse:
Infelizmente eu tenho que concordar com quase tudo que o Marcos falou. Como ele disse Rails e Django são para poucos (entusiastas) que podem se dar ao luxo de desenvolver em uma linguagem com poucos profissionais no mercado. É mais dificil e relativamente mais caro encontrar um programador Rails e Djang. Se houvessem mais projetos famosos desenvolvidos nessas liguangens acredito que cenário seria outro.

IG e google app usam o Django + quem mais sabe disso além dos programadores? + todos conhecem algum grande projeto em java, .net ou php.
07/07/2011 6:40pm (~13 anos atrás)

A linguagem não importa, o que importa se você sabe programar bem na linguagem. Eu trabalho com PHP e Perl, as duas atendem minhas necessidades, eu não fui por opinião de ninguém quando escolhi essas duas e sim porque gostei de programar com elas, tenho livros de várias linguagens, o livro de Python eu nem cheguei a ler. Esse negocio de profetizar linguagem é furada meu. E também tem pessoas que nunca sabem o que quer, mas eu vou dar um conselho, ficar pulando de galho em galho não vai aprender nem uma e nem outra, então escolha sua linguagem e bola pra frente.

Falou.
30/06/2011 7:39pm (~13 anos atrás)

Marcos Regis disse:
Opa. olá a todos.
Só agora vi os comentários e percebo que mexi num vespeiro com minhas palavras.
Primeiro todos que me citaram devem entender que em nenhum momento disse que Django ou RoR são ruins. Na verdade eu sou um fã de RoR pelo padrão que ele usa e que é largamente copiado. Afinal o que é bom nós devemos aproveitar.
O que quiz deixar claro é o seguinte. O uso de Django ou de Ruby on Rails, Python, LISP é restrita a entusiastas que sabem o poder que elas lhe oferecem. Não são linguagens de mercado como o PHP, .Net ou JEE. A quantidade de vagas de trabalho (e consequentemente projetos comerciais que a utilizam) para estas linguagens é muito menor do que a quantidade de programadores disponíveis mesmo estes últimos serem apenas uma pequena porção do universo de desenvolvedores WEB. Já as que citei posteriormente possuem tantas vagas quanto programadores a ponto de que eu não conheça nenhum programador PHP de nível Pleno/Senior desempregado aqui em São Paulo.
Ninguém vai implantar um sistema cuja mão-de-obra seja de entusiastas.

Isso não acontece só com as liguagens. O mesmo se dá com BDs por exemplo. Por que o PostgreSQL quase não é mais usado (proporcionalmente falando) e MySQL praticamente domina os Webservers?
Vocês podem me mostrar meia duzia de grandes sistemas feitos nestas plataformas e eu lhes darei dez vezes mais de grandes sistemas feitos em PHP.
Acompanho o desenvolvimento WEB desde o início e já vi este filme antes por isso continuo com minha opinião que tanto Django quanto Ruby on Rails não vão deslanchar e se tornarem tão populares quanto PHP (nem vale a pena mencionar .Net e JEE que possuem gigantes por trás), mas pode ser que eu me engane, pois não sou dono da verdade.
Para aqueles que nada têm a ver com isto e estão procurando informações sobre o que estudar/aprender apra entrar no mercado de trabalho sugiro como sempre JEE, .Net ou PHP por que quem trabalha quer dinheiro.
01/02/2011 7:16pm (~14 anos atrás)

Marcos Regis disse:
Opa. olá a todos.
Só agora vi os comentários e percebo que mexi num vespeiro com minhas palavras.
Primeiro todos que me citaram devem entender que em nenhum momento disse que Django ou RoR são ruins. Na verdade eu sou um fã de RoR pelo padrão que ele usa e que é largamente copiado. Afinal o que é bom nós devemos aproveitar.
O que quiz deixar claro é o seguinte. O uso de Django ou de Ruby on Rails, Python, LISP é restrita a entusiastas que sabem o poder que elas lhe oferecem. Não são linguagens de mercado como o PHP, .Net ou JEE. A quantidade de vagas de trabalho (e consequentemente projetos comerciais que a utilizam) para estas linguagens é muito menor do que a quantidade de programadores disponíveis mesmo estes últimos serem apenas uma pequena porção do universo de desenvolvedores WEB. Já as que citei posteriormente possuem tantas vagas quanto programadores a ponto de que eu não conheça nenhum programador PHP de nível Pleno/Senior desempregado aqui em São Paulo.
Ninguém vai implantar um sistema cuja mão-de-obra seja de entusiastas.

Isso não acontece só com as liguagens. O mesmo se dá com BDs por exemplo. Por que o PostgreSQL quase não é mais usado (proporcionalmente falando) e MySQL praticamente domina os Webservers?
Vocês podem me mostrar meia duzia de grandes sistemas feitos nestas plataformas e eu lhes darei dez vezes mais de grandes sistemas feitos em PHP.
Acompanho o desenvolvimento WEB desde o início e já vi este filme antes por isso continuo com minha opinião que tanto Django quanto Ruby on Rails não vão deslanchar e se tornarem tão populares quanto PHP (nem vale a pena mencionar .Net e JEE que possuem gigantes por trás), mas pode ser que eu me engane, pois não sou dono da verdade.
Para aqueles que nada têm a ver com isto e estão procurando informações sobre o que estudar/aprender apra entrar no mercado de trabalho sugiro como sempre JEE, .Net ou PHP por que quem trabalha quer dinheiro.
01/02/2011 7:16pm (~14 anos atrás)

Marcos Regis disse:
Opa. olá a todos.
Só agora vi os comentários e percebo que mexi num vespeiro com minhas palavras.
Primeiro todos que me citaram devem entender que em nenhum momento disse que Django ou RoR são ruins. Na verdade eu sou um fã de RoR pelo padrão que ele usa e que é largamente copiado. Afinal o que é bom nós devemos aproveitar.
O que quiz deixar claro é o seguinte. O uso de Django ou de Ruby on Rails, Python, LISP é restrita a entusiastas que sabem o poder que elas lhe oferecem. Não são linguagens de mercado como o PHP, .Net ou JEE. A quantidade de vagas de trabalho (e consequentemente projetos comerciais que a utilizam) para estas linguagens é muito menor do que a quantidade de programadores disponíveis mesmo estes últimos serem apenas uma pequena porção do universo de desenvolvedores WEB. Já as que citei posteriormente possuem tantas vagas quanto programadores a ponto de que eu não conheça nenhum programador PHP de nível Pleno/Senior desempregado aqui em São Paulo.
Ninguém vai implantar um sistema cuja mão-de-obra seja de entusiastas.

Isso não acontece só com as liguagens. O mesmo se dá com BDs por exemplo. Por que o PostgreSQL quase não é mais usado (proporcionalmente falando) e MySQL praticamente domina os Webservers?
Vocês podem me mostrar meia duzia de grandes sistemas feitos nestas plataformas e eu lhes darei dez vezes mais de grandes sistemas feitos em PHP.
Acompanho o desenvolvimento WEB desde o início e já vi este filme antes por isso continuo com minha opinião que tanto Django quanto Ruby on Rails não vão deslanchar e se tornarem tão populares quanto PHP (nem vale a pena mencionar .Net e JEE que possuem gigantes por trás), mas pode ser que eu me engane, pois não sou dono da verdade.
Para aqueles que nada têm a ver com isto e estão procurando informações sobre o que estudar/aprender apra entrar no mercado de trabalho sugiro como sempre JEE, .Net ou PHP por que quem trabalha quer dinheiro.
01/02/2011 7:16pm (~14 anos atrás)

Achei o artigo muito acadêmico. De qualquer forma, informação nunca é demais.

@Marcos Regis, acho que você precisa se informar um pouco mais sobre as linguagens de programação atuais e os projetos. Embora o PHP seja a linguagem escolhida por nós que comentamos aqui no site, temos que reconhecer outras linguagens sempre, mesmo que não sejamos programadores nelas. O mercado é volátil e o que PHP é hoje, pode não ser amanhã.

Primeiro, RoR não é linguagem, daí o nível de desinformação que você tem. Rails é framework, Ruby é a linguagem. A linguagem é que está em plena ascenção a algum tempo. Os melhores projetos do mundo ágil hoje são os projetos em Ruby. Pesquise por TDD/BDD e você vai encontrar nomes como RSpec, Cucumber. O melhor script para deploy de aplicações remotas hoje é em Ruby, o Capistrano e seu cliente web, o Webistrano.

Vide Python, que está presente em grandes projetos, inclusive sendo largamente utilizado em projetos do Google e, mais recentemente, no Brasil, na Globo.com.

Assim como PHP, cada linguagem tem seu nicho e suas características. Pior ou melhor é uma questão de escolha do programador e projeto.
07/11/2010 1:26pm (~14 anos atrás)

* Caro Marcos, o texto não foi escrito com a intenção de "ofender" ou "menosprezar", pelo contrário: através de uma pesquisa bibliográfica tentar mostrar que, dependendo do caso, uma plataforma pode ter mais vantagens do que outra. Não estou dizendo que o seu .Net é menos ou mais que as outras plataformas.

*Quanto a nomenclatura (J2EE,JEE etc) ok, mas acredito que isso trata-se de gosto. Eu e alguns colegas falávamos JEE mas tivemos aula com o professor Alexandre Denes Santos que trabalha com a plataforma desde os primórdios e ele mesmo muitas vezes utiliza J2EE... gosto.

*Com relação ao que vc mencionou sobre Rails e Django: bem somente porque vc não ouve mais falar de alguma linguagem não significa que ela evaporou, morreu ou que não é mais utilizada. Você não ouve mais falar de COBOL e Natural, entretanto os sistemas bancários utilizam isso em larga escala (somente a camada de "maquiagem" do sistema é JEE, mas as consultas ao BD etc são feitas em COBOL). O mesmo vale para Django/Rails, tenho vários colegas que trabalham com software livre e utilizam isso em sw educativos e projetos para a comunidade.

*Concordo que o texto não é completo, assim como qualquer trabalho da área, porém temos pontos de vista diferentes e com certeza aquilo que você considera relevante não o será para outras pessoas. A mesma regra se aplica para as coisas que eu penso serem relevantes (talvez elas não sejam para outras pessoas).

Att
08/09/2010 10:44pm (~14 anos atrás)

André disse:
Comentando a citação: "Django foi apenas uma promessa..."

Informação é tudo. Atualize-se antes de emitir esse tipo de comentário. Django hoje é utilizado em larga escala pela Globo.com e começa a ser utilizado pelo IG. Citando apenas algumas empresas com marca forte no Brasil. Google App Engine foi baseado no Django.
06/09/2010 10:34am (~14 anos atrás)

Filipe Mtro disse:
Marcos, realmente também acho, mas eu já vi muitas vagas exigindo conhecimento no Ruby on Rails, mas realmente, estão meio absoletos!
15/06/2010 5:01am (~14 anos atrás)

Marcos Regis disse:
O artigo é bom e parece ter sido escrito como trabalho de faculdade de uns 6 anos atrás, porém algumas considerações precisam ser levadas.
Não se usa mais o termo J2EE e sim JEE. Se quer se informar sobre as ultimas novidades do assunto não use o termo J2EE em suas gugadas.
Django foi apenas uma promessa, assim como o Ruby on Rails. Nunca deslancharam. Você que está lendo já ouviu falar em algum sistema grande feito em Rails ou Django? Quantas vagas de trabalho você já viu para estas tecnologias?
.Net no texto está muito menosprezado. A plataforma .Net está em pé de igualdade não só com JEE mas com toda a gama de padrões de desenvolvimento Java como JME e EJB e corre para se tornar a plataforma mais utilizada para desenvolvimento tanto WEB quanto desktop.

Uma coisa que não se deve fazer é comparar PHP com .NET e Java sem levar em conta o contexto a qual ele está sendo aplicado. Isso porque existem diferenças muito grandes em termos de capacidade da arquitetura. .NET e JAVA podem fazer tudo o que PHP faz (ainda que com menor desempenho) mas PHP não pode fazer tudo o que este fazem.
03/06/2010 12:34am (~14 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)