JAR ("Java Archives") es un formato desarrollado por "Sun" que permite agrupar las clases diseñadas en el lenguaje Java, este formato es ampliamente utilizado en ambientes Java de todo tipo, esto se debe a que otorga un nivel de compresión y reduce la carga administrativa al distribuir clases en el lenguaje.
Debido a la compresión de estos archivos JAR estos no pueden ser observados ni manipulados directamente, sin embargo, existe la utileria jar
proporcionada con todo JDK que permite observar el contenido del archivo :
jar tvf <nombre_del_archivo_jar> |
El comando anterior despliega a pantalla las clases contenidas del archivo JAR en cuestión.
En ambientes Java también existen otros tipos de archivos llamados: WARS ("Web-Archives"), EJB-JAR("EJB Jars") y EARS("Enterprise Archives"), sin embargo, es conveniente saber que WAR's, EJB-JAR's y EARS's siguen siendo archivos JAR ("Java Archives"), su creación se debe únicamente como convención y su contenido puede ser analizado de la misma manera que un archivo JAR mediante el comando jar
.
WARS o "Web Archive" es una especificación desarrollada por Sun que permite agrupar un conjunto de clases y documentos que conforman una aplicación Web en Java en un sentido un poco peculiar a la que se acostumbra en un sitio.
Estos Web-Archives (WARS) por lo general son utilizados por los diversos Servlet Engines del mercado, la siguiente información esta basada en el Servlet Engine : Tomcat , aunque cabe aclarar que lo mismo debe ocurrir en otros "Servlet Engines" ya que están basados en las mismas especificaciones de JSP y Servlets definidas por Sun.
Cuando recién registra su sitio en Internet y empieza a desarrollar aplicaciones de servidor , estas empiezan relativamente sencillas: recomendar una página o robots , pero que sucede conforme su sitio empieza a crecer y decide incorporar foros de discusión, registro de usuarios o alguna otra funcionalidad adicional ? Si utiliza JSP's seguramente su sitio empezará a convertirse en una madeja indescifrable, es por esto que los WARS modularizan el desarrollo de aplicaciones.
Suponiendo que ha desarrollado varios JSP's y Servlet's que componen un foro de discusión, seguramente quedrá que varias secciones del sitio contengan un Foro de este tipo, si tiene 2 secciones bastaría copiar los JSP's y Servlet's a los directorios correspondientes, pero si esta compuesto por 20 o 40 áreas ? Si utiliza WARS basta colocar el archivo bajo un directorio y el Servlet Engines terminará el trabajo. El uso de WARS también facilita la distribución de esta aplicación a otros "Servlet Engines" utilizando un solo archivo.
La estructura de un (Web-Archive) WAR es la siguiente:
/ *.html *.jsp *.css : Este directorio base contiene los elementos que comúnmente son utilizados en un sitio, Documentos en HTML , JSP's , CSS("Cascading Style Sheets") ,etc.
/WEB-INF/web.xml : Contiene elementos de seguridad de la aplicación así como detalles sobre los Servlets que serán utilizados dentro de la misma.
/WEB-INF/classes/ : Contiene las clases Java adicionales a las del JDK que serán empleadas en los JSP's y Servlets
/WEB-INF/lib/ : Contiene los JAR's que serán utilizados por su aplicación.
La creación de WARS puede realizarse en IDE's o en algún otro programa como Ant .
La especificación de Sun dicta que todo servlet engine debe contener un archivo denominado server.xml, es dentro de este archivo que se define lo que es denominado "Context-Path", estos Context-Path's definen en que parte del sitio deben ser ejecutadas|descomprimidos los WARS (Web-Archives).
Un Context-Path puede indicar que el WAR llamado foros sea descomprimido bajo el directorio web: /aplicaciones/foros
y /conectividad/foros
, esto le permite empezar a definir
links
hacia estos directorios del sitio, sin embargo, tiene la ventaja de estar insulado de los detalles de instalación de la aplicación.
Un EJB-JAR es la manera en que son distribuidos desarrollos EJB's , de la misma forma en que los WARS modularizan el desarrollo de aplicaciones con JSP's/Servlets, un EJB-JAR lo hace para desarrollos con EJB's
La estructura de un EJB-JAR es la siguiente:
/ *.class : Bajo este directorio base se encuentran las diversas clases que conforman a un EJB.
/META-INF/ejb-jar.xml : Este archivo contiene el denominado Deployment Descriptor utilizado en EJB's.
/META-INF/* : Este directorio además del Deployment Descriptor puede contener otros archivos de configuración utilizados por el "Application Server" ("EJB Container" para ser más exacto).
Al igual que los WAR's ("Web-Archives") se supone que esta estructura no debe variar, pero obviamente existen algunas discrepancias entre los diversos "Application Servers", por lo que un EJB-JAR creado para JBoss probablemente no funcione para Web-Logic.
Un EAR es simplemente un WAR y EJB-JAR agrupados, la razón de su existencia se debe básicamente a la estructura un "Java Application Server" , por lo general ningún vendedor de "Application Servers" hace una clara distinción entre el "Servlet Engine" (ambiente utilizado para WAR's) y el "EJB Container" (utilizado para EJB-JAR's) ; debido a esto se genero el termino EAR, que desde luego también sigue estando en el formato JAR.
Finalmente , al igual que las estructuras anteriores , aunque estandarizado el formato, no existe ninguna garantía que un EAR utilizado en WebSphere sea ejecutable en Bluestone.
Links: