A cosa servono queste diverse versioni di Java?


63

Sto per iniziare il mio viaggio in Java , (mi sono già dilettato in C ++) ma mi sto davvero confondendo su tutte le diverse versioni di Java:

  • JavaSE
  • JavaEE
  • JavaFX
  • eccetera.

Qualcuno può spiegarli in dettaglio?

Risposte:


107

Java Proprio

Java Standard Edition è la versione "normale" progettata per l'elaborazione generale. Come tutte le altre varianti di Java, è un linguaggio fortemente, tipicamente statico, compilato per codice, orientato agli oggetti, eseguito su una macchina virtuale con garbage collection completamente automatica. Ha la maggior parte delle caratteristiche della lingua. Esempi di applicazioni potrebbero essere applicazioni come Minecraft o ArgoUML. Può essere eseguito come applicazione desktop autonoma o come applicazione incorporata in una pagina Web come Applet.

Java Enterprise Edition non è un linguaggio diverso ma sono specifiche di interfaccia progettate per produrre software che viene eseguito all'interno di un'implementazione di Application Server. La differenza principale qui è che è progettato per la distribuzione in Application Server conformi alle specifiche dell'interfaccia Enterprise Edition; Java SE può essere utilizzato per scrivere server stand-alone, ma non include interfacce standardizzate e specifiche progettate appositamente per Java EE. Esempi potrebbero essere le applicazioni progettate per essere eseguite su Glassfish (implementazione di riferimento Java EE), JBoss, ecc.

Java Micro Edition è Java progettato per funzionare su dispositivi mobili. Va notato che questa non è la stessa cosa di Android. Java ME è progettato per gestire l'hardware mobile meglio di Java SE. Uso un Pantec Ease come telefono cellulare, funziona con Java ME.

La Java Card è persino "più piccola" e si rivolge a dispositivi di fascia bassa come le Smart ATM card. Sì, alcuni hanno Java su di essi.

JavaFX è un framework progettato per creare applicazioni GUI Rich Internet Client.

Famiglia di lingue JVM

Innanzitutto, la JVM . Questa è una macchina virtuale basata su stack che esegue bytcode compilato che assomiglia molto al linguaggio assembly. L'ottimizzazione può farla funzionare abbastanza velocemente per situazioni molto specializzate.

Questo è tutto per l'effettivo Oracle Java Stuff, ora per le cose che le persone comunemente usano su JVM. Tutte queste lingue presentano interoperabilità Java e in genere possono chiamare la maggior parte o tutte le librerie Java.

Groovy è un linguaggio orientato agli oggetti, tipizzato in modo dinamico con una sintassi più concisa che viene definita come un'alternativa più semplice e potente a Java. È stato progettato come una specie di linguaggio di estensione su Java, consentendo quasi il trascinamento dei file Java nei programmi Groovy. Ha un framework comunemente associato ad esso per lo sviluppo web noto come Grails .

Scala è un linguaggio ibrido orientato agli oggetti / funzionale abbastanza recente (2003) progettato per essere altamente scalabile, da cui il nome. Twitter è un grande utente di Scala.

Clojure è un linguaggio funzionale recente (2007) della famiglia Lisp. È progettato per la programmazione simultanea pesante sin dall'inizio. Non ho un buon esempio di software per questo, ma ci sono un certo numero di aziende che lo usano.

Jython e JRuby sono rispettivamente le versioni bytecode Java di Python e Ruby .

Esistono diverse altre lingue per la JVM come Jaskell (Haskell per la JVM) ma tendono ad essere oscuri / esperimenti accademici.

Cose correlate

Android utilizza Java ma funziona sulla macchina basata su registro Dalvik. Dalvik è attualmente oggetto di una causa contro Google, il suo adozione. Android è essenzialmente Java SE con un diverso set di librerie.

Netbeans ed Eclipse sono i due IDE Java per lo più ampiamente discussi. Fare domande l'una contro l'altra invocherà la chiusura e non intendo il concetto di programmazione.

Roba non correlata

Javascript non è Java ... affatto. È stato chiamato così per sfruttare la popolarità di Java e la confusione è stata fastidiosa da allora.

Il rinoceronte nella stanza

Rhino è un interprete Javascript che trasforma il codice Javascript in codice Java che può quindi essere eseguito da qualche parte. Non è un linguaggio separato "di per sé" ma come ogni altra cosa ha il suo set di stranezze. Rhino è sviluppato da Mozilla come alternativa al loro interprete SpiderMonkey basato su C. Rhino viene in genere utilizzato per incorporare Javascript all'interno di un programma Java.

Nashorn , sviluppato da Oracle (possibilmente con livelli di efficienza tedeschi) per JDK 8, sembra essere il nuovo standard per Javascript incorporato in Java. Ciò significherebbe che Rhino non è più utilizzato per l'implementazione principale di Java. Che cosa questo significhi per il progetto Rhino non è chiaro in questo momento.


1
Molte grazie! Questo è quello che stavo cercando :) Un'altra domanda: J2SE, J2EE ecc. Queste sono solo versioni più recenti di SE, EE, ecc.?
Patryk,

8
Sì, J2EE e J2SE sono le versioni due della Java Enterprise Edition rispettivamente l'edizione standard. Questo schema di denominazione non è più seguito però. Le versioni attuali sono denominate Java SE 6 (o 5/7) e Java EE 5 (o 6).
BenR,

1
C'è un Java per smart card? La mente vacilla.
Megan Walker,

1
Una risposta per dominarli tutti!
utente

1
Da JDK8, Rhino è obsoleto (rimosso?). Nashorn è il nuovo Rhino.
Silviu Burcea,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.