Java Platform

Para dizer o óbvio, a Plataforma Java é a principal vantagem compartilhada por todas as linguagens disponíveis para a Máquina Virtual Java, como Erlang/Erjang, Groovy, Python/Jython, Ruby/JRuby, Scala e outras.

Mas o que é a Plataforma Java (Java Platform)?

A Plataforma Java é uma plataforma de software que funciona sobre diferentes tipos de plataformas de hardware e que constitui o ambiente necessário à execução de programas originalmente escritos na linguagem Java. Tal plataforma é composta por:

  • Máquina Virtual Java (Java Virtual Machine ou JVM) – Máquina virtual capaz de executar Java bytecodes.

    Quando um arquivo .java contendo código-fonte Java é compilado via javac (Java Compiler), um ou mais arquivos .class são produzidos. Esses arquivos .class não contém instruções nativas à plataforma de hardware, mas sim instruções de máquina para a Java VM. Tais instruções são os Java bytecodes.
    Essa independência no tipo de instruções geradas aliada à disponibilidade de Java VMs para as mais diversas plataformas de hardware (hardware + sistema operacional) são os responsáveis pela portabilidade das aplicações Java, característica ressaltada pelo slogan “Write once, run anywhere” (WORA ou “Escreva uma vez, execute em qualquer lugar”).

  • Java Application Programming Interface (API) – Coleção de classes, organizadas em pacotes, que constituem bibliotecas padrões prontas para uso.

As imagens a seguir ilustram bem o explicado até aqui:

Compilando arquivos Java 1
(fonte: Java Tutorial)

Compilando arquivos Java 2
(fonte: Java Tutorial)

É interessante notar que as JVMs evoluíram muito desde sua concepção. Algumas JVM, como a Java Hotspot Virtual Machine, por exemplo, dispõe de um JIT (Just-in-time) compiler capaz de realizar otimização adaptativa: Em tempo de execução, o JIT compiler detecta os pontos críticos do programa (hot spots ou pedaços do código que executam com maior frequência) e traduz os bytecodes para código nativo, melhorando o desempenho total da aplicação e reduzindo a utilização de memória.

JRE x JDK

  • JRE – Java Runtime Environment
    Ambiente mínimo necessário à execução de aplicações Java. Basicamente composto pela JVM, bibliotecas padrão (JSE API), Java Plug-in (para a execução de Java em browsers) e Java Web Start.
  • JDK – Java Development Kit
    Conjunto mínimo de programas e ferramentas necessárias à construção de aplicações Java. Basicamente composto por compilador, depurador (debugger), processador de anotações (apt – annotation processor tool), arquivador/empacotador (jar) e JRE.

JSE x JEE x JME

  • JSE – Java Platform, Standard Edition – Plataforma Java padrão para o desenvolvimento e execução de aplicações em desktops e servidores.
  • JEE – Java Platform, Enterprise Edition – Plataforma Java server-side, para o desenvolvimento e execução de aplicações “enterprise” (ou “para a empresa”, em uma tradução livre). Aplicações “enterprise” contém a lógica de negócio da empresa e precisam ser amplamente acessíveis, seguras, escaláveis, transacionais, portáveis, tolerantes à falha e integrar-se a outras aplicações “enterprise” e a sistemas legado. A plataforma JEE tem como objetivo facilitar a construção de aplicações deste tipo. Para tanto segue um modelo de aplicações distribuídas e multi-camada (multitiered), nas quais componentes modulares são implantados, de acordo com a camada à qual pertencem, em Servidores de Aplicação (Application Servers) existentes em diferentes máquinas.

    A figura a seguir ilustra as várias camadas de uma aplicação muti-camada, bem como alguns dos componentes em cada uma delas:

    Multi-camada
    (fonte: JEE Tutorial)

  • JME – Java Platform, Micro Edition – Plataforma Java para aplicações executando em telefones celulares e outros dispositivos embutidos (embedded devices), como PDAs (Personal Digital Assistants) e impressoras.

Referências adicionais

Deixe uma resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *

*


1 + = três

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>