Para que são essas diferentes versões do Java?

63

Estou prestes a começar minha jornada Java (eu já me envolvi em C ++), mas estou ficando realmente confuso sobre todas as diferentes versões do Java:

  • JavaSE
  • JavaEE
  • JavaFX
  • etc.

Alguém pode explicar isso em detalhes?

Patryk
fonte

Respostas:

107

Java Proper

Java Standard Edition é a versão "normal" projetada para computação em geral. Ele, como todas as outras variantes do Java, é uma linguagem Orientada a Objetos, fortemente tipada estaticamente e compilada por bytecode, executada em uma máquina virtual com coleta de lixo totalmente automática. Possui a maioria dos recursos do idioma. Exemplos de aplicativos seriam aplicativos como Minecraft ou ArgoUML. Pode ser executado como um aplicativo de desktop independente ou um aplicativo incorporado em uma página da Web como um Applet.

O Java Enterprise Edition não é um idioma diferente, mas são especificações de interface projetadas para produzir software executado em uma implementação do Application Server. A principal diferença aqui é que ele foi desenvolvido para implantação em Application Servers que estão em conformidade com as especificações da Enterprise Edition Interface; O Java SE pode ser usado para escrever servidores autônomos, mas não inclui interfaces e especificações padronizadas criadas especificamente para a maneira como o Java EE é. Exemplos seriam aplicativos projetados para rodar no Glassfish (implementação de referência Java EE), JBoss, etc.

O Java Micro Edition é o Java projetado para ser executado em dispositivos móveis. Note-se que isso não é a mesma coisa que o Android. O Java ME foi projetado para lidar com hardware móvel melhor que o Java SE. Eu uso o Pantec Ease como um telefone celular, ele executa o Java ME.

O Java Card é ainda "menor", como dispositivos realmente low-end, como cartões ATM inteligentes. Sim, alguns deles realmente têm Java neles.

O JavaFX é uma estrutura projetada para criar aplicativos da GUI do Rich Internet Client.

Família de idiomas JVM

Primeiro, a JVM . Esta é uma máquina virtual baseada em pilha executando o bytcode compilado que se parece muito com a linguagem assembly. A otimização pode fazê-lo funcionar muito rápido em situações muito especializadas.

É isso mesmo para o Oracle Java Stuff real, agora para o que as pessoas normalmente usam na JVM. Todas essas linguagens apresentam interops Java e normalmente podem chamar a maioria ou todas as bibliotecas Java.

Groovy é uma linguagem dinamicamente orientada a objetos e com uma sintaxe mais sucinta que é considerada uma alternativa mais fácil e poderosa ao Java. Foi desenvolvido como um tipo de linguagem de extensão para Java, permitindo quase arrastar e soltar arquivos Java nos programas Groovy. Ele tem uma estrutura comumente associada a ele para o desenvolvimento da web conhecido como Grails .

Scala é uma linguagem híbrida / orientada a objetos / funcional bastante recente (2003), projetada para ser altamente escalável, daí o nome. O Twitter é um usuário pesado do Scala.

Clojure é uma linguagem funcional recente (2007) da família Lisp. Ele foi projetado para programação simultânea pesada desde o início. Não tenho um bom exemplo de software para este, mas existem várias empresas que o utilizam.

Jython e JRuby são as versões Java bytecode do Python e Ruby, respectivamente.

Existem várias outras linguagens para a JVM por aí, como Jaskell (Haskell para a JVM), mas elas tendem a ser experiências obscuras / acadêmicas.

Coisas Relacionadas

O Android usa Java, mas é executado na máquina baseada em registro da Dalvik. Atualmente, Dalvik é objeto de um processo contra o Google, seu adotante. O Android é essencialmente Java SE com um conjunto diferente de bibliotecas.

Netbeans e Eclipse são os dois mais comentados sobre IDEs Java. Fazer perguntas sobre um vs o outro irá invocar o fechamento e não quero dizer o conceito de programação.

Coisas não relacionadas

Javascript não é Java ... de jeito nenhum. Foi nomeado para tirar proveito da popularidade do Java e a confusão tem sido irritante desde então.

O rinoceronte no quarto

O Rhino é um intérprete Javascript que transforma o Código Javascript em código Java que pode ser executado em algum lugar. Não é um idioma separado "per se", mas como qualquer outra coisa tem seu próprio conjunto de peculiaridades. O Rhino é desenvolvido pela Mozilla como uma alternativa ao seu interpretador SpiderMonkey baseado em C. O Rhino é normalmente usado para incorporar Javascript em um programa Java.

Nashorn , desenvolvido pela Oracle (possivelmente com níveis de eficiência alemães) para o JDK 8, parece ser o novo padrão para Javascript incorporado em Java. Isso significa que o Rhino não é mais usado para a principal implementação do Java. O que isso significa para o projeto Rhino ainda não está claro.

Engenheiro Mundial
fonte
11
Muito obrigado! Era isso que eu procurava :) Mais uma pergunta: J2SE, J2EE etc. Essas são apenas as versões mais recentes do SE, EE, etc?
Patryk
8
Sim, J2EE e J2SE são duas versões do Java Enterprise Edition, respectivamente, edição padrão. Esse esquema de nomenclatura não é mais seguido. As versões atuais são conhecidas como Java SE 6 (ou 5/7) e Java EE 5 (ou 6).
BenR
11
Existe um Java para cartões inteligentes? A mente confunde.
Megan Walker
11
Uma resposta para governar todos eles!
User
11
Desde o JDK8, o Rhino está obsoleto (removido?). Nashorn é o novo rinoceronte.
Silviu Burcea