30 de março de 2010

Java vs .NET

 Meio velinho esse texto mas vale apena ler!

Escrito por Paulo Krieser:

Prosseguindo com a sequência de colunas sobre as comparações entre linguagens de programação, neste artigo vamos comparar o Java ao .NET.

Antes que sigam as críticas, cabe esclarecer que o .NET não é uma linguagem, e sim uma plataforma da Microsoft que permite a utilização de diversas linguagens, como C#, Visual Basic, J# e ASP. Vamos focar então a comparação na construção de aplicações web, utilizando J2EE e o framework ASP NET da Microsoft, que é onde as duas linguagens mais competem.

Comecemos pela questão das licenças de uso, que influenciam diretamente no TCO (para referência aos fatores sendo comparados, consultar na minha coluna Fatores para Escolha da Linguagem de Programação). Apesar da Sun deter a marca Java, a mesma tornou a linguagem open source, permitindo aos usuários efetuar alterações convenientes. Para a plataforma .NET, existem algumas iniciativas free, como os projetos Mono e DotGNU. Porém, para se aproveitar todo o potencial da plataforma, é praticamente necessário se adquirir o servidor Microsoft juntamente com o ambiente de desenvolvimento Visual Studio. Sem estas ferramentas, além de não se aproveitar tudo o que se tem, a velocidade de desenvolvimento fica fortemente prejudicada. Além disto, nada na Microsoft é open source.

No item escalabilidade, as implementações das duas plataformas provêem mecanismos de balanceamento de carga, permitindo habilitar um cluster de máquinas para servir às cargas dos usuários que forem aumentando ao longo do tempo. A grande diferença entre o J2EE e o .NET é que desde que o .NET suporta apenas Win32, um número maior de máquinas se faz necessário, comparando ao J2EE, devido às limitações dos processadores.

Em um fator de extrema importância, como velocidade de desenvolvimento, o .NET leva grande vantagem. A sua IDE proprietária, o Visual Studio, é baseado em RAD (Rapid Application Development), aumentando a agilidade na construção de aplicações. O Visual Studio .NET inclui várias ferramentas interessantes em termos de produtividade, como por exemplo o Web Forms. Estima-se que um projeto criado do zero, leve-se de 10% a 20% menos tempo para entrar em produção quando desenvolvido em .NET.

O Microsoft .NET oferece independência de linguagem, permitindo os componentes serem escritos em VB.NET, C# e J#, por exemplo. Para fazer isto funcionar, o código-fonte nestas diferentes linguagens é traduzido para um código intermediário (análogo aos bytecodes do Java) chamado Microsoft Intermediate Language, abreviado IL. O Common Language Runtime (CLR), análogo ao JRE (Java Runtime Enviroment) do Java, interpreta o IL e traduz em código de máquina.

Com um conjunto de linguagens rodando sobre a plataforma .NET, os desenvolvedores diminuem a habilidade de compartilhar as melhores práticas, diminuindo a assertividade do compartilhamento de informações. Assim, especula-se que um conjunto de linguagens rodando em CLR pode levar a uma combinação de código espaguete que fica difícil de manter. Com a liberdade para se utilizar diversas linguagens, a aplicação torna-se mais complexa, necessitando de experts em diferentes linguagens, o que também faz aumentar o TCO e a entropia do sistema.

As duas tecnologias apresentam uma curva de aprendizado parecida, com a diferença de que o Java possui mais material para aprendizado na internet do que o .NET, que é proprietário e a principal fonte de conteúdo é o MSDN.

Analisando o último quesito, portabilidade, praticamente não há o que comparar. Como já dito na coluna anterior, o Java segue o princípio write once, run anywhere, permitindo executar as aplicações na virtual machine em praticamente qualquer ambiente. O .NET roda apenas no Windows, no seu hardware suportado, e no ambiente .NET. Há algumas implementações adicionais do .NET que rodam em outras plataformas, porém que não permitem o uso de todo o potencial do framework.

Concluindo a análise, a plataforma J2EE, possuindo uma interoperabilidade melhor, permite mais facilmente integrações com o legado através de web services e JCA (Java Connector Architecture) e uma maior facilidade de portabilidade, podendo rodar em qualquer sistema operacional. A grande vantagem do .NET é a sua incrível ferramenta de desenvolvimento, que incrementa bastante a velocidade na construção de aplicações. Porém, esta vantagem apresenta o custo das licenças de uso e de se ter uma plataforma proprietária e fechada, seguindo a iniciativa monopolística da Microsoft.

Para a escolha de qual tecnologia utilizar, deve-se analisar o que já se tem de legado e os skills da equipe que irá trabalhar no projeto, aproveitando os conhecimentos já existentes nas linguagens.

Não perca a próxima coluna, onde vamos comparar Ruby on Rails com PHP (vamos deixar o Java um pouco de lado).

Fonte : JavaFree.org

Tricampeão de concurso de hackers "detona" Apple e Microsoft


Tricampeão de concurso de hackers "detona" Apple e Microsoft

Segundo Charlie Miller, único a vencer três vezes o desafio Pwn2Own, as empresas não fazem coisas básicas na área da segurança.

Ele é capaz de, em alguns segundos, invadir computadores explorando as mais diversas plataformas. E não entende como empresas como Apple, Microsoft e Adobe, com muito mais dinheiro e equipe, não conseguem achar tantos bugs e fazer melhores produtos na área da segurança.

Único hacker a vencer três vezes a competição Pwn2Own, Charlie Miller descobriu, recentemente, 20 falhas no Mac OS, Office e Adobe Reader, com o uso de uma ferramenta simples (utilizada por desenvolvedores para testar bugs), que procura vulnerabilidades nos sistemas.

E afirma estar cansado da defasagem na área de proteção de sistemas.  “Nós encontramos um bug, eles corrigem. Isso não melhora a segurança do produto. Eles precisam investir direito na melhoria de seus programas”, afirma.
Algumas dessas brechas ele usou para invadir um MacBook com o Snow Leopard e navegador Safari e faturar 10 mil dólares na edição 2010 da competição de hackers.
Ele afirma que seu processo de busca de vulnerabilidades não tem nada de inovador. “Não precisa ser muito esperto. Faço  o trabalho básico e continuo achando problemas de segurança”, afirma.

Durante a conferência CanSecWest (na qual acontece o concurso de hackers), no Canadá, ele fez uma apresentação demonstrando como encontrar vulnerabilidades. E convidou Apple, Microsoft e outras empresas a ouvirem e usarem o que ele tinha a dizer.

Miller tomou a decisão de não compartilhar as informações sobre as vulnerabilidades que descobriu. Ele afirma que faz mais sentido ensinar as empresas a acharem essas brechas do que continuar a dar a eles o serviço pronto.

Fonte : MacWorldBrasil