Universidade Federal de Santa Catarina
Centro Tecnológico - CTC
Dep. de Informática e Estatística
Projeto GEOPLANO












A  LINGUAGEM  JAVA

O Java foi criado como parte de um grande projeto da Sun Microsystems, Inc., cuja missão era desenvolver aplicativos complexos e avançados para aplicação em pequenos dispositivos eletrônicos. A primeira tentativa da Sun com esse aplicativos deveria ter sido implementada em C++. Mas em conseqüência de compilações horríveis e uma lista cada vez maior de problemas com o C++ - principalmente vazamentos de memória e vários problemas de herança - a Sun enterrou o C++ e implementou uma nova linguagem, o Java. Desde o seu início em 1992, surgiram muitas outras aplicações para o Java. O Java tem a capacidade de criar programas auxiliares, que podem ser usados para montar documentos HTML particularmente interessantes.

O Java é ao mesmo tempo um ambiente e uma linguagem de programação desenvolvida pela Sun Microsystems, Inc. Trata-se de mais um representante da nova geração de linguagens orientadas a objetos e foi projetado para resolver os problemas da área de programação cliente/servidor.

Os aplicativos em Java são compilados em um código de bytes independente de arquitetura. Esse código de bytes pode então ser executado em qualquer plataforma que suporte um interpretador Java. O Java requer somente uma fonte e um binário e, mesmo assim, é capaz de funcionar em diversas plataformas, o que faz dele um sonho de todos os que realizam manutenção em programas.

Hoje em dia, a maior parte do interesse pela linguagem Java está relacionada com sua habilidade em criar páginas na Web. Este é, hoje, o principal uso de Java, mas pode-se fazer implementações mais avançadas, como aplicativos completos de páginas interativas Web.

As primeiras notícias que se ouviu de Java era que ela possibilitava colocar animações em uma página Web. Java fazia isso através de um descritor HTML especial, aceito pelo browser HotJava, que permitia incluir um programa em uma página, da mesma maneira em que se coloca uma imagem. O programa era transferido e rodava na máquina do usuário. A sua aplicação não se limitava a animações. O que se podia fazer com Java dependia apenas da imaginação do programador. Esses programas, que rodavam dentro de páginas Web, foram chamados de Applets. Mais tarde, o Netscape Navigator - browser usado por 86% da população da Web na época - passou a suportar também a utilização das Applets.

O interesse por Java cresceu quando as pessoas começaram a descobrir que Java era mais que uma simples linguagem para se colocar animações em páginas. Na verdade, era uma poderosa linguagem que podia ser usada para desenvolver aplicações, como as que se faz hoje usando C++. Java é muito mais simples, segura e robusta e possui uma qualidade que a diferencia de todas as outras: a independência de plataforma.

A partir daí a evolução não parou. As maiores empresas de software do mundo, inclusive a poderosa Microsoft, licenciaram Java. Várias já tem projetos para desenvolver aplicativos de grande porte, em um futuro próximo, usando Java. Já existe uma interface independente para acesso a bancos de dados suportada pelas maiores empresas do ramo. O suporte à rede e à Web fazem parte da linguagem. A facilidade de ler um arquivo local ou uma URL remota é a mesma. E é uma linguagem que já nasceu poliglota. O seu conjunto de caracteres de 16 bits suporta, desde o início, todos os idiomas conhecidos no mundo.

O Java é orientado a objetos: O Java é um membro do paradigma orientado a objetos (POO) das linguagens de programação, tudo em Java é objeto. As linguagens que aceitam este paradigma, como Java e C++, seguem a mesma filosofia básica, mas diferem em sintaxe e estilo. As linguagens orientadas a objetos oferecem muitas vantagens sobre as linguagens procedurais tradicionais. Como os objetos encapsulam dados e funções relacionados em unidades coesas, é fácil localizar dependências de dados, isolar efeitos de alterações e realizar outras atividades de manutenção, talvez o mais importante, as linguagens POO facilitam a reutilização. Não existem variáveis globais ou funções independentes. Toda variável ou método pertence a uma classe ou objeto e só pode ser invocada através dessa classe ou objeto.

O Java é distribuído: Distribuição de informações para compartilhamento e trabalho conjunto, com a distribuição de carga de trabalho do processamento, é uma característica essencial dos aplicativos cliente/servidor. Em Java, há uma biblioteca de procedimentos TCP/IP incluída nos códigos-fonte e de distribuição binária do Java. Isso facilita aos programadores o acesso remoto às informações, usando protocolos como HTTP e FTP.

