Java e suas diferenças.

Java_JDK_JRE
Existe vários conceitos sobre o java, forma de utilização e suas aplicações.
Mas o grande ponto de dúvida é?! Quando devemos utilizar o JavaSE e o JavaEE, quais as diferenças e seus conceitos dentro da programação?!  Como utilizo ou aplico JDK, JRE, JVM, API’s e outra agregados do Java?!

JavaSE; Standard Edition tem como seu fundamento básico, criar aplicações para computadores pessoas e ambiente de trabalho. Podendo criar aplicações mais leves para trabalhos do dia-a-dia, exemplo um sistema de cadastros de cliente, ou até mesmo um controle de pedido.  Sua biblioteca de plugin não são tão grandes, mas o bastante para criar enumeras forma de aplicação.

JavaEE; Enterprise Edition  tem como seu fundamento criar aplicações de maior porte devido sua ampla biblioteca de pacotes de extensões.  Dando suporte a todas as bibliotecas do javaME , javaSE e o suporte para JSP (JavaServer Pages), XML (eXtensible Markup Language) e servlets. Assim sendo o javaEE mais robusto para desenvolvimento de aplicações com maior fluxo de integração ou até mesmo de funções.

O conceito de JavaME é pouco abordado, pois ele é aplicado para criação de aplicação para dispositivos móveis, televisores e dentre outros aparelhos com pouca capacidade de processamentos, ou aparelhos mais antigos. Hoje já temos celulares, Smartphone, SmartTV’s  com um poder de processamento maior podendo assim usar um sistema Android ou outro tipo de sistema voltados para a sua demanda de aplicabilidade.

JDK; Java Development Kit, um conjunto de ferramentas, bibliotecas (API’s) necessárias no momento da criação da sua aplicação, sendo ela um jogo ou um programa executado dentro da JVM.

Mais detalhes sobre JDK clique no link: http://www.oracle.com/technetwork/java/javase/jdk-relnotes-index-2162236.html?ssSourceSiteId=otnpt

JRE; Java Runtime Environment, composto por sua Classes java, JVM e API’s. Ele é responsável por executar a aplicação criada em Java.

JVM;  Java Virtual Machine,  responsável pela execução do código java copilado em bytecode, ou em outra forma de entendimento, ele que realiza a conversa entre o aplicativo e o sistema operacional.
Na imagem abaixo é um exemple claro de como o JVM trabalha.

JavaVirtualMachine2