Java: Entendendo as Principais Siglas
- #Java
Ao estudar a linguagem java, nos deparamos a todo momento com diversas siglas. Eu sempre fiz bastante confusão e tive certe dificuldades de entender as diferenças. Por isso resolvi fazer um resumo explicando um pouquinho sobre as principais delas.
O que é
Java é uma linguagem de programação; um conjunto de regras e padrões, com sintaxe própria, usado para desenvolvimento de códigos fonte, ou seja, códigos que ao serem interpretados e executados pela máquina, se tornarão uma aplicação.
Foi desenvolvida na Sun Microsynstens, por James Gosling, e teve seu grande crescimento quando, em meio à popularização da World Wide Web (que é, basicamente, o uso da internet por meio de páginas/sites), passou a disponibilizar applets, aplicações que podiam ser executadas nos browsers (programas utilizados para acessar as páginas web - como os atuais Google Chrome e Mozzila Firefox).
Plataforma Java
Além de uma linguagem, Java é também uma plataforma de desenvolvimento. Uma plataforma Java consiste na combinação de elementos que trabalham juntos para que a linguagem do código fonte se transforme numa aplicação.
Estrutura da plataforma Java:
- API Java (Java Application Programming Interface): É um conjunto de bibliotecas nativas. Uma biblioteca pode ser entendida aqui como um conjunto de funções ou comportamentos pré definidos. Na programação, alguns processos se repetem nos mais diferentes tipos de aplicação. Para um melhor desempelho, o java já possui diversos deles definidos, de forma que o programador não precisa desenvolvê-los do zero, mas apenas incorporar os já existes ao seu projeto.
- JVM (Java Virtual Machine): A máquina virtual java, é o elemento responsável por ler e executar o projeto compilado. É ela quem irá dar vida ao que foi programado. A JVM é especifica para cada sistema operacional.
Um dos principais diferenciais do Java é o conceito WORA (Write Once Run Anywhere), “Escreva uma vez e execute em qualquer lugar”, que significa que um mesmo código pode ser executado em qualquer sistema operacional. Isso é possível graças à JVM (Java Virtual Machine), a Máquina Virtual Java, da seguinte maneira:
1. O desenvolvedor escreve o código fonte.
2. O código fonte é compilado pelo javac compiler.
❓ Compilar o código consiste basicamente em “traduzir” o que o desenvolvedor escreveu para um formato que a JVM entenda. O javac compiler utiliza o arquivo .java, que é a extensão do código fonte, para gerar um arquivo .class, que é o formato que a JVM interpreta. Esse arquivo .class é conhecido como bytecode.
3. A JVM executa o arquivo compilado (.class), dando vida à aplicação.
❓ A JVM é específica para cada sistema operacional, no entanto, o bytecode tem sempre o mesmo formato. É assim que o java garante o conceito WORA, pois após a compilação do código fonte, o bytecode pode ser executado em qualquer plataforma.
About the Java Technology: https://docs.oracle.com/javase/tutorial/getStarted/intro/definition.html
JRE e JDK
Agora que já entendemos o fluxo de compilação e execução de um programa java, vamos explicar o que são essas duas outras componentes que vemos a todo momento por ai:
- JRE (Java Runtime Environment)
- JDK (Java Development Kit)
A JRE é o conjunto das ferramentas responsáveis pela execução de um código java. É tudo o que uma maquina precisa para poder executar um programa desenvolvido em Java. Esse conjunto é composto pela JVM, bibliotecas de classes e, ainda, outros arquivos necessários para a execução do programa.
Por sua vez, o JDK, é o conjunto de ferramentas que possibilitam a criação de aplicações java. Além das ferramentas contidas na JRE, o JDK traz ferramentas adicionais que permitem a criação, desenvolvimento, compilação e execução de aplicativos em Java.
Resumidamente, a JRE é o conjunto necessário para uma máquina conseguir executar uma aplicação desenvolvida em Java; e o JDK é o conjunto de ferramentas que possibilitam o desenvolvimento de novas aplicações.
Java Plataforms Editions
Existem 4 edições de plataformas para desenvolvimento Java, cada uma com a estrutura já apontada acima, a junção de uma JVM com um conjunto de APIs:
- Java SE (Java Standard Edition):
- Contém os principais recursos e funcionalidades básicas da linguagem. Fornece os componentes essenciais para as aplicações Java: Java Virtual Machine, Java Runtime Environment e Java Development Kit.
- Java EE (Java Enterprise Edition):
- A Java EE foi construída sobre a Java SE, acrescentando a ela recursos mais avançados e novas APIs, permitindo a criação de aplicativos maiores e escaláveis. Os aplicativos EE são, geralmente, hospedados em um servidor, e esta plataforma possui diversos recursos para facilitar o desenvolvimento de aplicações web. É conhecida também por Jakarta EE.
- Java ME (Java Micro Edition):
- É um subconjunto da API Java SE, juntamente com bibliotecas e classes especialmente úteis para dispositivos de pequeno porte, como celulares, decodificadores, sensores, impressoras, etc.
- Java FX:
- É voltada para criação de aplicativos ricos para a Internet (RIA - Rich Internet Application), que são aplicações executadas em ambiente web, mas que têm características similares à aplicações desktop. Utilizam gráficos e mecanismos de mídia acelerados por hardware para aproveitar clientes de alto desempenho e uma aparência moderna, e possui também APIs de alto nível para conexão com fontes de dados em rede.
Referências e Outros Links Úteis
- Difference Between Java SE/EE/ME: https://www.baeldung.com/java-se-ee-me
- [Drops] Java — A diferença entre JRE e JDK: https://www.linkedin.com/pulse/drops-java-diferen%C3%A7a-entre-jre-e-jdk-gabriel-d-emery/?originalSubdomain=pt
- About the Java Technology: https://docs.oracle.com/javase/tutorial/getStarted/intro/definition.html
- The Java Language Environment: Contents: https://www.oracle.com/java/technologies/language-environment.html
- Differences between Java EE and Java SE: https://docs.oracle.com/javaee/6/firstcup/doc/gkhoy.html