2010-09-28 7 views

Respuesta

8

Por:

  • fácil distribución,
  • hace problema de ruta de clase desaparece,
  • se pueden empaquetar incluso en la presentación MS PowerPoint como un icono de hacer clic, probablemente OpenOffice también puede manejar la situación.

contra:

  • envases difícil - a veces te encuentras con un caso límite, tales como: cómo empaquetar extensiones nativas,
  • requiere paso de generación adicional,
  • genera frascos más grandes,
  • puede violar el acuerdo de licencia de la biblioteca,
  • mata la noción de reutilización de la biblioteca,
  • hace actualizaciones y
  • depuración (debido a extra classpath loader) más difícil.

Por lo general, es realmente una gran manera de hacer prototipos rápidos, pero puede ser de alguna forma si se usa en un proyecto más grande.

1

Distribución FTW! Es mucho más fácil para el usuario enrollarse en uno.

5

Una razón legítima que he visto en el lugar de trabajo se debe al hecho de que un proveedor proporciona frascos de revisión que deben preceder a la versión original en el classpath.
Sin embargo, esta aplicación se inicia a través de java webstart (jnlp) y, a partir de la versión 6 de java, ya no se garantiza el orden de las dependencias del archivo jar.
Por lo tanto, la única forma de garantizar que los archivos de clase duplicados se encuentren en la secuencia correcta es volver a empaquetarlos en un jar de uber, conservando los últimos archivos de clase parcheados y descartando duplicados anteriores.

+1

+1 para caso de uso muy interesante – Rekin

4

Las licencias de redistribución aplicables a las dependencias son una razón importante contra la creación de un jar "uber". Cuando uno crea un contenedor "uber", se produce la distribución de cualquier dependencia, a través de la distribución del contenedor "uber". Y en las regiones, donde las leyes de casos no cubren este escenario de manera adecuada, uno podría abrirse a sí mismo para la responsabilidad.

Además, algunas dependencias obtenidas comercialmente pueden prohibir el reempaquetado de dependencias, especialmente si no se conserva la distribución original.

PD: Esto no es asesoramiento legal. Cualquiera que lea esto y dependiendo de esto para tomar decisiones comerciales, debe consultar a un abogado.

1

Por:

  • Agrupación de bibliotecas y código nativo
  • asegurar la mayor tiempo de ejecución adecuada de elementos de ruta de clases
  • Quitar necesidad de instaladores

contra:

  • Nueva El cargador de clase de nivel superior puede int cuestiones que no se ve laborar durante el ciclo de desarrollo normal
  • legalidad de las bibliotecas de reenvasado bajo términos de licencia dispares

En general, si se trata de una aplicación de utilidad pequeña, voy a agrupar en un solo frasco. Para aplicaciones más grandes (que probablemente requerirá un instalador de todos modos), o si se trata de una biblioteca para que otros la usen, no me molestaré. Será solo otro eslabón en la cadena de cosas que puede romperse.

Cuestiones relacionadas