domingo, 26 de julho de 2009

Vantagens e Desvantagens JAVA

Quais são as vantagens de se usar a Linguagem de Programação Java e quais são as suas desvantagens também. Vamos começar citando os contras, logo depois citaremos os prós!

Desvantagens:

A pré-compilação exige tempo, o que faz com que programas Java demorem um tempo significativamente maior para começarem a funcionar. Isso não é um grande problema para programas que rodam em servidores. No entanto isso pode ser bastante indesejável para computadores pessoais.

O padrão Java tem uma especificação rígida de como devem funcionar os tipos numéricos. Essa especificação não condiz com a implementação de pontos flutuantes na maioria dos processadores o que faz com que o Java seja significativamente mais lento para aplicações que utilizem bastante processamento numérico quando comparado a outras linguagens.

Os bytecodes produzidos pelos compiladores Java podem ser usados num processo de engenharia reversa para a recuperação do programa-fonte original. Esta é uma característica que atinge em menor grau todas as linguagens compiladas.

Lembrando que as desvantagens de Java em relação à performance não significam que suas aplicações sejam lentas ao ponto de não serem viáveis para utilização em desktops. Java hoje já possui um desempenho próximo do C++. A grande diferença na performance das aplicações escritas em Java em relação as outras linguagens pré-compiladas se dá no “Start” da aplicação, quando ocorre a geração dos bytecodes.

Entretanto Java não suporta herança múltipla de implementação e nem aritmética de ponteiros, que são aceitos em C++, isso tem um pequeno e importante impacto na produtividade do programador.

Vantagens:

A tecnologia Java é Free, o custo quase totalmente zero, como já foi explicado anteriormente, os editores e ambientes de produção também são gratuitos (NetBeans, Eclipse, Jcreator, entre outros.) e ainda tem a gratuidade dos Servidores de Aplicação (TomCat, Jboss, Jetty e outros.).

A Linguagem é Orientada a Objetos (OO), segue o paradigma OO, o que a torna uma ferramenta extremamente poderosa. E é também Multi-Threaded, o que significa dizer que ela suporta processamento paralelo múltiplo.

Possui portabilidade, onde o mesmo código Java roda em diversas plataformas sem a necessidade de alteração de código e as aplicações podem ser facilmente migradas entre servidores. Tornado desnecessário ficar preso a somente um fabricante.

Java é padronizada e mantida pela JCP (Java Community Process)‏. A JCP é mantida por diversas empresas: Sun, Oracle, IBM, Novell, Xerox.

Pelo fato de Java ser OO, é possível fazer reuso de código já produzido.

E o suporte dado a Tecnologia Java é satisfatório, pois a comunidade Java, hoje, é a mais extensa. Existem inúmeros JUGs (Java User Groups), que promovem eventos, disponibilizam material, artigos, revistas especializadas e fórum de discussoões.

E ainda é possível graças a otimizações como a compilação especulativa, que aproveita o tempo ocioso do processador para pré-compilar bytecode para código nativo. Outros mecanismos ainda mais elaborados como o HotSpot da Sun, que guarda informações disponíveis somente em tempo de execução para otimizar o funcionamento da JVM, isso possibilita que a JVM vá “aprendendo” e melhorando seu desempenho. Isto é uma realidade tão presente que hoje é fácil encontrar programas corporativos e de missão crítica usando tecnologia Java. No Brasil, por exemplo, a maioria dos Bancos utiliza a tecnologia Java para construir seus home banks, que são acessados por milhares de usuários diariamente. Grandes sites como o eBay utilizam Java para garantir alta performance. E a cada ano Java tem se tornado mais rápido, na medida em que se evolui o compilador dinâmico.

Como resultado da diferença entre vantagens e desvantagens, é possível dizer que as vantagens são muito maiores, por tanto, o uso da Tecnologia Java continuará crescendo estromboticamente por todo mundo.

Textos originais retirados de:http://blogetilico.wordpress.com/2007/03/20/java-conceitos-basicos-primeira-parte e www.inpe.br/twiki/bin/viewfile/Competencia/SunInpe?rev=1;filename=Aula-01-Leonardo%5B1%5D.ppt

Nenhum comentário: