Home  ·  Search
JavaMan
 
 Uma Palavrinha Sobre as Versões do Java


JavaMan
SouJava
java.sun.com



Links


Java
-
Produtos
-
JUGs no Brasil
-
Projetos
-
Artigos

Sobre o JavaMan
-
Curriculo
-
JavaBaby
-
o Site
                   

 
Quem está começando acaba se confundindo com as diferentes versões da tecnologia Java disponívies, e mesmo quem já tem algum tempo de estrada as vezes se confunde. Portanto, aqui você vai sanar um pouco dessas perguntas...

A questão do Números

Em geral as versões dos diversos produtos Java seguem o padrão: versão 1.2.3a-000, onde:
  • 1 - indica a versão base. Até hoje nunca ocorreu mudança na versão base (estamos ainda no Java 1.x), e não é totalmente claro o que significaria uma mudança nessa versão base. Presumivelmente, isso indicaria uma mudança radical, provavelmente a nível de definição da própria máquina virtual.
  • 2 - indica mudanças de biblioteca. Você tem mais objetos e/ou métodos diponíveis, pode ocorrer de existirem métodos "deprecated" (métodos não mais recomendados). Uma aplicação desenvolvida com as funcionalidades de uma versão mais recente não é garantida de rodar em uma versão anterior (mas o inverso sim).
  • 3 - indica bug-fixes, ou seja, não ocorre mudança de bibliotecas. A partir do Java 2 a itenção é ter uma versão de bug-fixes a cada trimestre. Uma aplicação que indica uma versão de bug-fixes específica em geral não vai funcionar em versões anteriores, mas não terá nenhum problema para rodar em versões mais novas.
  • a - em alguns poucos casos surgiram versões com uma letra no final. Isso indica uma versão que foi lançada para corrigir um bug de segurança (versões que corrigem bug de segurança são lançadas imediatamente após o bug ter sido encontrado e corrigido, mesmo que a versão anterior tenha sida lançada apenas alguns dias antes), e a única melhoria é a correção desse bug de segurança, e eventualmente algum outro bug que tenha ido "de lambuja". Essas versões, ao contrário das versões bug-fixes, não são planejadas e não constam do cronograma oficial.
  • 000 - a partir da versão do Java 2 (ver abaixo), a letrinha no final foi substituida por tres números, mas no fundo, significam a mesma coisa que o "a" acima.
Algumas vezes a versão é indicada através de algo como: 1.2.x. O "x" nesse caso indica "tanto faz", ou seja, que o importante é a versão base (nesse caso, 1.2) e que tanto faz qual a versão de bug fixes que estamos falando.

No geral, quando você precisar de uma versão de algum produto Java, você vai conseguir baixar no site java.sun.com a última versão de bug-fixes. Lembre-se sempre que para uma aplicação Java qualquer, o que é importante é a versão base (por exemplo, 1.2), e a não ser em casos muito específicos, você não terá nenhum problema em rodar uma aplicação que exige uma versão de bug-fixes anterior em uma versão mais nova.

As versões do Java Development Kit

O Java Development Kit (JDK) é o conjunto básico de ferramenta para o desenvolvedor Java. Fazem parte do JDK ferramentas importantes como o javac (compilador), java (a máquina virtual), javadoc (gerador automático de documentação), jdb (Java debugger), javap (decompilador) e diversas outras ferramentas importantes.

Em geral, toda a funcionalidade do JDK já faz parte das ferramentas de desenvolvimento disponíveis no mercado (ferramentas como NetBeans, JBuilder,  Visual Age for Java, etc), mas o conhecimento do JDK e de suas ferramentas é importante para qualquer desenvolvedor Java. As ferramentas deverão indicar que versão do JDK elas suportam, portanto, fique atento para isso.

Desde o lançamento do primeiro JDK, em 1995, várias versões já surgiram. Aqui, eu listo as principais, e algumas das que precisam ser levadas em consideração:

  • JDK 1.0.2 - essa foi a versão mais difundida, e a última, entre as versões 1.0, e é a versão que está embutida nos browsers mais antigos. Hoje em dia só é usada quando se procura compatibilidade com esses browsers antigos.
  • JDK 1.1 - essa versão incorporou uma grande quantidade de funcionalidades, entre elas algumas das mais importantes são: Java RMI, JavaBeans, novo modelo de eventos, JDBC. Algumas dessas funcionalidades já estavam disponíveis antes como adendos ao JDK 1.0 (JDBC, Java RMI), enquanto outras causaram uma mudança mais profunda (modelo de eventos).
    • JDK 1.1.6 - essa é uma versão importante porque incorporou ao JDK uma série de melhorias de performance (com a inclusão de um JIT), e estabilidade. A maioria dos pacotes comerciais que são baseados em Java 1.1 exigem pelo menos a versão 1.1.6 ou acima.
    • JDK 1.1.8b - essa é a versão mais recente do JDK 1.1, e a menos do surgimento de algum bug de segurança, essa deve ser a última versão do JDK 1.1.
  • JDK 1.2 - essa era pra ser a próxima versão do JDK, que vinha sendo anunciada a algum tempo. Várias melhorias e a incorporação de uma grande quantidade de funcionalidades. Quando foi finalmente lançada, foi renomeada para Java 2 Standard Editon Software Development Kit v1.2
  • Java 2 - nesse momento foi considerado que a plataforma Java tinha atingido uma maturidade e uma evolução suficiente para ser realizada uma troca de nome. O que aconteceu na verdade é que foi dado um nome para as versões da Tecnologia Java. Antes, as versões da tecnologia eram confundidas com as versões de um produto (o JDK), já que não havia outra forma de identificá-las.  Portanto não só foi anunciado que aquele que seria o JDK 1.2 seria renomeado para SDK 1.2, mas tembém foi anunciada a divisão da plataforma em 3 plataformas básicas, de forma a permitir a inclusão de tecnologias pertinentes:
    • Java 2 Micro Edition (J2ME) - a plataforma Java voltada para pequenos devices (telefones celulares, agendas eletrônicas, televisores, aparelhos eletrônicos em geral)
    • Java 2 Standard Edition (J2SE) - a plataforma voltada para aplicações cliente (equivalente ao antigo JDK). Essa é a plataforma que será encontrada nos browsers web e instalada nos sistemas operacionais que já incluírem a plataforma Java
    • Java 2 Enterprise Edition (J2EE) - essa é a plataforma Java para desenvolvimento e execussão de aplicações servidoras. Possui todo o suporte para desenvolver aplicações robustas e escaláveis, para suportar grandes números de usuários. Os servidores de aplicação implementam essa plataforma
  • Java 2 Standard Editon Software Development Kit v1.2 (J2SE SDK 1.2) - esse é o antigo JDK, que foi renomeado como SDK no Java 2. Inclui várias melhorias em relacao à versão 1.1, uma das principais é a inclusão das funcionalidades da JFC (Java Fundation Classes, a biblioteca que contém os componentes do Swing), além de inclusão do suporte a CORBA, melhorias no Java RMI, testes de compatibilidade muito superiores, estabilidade, performance, e muitas outras coisas. Esse é o ambiente básico para o desenvolvimento de aplicações Java atualmente.
  • Java 2 Standard Edition SDK v1.3 - essa é a versão que está quase pra sair (nesse momento - fevereiro/2000 - está disponível o Release Candidate 1), e deve estar disponível já nos próximos meses. Entre as grandes estrelas desse lançamento esta a incorporação do HotSpot Performance Engine, além da incorporação da nova versão da JFC. Observe que continuamos nos referindo a essa versão como Java 2 (só que v1.3).

O Java Runtime Environment

Enquanto o JDK é o ambiente voltado para os desenvolvedores, o Java Runtime Environment (JRE) é basicamente composto da Máquina Virtual Java (JVM) e o conjunto de bibliotecas, ou seja, tudo o que você precisa para executar aplicações Java.

Entre os atrativos do JRE esta o Java Plugin. Desde a versão 1.2 (Java 2) que o JRE já traz embutido o Java Plugin, a JVM que substitui a JVM dos browsers web e permite com que mesmo versões mais antigas de browsers suportem aplicações Java 2. Ao instalar o JRE, você ja estara instalando o Java Plugin, automaticamente.

Como a JVM é necessária para executar aplicações Java, o JRE pode ser distribuido a vontade, podendo inclusive ser embutido na sua aplicação Java (o JDK e o SDK não podem ser distribuidos junto da sua aplicação).

As versões do JRE seguem exatamente as mesmas versões do JDK, e portanto ao desenvolver uma aplicação com uma versão do JDK você deverá utilizar preferencialmente a mesma versão do JRE para executá-la.

JDKs e JREs de outros fornecedores

Tudo o que foi dito acima vale para os produtos fornecidos pela Sun Microsystems. Ou seja, aqueles que você baixar do site java.sun.com, e que são fornecidos para as plataformas Solaris, Windows (95/98/NT/2000) e mais recentemente, para Linux. Se você precisa de uma JVM ou do JDK ou do JRE para outras plataformas, você vai ter que recorrer aos fornecedores de cada sistema que você esteja utilizando. Só que nesse caso, as nomenclaturas e versões citadas acima só valem como referência.

Cada fornecedor tem o seu próprio esquema de versões, que pode variar, e muito, do esquema de versões da Sun. Vários deles seguem mais ou menos o mesmo padrão, e alguns inclusive chamam com os mesmos nomes e versões, mas não todos. Em geral, o nome do produto não será nem JDK nem JRE, mas algo diferente, além do número da versão também ser diferente. Mas todos os produtos vão identificar a que versão do JDK (ou do JRE) são compatíveis, ou vão dizer algo do tipo: implemetam Java vX.Y.Z.

Outra diferença é que nem todos os fornecedores vão fornecer o JDK e o JRE e o Java Plugin com os mesmos empacotamentos e funcionalidades da Sun. Isso é parte da competição. Todos vão implementar a mesma especificação da Tecnologia Java e da JVM, e portanto vão garantir a compatibilidade, mas os detalhes de implementação vão variar de produto para produto, conforme o fornecedor ache que está agregando algum valor.

Só como exemplo, a Apple fornece o MacOS Runtime for Java - MRJ 2.2, que é uma implementação do JDK 1.1.8 e o equivalente ao JRE da Apple (ou seja, um que possa ser redistribuido) é chamado de MRJ 2.1.4. Como eu disse, cada caso é um caso.

Para você encontrar a JVM para o seu sistema, dê uma olhada na página sobre os portes da JVM, mantida pela Sun Microsystems.

Conclusão

Java é uma tecnologia que vem evoluindo com muita velocidade, e nem sempre é fácil acompanhar as mudanças. Isso muitas vezes acaba se refletindo em uma grande quantidade de produtos e uma maior ainda variedade de versões. Esse artigo procurou identificar as principais versões da tecnologia Java, como forma de ajudar a esclarecer ao menos a questão das versões.
Home  ·  Search

[ Envie seus comentarios para o JavaMan ]