Componentes en Java :JDK,J2EE,J2SE,SDK,JRE,IDE en Java

Además de la amplia terminología individual que existe en Java, existen diversos componentes ("KITS") que agrupan estas funcionalidades, y son estos componentes con los que se trabaja "día a día" en proyectos Java.

JRE ("Java Runtime Environment")

Como su nombre lo indica este ambiente ("KIT") es utilizado solo para ejecutar ("Runtime") programas en Java. Esta situación se da cuando empresas de Software diseñan alguna interfase gráfica o aplicación en Java para su producto. Cabe mencionar que muchos productos que utilizan Java para su interfase gráfica o instalación ya incluyen un JRE para evitarle la molestia de instalarlo, uno de estos es Oracle ; sin embargo, muchos productos requieren que usted posea este ambiente, si se pregunta: Porque me hacen que obtenga forzosamente este JRE ? Una de las principales razones es costo ya que las empresas deben pagar a Sun por distribuir este ambiente en su producto.

Y aunque un poco desviado del tema:

Porque algunas empresas diseñan su interfase o aplicación alrededor de Java ?

Agiliza el proceso de desarrollo substancialmente , suponiendo que usted va a lanzar un producto para diversos sistemas operativos(Windows,Linux,AIX,Solaris) y procesadores( Sparc, x86(Intel), HP-UX , Alpha )...el realizarlo para cada combinación posible sería una magna obra de Ingeniería, si utiliza Java puede concentrar sus esfuerzos "UNICAMENTE" en un producto, y debido a que existen diversos JRE: Para Linux , Solaris, Windows y otros sistemas operativos, deja los detalles específicos de Plataforma ( JVM ) al JRE y concentra sus esfuerzos en un solo producto. Ahora bien, otra alternativa sería llevar su producto Open-Source distribuyendo el Código fuente evitando los posibles conflictos de Sistemas Operativos y Procesador.

JDK,SDK,J2SE

"Java Development Kit"(JDK),"Standard Development Kit" (SDK) y "Java 2 Standard Edition" (J2SE) son nombres para el mismo componente e incluyen: El API de Java, el JRE ( JVM ), compilador de Java y otras funcionalidades definidas por Sun. Si no esta familiarizado programando en Java, el API de Java es un conjunto de clases que es utilizado para generar programas básicos en el lenguaje; utilizando una analogía, estas clases tienen la misma funcionalidad que las funciones|clases estándar utilizadas en otros lenguajes C,C++, Perl (Esto es precisamente la definición de API ("Application Programming Interface")).

Partiendo de estas clases (API de Java) se generan TODOS los programas,interfaces y elementos programados en Java, inclusive a partir de estas clases usted puede definir otras clases especificas que serán utilizadas por su programa o producto. Una vez que defina sus programas|clases en Java aún es necesario compilarlas para producir lo que es denominado byte-code o class files (este byte-code puede ser comparado con un binario) , y es este byte-code el que interpreta el JRE("Java Runtime Environment").Este byte-code es el que directamente ofrece la interoperabilidad de Java o el afamado "Write once run everywhere"="Escribalo una vez ejecutelo en todos lados".

Es una cantidad razonable de trabajo la que realiza el JDK|SDK, y por el hecho de incluir tanto el compilador,API Java y el JRE existen diversas implementaciones de JDK: JDK's de Sun (o J2SE) y JDK's de IBM.

IDE's

Mientras un JDK|SDK ofrece las herramientas para compilar y ejecutar programas en Java éste no ofrece un ambiente de trabajo para proyectos complejos, esto es, si usted compila una o dos clases quizás el comando javac ofrecido en los JDK es suficiente, pero si su proyecto estará compuesto por 100 o 200 clases, javac sería muy deficiente.Los IDE's ("Integrated Development Environment") ofrecen un ambiente gráfico en los que se tiene acceso a mayor número de herramientas no ofrecidas en los JDK's: Debuggers más elaborados, check-points dentro de la compilación,creación de WAR's (Web-Archives), "Wizards" para acelerar desarrollo, entre otras cosas. Algunos IDE's son:

J2EE (Java 2 Enterprise Edition)

J2EE es un grupo de especificaciones diseñadas por Sun que permiten la creación de aplicaciones empresariales, esto sería: acceso a base de datos (JDBC), utilización de directorios distribuidos (JNDI), acceso a métodos remotos (RMI/CORBA), funciones de correo electrónico (JavaMail), aplicaciones Web(JSP y Servlets)...etc. Aquí es importante notar que J2EE es solo una especificación, esto permite que diversos productos sean diseñados alrededor de estas especificaciones algunos son Tomcat y Weblogic ; la especificación más reciente de Sun es J2EE 1.4 , la cual esta conformada por: JSP 2.0 ,Servlet 2.4, EJB 2.1 y Connector 1.5 entre otros API's, los detalles se encuentran en http://java.sun.com/j2ee

Aunque varios productos Java están diseñados alrededor de estas especificaciones, no todos cumplen con el estándar completo, esto es, Tomcat solo emplea|cumple las especificaciones de JSP y Servlets, sin embargo, existen productos como Websphere y algunos otros "Java Application Servers" que son considerados "Fully J2EE Compliant" , en otras palabras, cumplen con todas las especificaciones definidas por Sun.

Sun ofrece una implementación de TODAS estas especificaciones llamada J2EE SDK , a pesar que el J2EE SDK es una implementación, esta es solo una muestra ofrecida por Sun para utilizar las funcionalidades de las especificaciones J2EE, aunque funcionaría en un Sistema de Producción su diseño es poco escalable además que su licencia lo prohibe.

En Términos Microsoft

J2EE pudiera ser considerado el rival de DNA ("Distributed Network Applications") ofrecido por Microsoft (hoy en dia ya conocido como Microsoft Solution Platform) el cual esta compuesto por Windows2000,SQL Server, IIS , COM y MSMQ, como puede notar a diferencia de J2EE , DNA es un producto y esta forzado a utilizar una sola implementación , a diferencia de implementaciones J2EE donde puede elegir entre diversos productos de distintas empresas. (Cabe mencionar que DNA ha evolucionado a lo que hoy se conoce como .NET ) .

Otros detalles de Importancia al trabajar con estos ambientes.

CLASSPATH=/usr/local/tomcat/lib/servlet.jar:/usr/local/enhydra/lib/enhydra.jar:
/home/JavaPrograms3:/usr/local/xml:/usr/local/xml/xp.jar:/usr/local/java_lib:
/usr/local/jsdkee/lib/j2ee.jar:/usr/local/jdk/jre/lib/ext/jndi.jar:
/usr/local/java_lib/postgresql.jar    

Cuando se utiliza un directorio, el JDK buscará dentro de éste las clases correspondientes, nótese que cuando se emplea un JAR debe especificarse el archivo completo , si el JAR se encuentra dentro de un directorio no será encontrado al menos que se indique el archivo JAR específicamente. Por lo general debe agregar este CLASSPATH al archivo /etc/bashrc para que sea definido para todo usuario del sistema.

Recomendación para JARS y CLASSPATH

Para evitar las dificultades de actualizar la variable CLASSPATH en cada ocasión que sea agregada alguna clase:

Links: