2010-09-15 13 views
12

Estoy familiarizado con .Net y con los ensamblajes, pero lamentablemente mi conocimiento de Java no es tan sólido.¿Es un archivo Java JAR similar a un conjunto .Net?

Sé que Java y .Net son diferentes "mundos" (posiblemente como la comparación de manzanas con peras), pero ¿son los JAR y los ensamblajes .Net conceptos aproximadamente equivalentes?

Editar: Actualización sobre la base de las respuestas iniciales

La manera en que yo interpreto esto es que sí, tienen similitudes:

  • Ambos pueden contener recursos y metadatos.

pero hay algunas diferencias fundamentales:

  • un ensamblado de .NET se compila un archivo JAR no es.
  • Los archivos JAR no son necesarios para crear una aplicación Java; Los ensamblados de .Net son necesarios para una aplicación .Net.

[Este no es el momento para una guerra religiosa - Me gustaría saber si/qué parte de mi comprensión de NET puedo aplicar para conseguir mi cabeza alrededor de Java (y tal vez esto incluso ayudará a la gente de Java a ir al revés).]

+1

Vea también: http://stackoverflow.com/questions/3629291/is-a-java-package-the-equivalent-of-a-net-assembly – ColinD

+0

Es una aproximación bastante cercana. Sin embargo, muchas diferencias. (por ejemplo, Assembly.GetTypes no tiene ningún análogo en Java) –

+0

@ColinD - gracias por el enlace. –

Respuesta

5

Yo diría que no, no son el mismo concepto, señalando que se puede usar un JAR como un conjunto. Si realmente quieres entender un archivo JAR, solo piensa en él como un archivo ZIP. Eso es todo lo que realmente es.

La mayoría de las veces, ese archivo contiene archivos de clase compilados. Y, con mucha frecuencia, esos archivos de clase se organizan de forma jerárquica y corresponden al paquete de la clase.

Pero los archivos JAR suelen contener otras cosas, como paquetes de mensajes, imágenes e incluso los archivos fuente. Te animo a abrir una puerta abierta con el cliente descomprimido que elijas y echar un vistazo al interior.

El formato JAR es, sin embargo, la forma más común de empaquetar un distribuible para una biblioteca o aplicación Java, por lo que de esa manera son muy similares.

Desde el punto de vista del lenguaje, los archivos JAR no son necesarios para crear una aplicación o biblioteca Java, ni diría que son intrínsecos a Java, sin embargo, tanto la biblioteca estándar como el JDK son compatibles con archivos JAR.

+0

"Muy a menudo, ese archivo contiene archivos de clase compilados". - ¿Eso significa que no siempre tiene que hacerlo? –

+1

@Adrian K: Correcto, no tiene que ser así. Por ejemplo, los archivos compilados, los archivos doc y los archivos fuente de una biblioteca a menudo se distribuirán en 3 archivos jar diferentes, aunque en realidad no existe una necesidad específica de que las fuentes y los documentos estén en un contenedor en lugar de un .zip simple. – ColinD

8

Hay un montón de diferencias técnicas, pero son de poca importancia la mayor parte del tiempo, así que, básicamente, SÍ, son el mismo concepto.

+0

Gracias; Puedo ver por qué has dicho que son el mismo concepto. –

4

En un nivel, son conceptualmente similares (fragmento de código de bytes en un paquete). Sin embargo, su implementación es muy diferente.

Un archivo JAR es en realidad un archivo ZIP que contiene algunos metadatos, y todos los archivos .class de Java (sí, puede abrirlos como un archivo ZIP y ver adentro), y cualquier otra cosa que esté empaquetada (recursos , etc.)

Un ensamblado .NET es en realidad un archivo Win32 PE válido, y se puede tratar como tal hasta cierto punto. UNA RED .El archivo exe en realidad comienza a ejecutarse como código nativo que carga el marco, que luego carga el bytecode. "Ejecutar" un archivo JAR requiere iniciar el tiempo de ejecución de Java a través de un archivo .bat, o asociación de archivos, que luego carga el archivo JAR por separado.

Cuestiones relacionadas