O Java é compilado e independente de plataforma: Um programa escrito em Java precisa ser compilado antes de ser executado. O compilador traduz o código-fonte e gera arquivos objeto chamados arquivos de classe. Cada programa Java consiste da implementação de uma única classe. Depois de compilado, pode ser executado em qualquer plataforma onde exista um sistema de tempo de execução Java (runtime). A compilação de um programa em C++ realiza a tradução do código-fonte da linguagem em instruções que são interpretadas pelo microprocessador da máquina onde foi compilado. O programa então só roda em outra máquina que tenha o mesmo tipo de processador. Já um programa em Java, quando compilado, gera instruções (chamadas de byte-codes) para um microprocessador virtual. Existem implementações desse microprocessador virtual para várias plataformas e o programa então rodará em qualquer uma delas. Por ter suas instruções interpretadas por um software (processador virtual), os programas em Java são mais lentos que os escritos em C ou C++. A igualdade é atingida usando microprocessadores virtuais com compiladores Just-In-Time (JIT), que já são bastante comuns. Esse tipo de sistema, converte as instruções em byte-codes para instruções do microprocessador na hora da execução, fazendo com que programas escritos em Java não tenham grandes perdas de desempenho em relação a programas escritos em C ou C++.

O Java é multitarefa: Os objetos binários de códigos de bytes do Java são formados por seqüências de execução múltiplas e simultâneas. Essas seqüências são conhecidas como contextos de execução ou processos leves. As linguagens C e C++ são membros de um paradigma de execução em seqüência única, por não oferecerem suporte a seqüências no nível de linguagem. O Java, no entanto, oferece suporte no nível de linguagem para multitarefa, resultando em uma abordagem de programação mais poderosa e de múltiplas facetas.

O Java é robusto: Quanto mais robusto um aplicativo, mais confiável ele será. Isso é desejável tanto para os desenvolvedores de software quanto aos consumidores. A maioria das linguagens POO, como o C ++ e Java, possuem tipos bastante fortes. Isso significa que a maior parte da verificação de tipos de dados é realizada em tempo de compilação, e não em tempo de execução. Isso evita muitos erros e condições aleatórias nos aplicativos.

O Java é seguro: Como o Java foi criado para ambientes de rede, os recursos de segurança receberam muita atenção. Por exemplo, se você executar um binário transferido por download da rede, o mesmo poderá estar infectado por vírus. Os aplicativos Java apresentam garantia de resistência contra vírus e de que não são infectados por vírus, pois não são capazes de acessar heaps, stacks ou memória do sistema. No Java, a autenticação do usuário é implementada com um método de chave pública de criptografia. Isso impede de maneira eficaz que hackers e crackers examinem informações protegidas como nomes e senhas de contas.

O Java é simples: Um dos principais objetivos do projeto do Java foi criar uma linguagem o mais próxima possível do C ++, para garantir sua rápida aceitação no mundo do desenvolvimento POO. Outro objetivo do seu projeto foi eliminar os recursos obscuros e danosos do C ++, que fugiam à compreensão e aumentavam a confusão que poderia ocorrer durante as fases de desenvolvimento, implementação e manutenção do software.

O Java oferece alto desempenho: O Java proporciona bom desempenho, porque realiza a tradução dos códigos de bytes para o código de máquina nativo em tempo de execução. O alto desempenho permite a implementação de seus aplicativos WEB em Java, na forma de programas pequenos e velozes, que podem ampliar, de maneira significativa, os recursos tanto do cliente quanto do servidor.

Em uma rede heterogênea como a Internet, que é formada por milhões de máquinas diferentes ligadas entre si, as características da linguagem Java a colocam em posição confortável como a linguagem ideal para este ambiente.

Os byte-codes compilados são transferidos através da rede e rodam em qualquer máquina ligada à Internet, seja como uma applet, através de um browser, seja como uma aplicação independente. Se o aplicativo foi escrito em Java, não importa a máquina que está sendo utilizada (Solaris, PC rodando Windows, Servidor NT ou Macintosh.). Ele roda de forma quase igual em qualquer dessas máquinas.

Com linguagens tradicionais, era necessário portar e compilar o código-fonte em cada plataforma diferente, e tratar os bugs que apareciam em cada uma delas individualmente. Depois, precisava ainda ter documentação e suporte para a plataforma específica do usuário, e distribuído em embalagens diferentes para cada versão. Se o programa for escrito em Java, só haverá uma compilação, uma documentação e um produto comercial que poderá ser adquirido por qualquer usuário, independente de sua plataforma de trabalho.