Vorteile / Nachteile beim Bau eines riesigen Glases im Gegensatz zu mehreren kleineren?

8

Ich habe Programme wie Ссылка und Ссылка fördern Sie das Rollieren Ihres Anwendungs-JAR und aller Abhängigkeiten in einem einzigen ausführbaren Jar.

Was sind die Hauptgründe dafür / dagegen?

    
brian_d 28.09.2010, 19:27
quelle

5 Antworten

8

Für:

  • einfachere Verteilung,
  • macht das Klassenpfadproblem weg,
  • kann sogar in Ms PowerPoint-Präsentation als anklickbares Symbol gepackt werden, wahrscheinlich kann OpenOffice auch damit umgehen.

Gegen:

  • schwieriges Verpacken - manchmal trifft man einen Eckfall wie: wie man native Erweiterungen verpackt,
  • erfordert einen zusätzlichen Build-Schritt,
  • erzeugt größere Gläser,
  • kann die Lizenzvereinbarung der Bibliothek verletzen,
  • tötet den Begriff der Wiederverwendung von Bibliotheken,
  • aktualisiert und
  • Debugging (wegen extra Klassenpfad-Loader) schwieriger.

Im Allgemeinen ist es also ein großartiger Weg für das schnelle Prototyping, kann aber in einem größeren Projekt in einer gewissen Weise funktionieren.

    
Rekin 28.09.2010, 19:37
quelle
5

Ein legitimer Grund, den ich am Arbeitsplatz gesehen habe, ist die Tatsache, dass ein Hersteller Hotfix-Jars zur Verfügung stellt, die der ursprünglichen Version im Klassenpfad vorausgehen müssen.
Diese Anwendung wird jedoch über Java-Webstart (jnlp) gestartet und ab Java-Version 6 ist die Reihenfolge der JAR-Dateiabhängigkeiten nicht mehr gewährleistet.
Daher ist die einzige Möglichkeit, sicherzustellen, dass die duplizierten Klassendateien in der richtigen Reihenfolge sind, sie in ein Uber-Jar zu packen, wobei die neuesten gepatchten Klassendateien beibehalten und ältere Duplikate verworfen werden.

    
crowne 28.09.2010 19:34
quelle
4

Umverteilungslizenzen, die auf Abhängigkeiten anwendbar sind, sind ein Hauptgrund gegen den Aufbau eines "Uber" -Glases. Wenn man ein "Uber" -Glas erstellt, erfolgt die Verteilung von Abhängigkeiten über die Verteilung des "Uber" -Glases. Und in Regionen, wo die Rechtsprechung dieses Szenario nicht angemessen abdeckt, könnte man sich für die Haftung öffnen.

Außerdem können einige im Handel erhältliche Abhängigkeiten das Umpacken von Abhängigkeiten verhindern, insbesondere wenn die ursprüngliche Verteilung nicht beibehalten wird.

PS: Dies ist kein Rechtsrat. Jeder, der dies liest und davon abhängig ist, geschäftliche Entscheidungen zu treffen, sollte sich an einen Anwalt wenden.

    
Vineet Reynolds 28.09.2010 21:11
quelle
1

Verteilung FTW! Es ist so viel einfacher für den Benutzer zu einem zusammengerollt.

    
Michael Wilson 28.09.2010 19:30
quelle
1

Für:

  • Bündelung von Bibliotheken und nativem Code
  • Sorgen Sie für die richtige Reihenfolge der Laufzeit von Klassenpfadelementen
  • Entfernen Sie die Notwendigkeit für Installer

Gegen:

  • Neuer Top-Level-Classloader kann zu Problemen führen, die während des normalen Entwicklungszyklus nicht auftreten
  • Rechtmäßigkeit des Umpackens von Bibliotheken unter abweichenden Lizenzbedingungen

Wenn es sich um eine kleine Utility-Anwendung handelt, werde ich sie im Allgemeinen in ein einziges Glas bündeln. Für größere Anwendungen (die wahrscheinlich sowieso einen Installer benötigen), oder wenn es eine Bibliothek für andere ist, werde ich nicht stören. Es wird nur ein weiteres Glied in der Kette von Dingen sein, die brechen können.

    
James Van Huis 28.09.2010 21:44
quelle

Tags und Links