Estoy a punto de comenzar mi viaje en Java (ya he incursionado en C ++) pero me estoy confundiendo mucho sobre todas las diferentes versiones de Java:
- JavaSE
- JavaEE
- JavaFX
- etc.
¿Alguien puede explicar esto en detalle?
Java Proper
Java Standard Edition es la versión "normal" diseñada para la informática general. Al igual que todas las demás variantes de Java, es un lenguaje orientado a objetos, compilado por bytecode, fuertemente tipado, ejecutado en una máquina virtual con recolección de basura completamente automática. Tiene la mayoría de las características del lenguaje. Ejemplos de aplicaciones serían aplicaciones como Minecraft o ArgoUML. Se puede ejecutar como una aplicación de escritorio independiente o una aplicación integrada en una página web como un Applet.
Java Enterprise Edition no es un idioma diferente, pero son especificaciones de interfaz diseñadas para producir software que se ejecuta dentro de una implementación de Application Server. La principal diferencia aquí es que está diseñado para implementarse en servidores de aplicaciones que cumplen con las especificaciones de la interfaz Enterprise Edition; Java SE se puede usar para escribir servidores independientes, pero no incluye interfaces estandarizadas y especificaciones diseñadas específicamente para Java EE. Ejemplos serían aplicaciones diseñadas para ejecutarse en Glassfish (implementación de referencia Java EE), JBoss, etc.
Java Micro Edition es Java diseñado para ejecutarse en dispositivos móviles. Cabe señalar que esto no es lo mismo que Android. Java ME está diseñado para tratar con hardware móvil mejor que Java SE. Utilizo un Pantec Ease como teléfono móvil, ejecuta Java ME.
La Java Card es incluso "más pequeña" y está destinada a dispositivos de gama baja como las tarjetas Smart ATM. Sí, algunos de ellos realmente tienen Java en ellos.
JavaFX es un marco diseñado para crear aplicaciones de GUI de cliente de Internet enriquecidas.
Familia de idiomas JVM
Primero, la JVM . Esta es una máquina virtual basada en pila que ejecuta bytcode compilado que se parece mucho al lenguaje ensamblador. La optimización puede hacer que funcione bastante rápido para situaciones muy especializadas.
Eso es todo para las cosas reales de Oracle Java, ahora para las cosas que la gente usa comúnmente en la JVM. Todos estos lenguajes cuentan con interops Java y normalmente pueden llamar a la mayoría o todas las bibliotecas Java.
Groovy es un lenguaje de tipo dinámico orientado a objetos con una sintaxis más sucinta que se presenta como una alternativa más fácil y poderosa a Java. Fue diseñado como una especie de lenguaje de extensión para Java, permitiendo casi arrastrar y soltar archivos Java en programas Groovy. Tiene un marco comúnmente asociado con él para el desarrollo web conocido como Grails .
Scala es un lenguaje híbrido orientado a objetos / funcional bastante reciente (2003) que está diseñado para ser altamente escalable, de ahí su nombre. Twitter es un gran usuario de Scala.
Clojure es un lenguaje funcional reciente (2007) de la familia Lisp. Está diseñado para una gran programación concurrente desde el principio. No tengo un buen ejemplo de software para este, pero hay varias compañías que lo usan.
Jython y JRuby son las versiones de código de bytes Java de Python y Ruby, respectivamente.
Existen varios otros idiomas para la JVM como Jaskell (Haskell para la JVM), pero tienden a ser experimentos oscuros / académicos.
Cosas relacionadas
Android usa Java pero se ejecuta en la máquina de registro Dalvik. Dalvik es actualmente objeto de una demanda contra Google, su adoptante. Android es esencialmente Java SE con un conjunto diferente de bibliotecas.
Netbeans y Eclipse son los dos IDE de Java más ampliamente comentados. Hacer preguntas sobre uno contra el otro invocará el cierre y no me refiero al concepto de programación.
Cosas no relacionadas
Javascript no es Java ... en absoluto. Fue nombrado así para aprovechar la popularidad de Java y la confusión ha sido molesta desde entonces.
El rinoceronte en la habitación
Rhino es un intérprete Javascript que convierte el código Javascript en código Java que luego puede ejecutarse en algún lugar. No es un lenguaje separado "per se", pero como cualquier otra cosa tiene su propio conjunto de peculiaridades. Rhino es desarrollado por Mozilla como una alternativa a su intérprete SpiderMonkey basado en C. Rhino se usa típicamente para incrustar Javascript dentro de un programa Java.
Nashorn , desarrollado por Oracle (posiblemente con niveles de eficiencia alemanes) para el JDK 8, parece ser el nuevo estándar para Javascript incrustado dentro de Java. Esto significaría que Rhino ya no se usa para la implementación principal de Java. Lo que esto significa para el proyecto Rhino no está claro en este momento.