2010-09-02 13 views

Respuesta

50

La mejor comparación sería con un archivo Java Archive (JAR). Java usa paquetes para controlar el espacio de nombres, y es muy similar a los espacios de nombres de C#.

Así es como me gustaría comparar los entornos

Java     .Net 
====     ==== 
Class     Class 
Package     Namespace 
Jar      Assembly 
+1

Añadiré que una Asamblea en .Net tiene modificadores de acceso más sutiles que una jar en Java (al menos, así es como lo entiendo). Esta respuesta explica uno de esos detalles: http://stackoverflow.com/a/9808237/1168342 – Fuhrmanator

4

No, creo que un paquete Java sería más similar a un espacio de nombres

y un montaje sería más como un frasco (no estoy tan seguro de esto, ya que estoy mucho más familiarizado con Java de .Net ... me corrija si me equivoco)

+2

No es nada de nada, todo me impide la adición de clases para el espacio de nombres java.lang mediante la creación de un nuevo paquete . Una de las formas de romper excepciones comprobadas requería hacer exactamente eso (anulando Exception & RuntimeException en tiempo de compilación). – Joshua

+0

+1 Su respuesta refleja el wiki http://en.wikipedia.org/wiki/Java_package –

+0

@Joshua, agregando clases al paquete java.lang solo es posible si coloca la clase en su propio jar. También solo funcionaría para la clase agregada. Si estaba tratando de reemplazar la clase Exception, no estoy seguro de que sea posible porque el JRE carga eso por sí mismo, incluso si no se definió CLASSPATH. –

1

paquete de Java es como un espacio de nombres en .NET.

El equivalente a un ensamblaje en Java es el archivo jar.

1

Un paquete en Java generalmente significa solo espacios de nombres para clases e interfaces, lo que en realidad significa una estructura de directorio específica. A veces un archivo .jar también se conoce como un paquete. Esto es probablemente lo más cercano a un ensamblaje. Un archivo .jar también puede contener otros datos, como imágenes, o básicamente un tipo de archivo, ya que es solo un archivo comprimido de nuevo con alguna estructura de contenido específica.

En cualquier caso: generalmente cuando lee "paquete" en relación con "Java", se entiende algún tipo de espacios de nombres (a través de la estructura de carpetas, por ejemplo, com.mycompany.myproject). No ayuda el hecho de que algunas herramientas de compilación se refieran al proceso de compilación del archivo .jar como "empaquetado" ;-)

0

Tenga en cuenta que estoy lejos de ser un experto en Java, pero de todos modos, ahí va mi opinión en esto:

Como se señala en otras respuestas, un paquete no es el equivalente a un Ensamblaje. Sin embargo, no estoy totalmente de acuerdo con la idea de que un .jar sea equivalente a una Asamblea. Para mí, una clase Java (contenida en un archivo .class) está más cerca de un ensamblaje que un .jar. Digo esto porque mientras la unidad de carga para el CLR es el ensamblado (lo que significa que todas las clases contenidas en ese ensamblaje se cargan), la unidad de carga para el JVM es una clase (cuando el JVM necesita una clase, el ClassLoader no cargar todas las clases en el contenedor jar, simplemente carga esa clase específica necesaria).

Puede leer más acerca de la carga de clases de Java aquí: When does the JVM load classes?

y aquí: http://www.lansa.com/support/notes/p0294.htm

Cuestiones relacionadas