Ich habe gerade eine kleine Java-Bibliothek veröffentlicht, die nur wenige Klassen und Methoden bietet. Seit ich das Projekt mit Maven erstellt habe, habe ich sofort mehrere Bibliotheken von Drittanbietern verwendet, um meine Ziele zu erreichen, insbesondere:
- commons-lang3 (für einige allgemeine Java-Sachen)
- slf4j-api (zur Protokollierung)
- commons-io (für ein kleines bisschen Datei-Zeug - ich glaube, ich lese eine Datei buchstäblich einmal)
Ich möchte nicht, dass meine Bibliothek in den Augen anderer aufgebläht erscheint. Sollte ich versuchen, mich nicht mehr auf diese Bibliotheken zu verlassen, um meinen Platzbedarf zu minimieren? Irgendwelche Ratschläge, welche Arten von Bibliotheken am besten zu vermeiden sind, wenn Sie erwägen, in Zukunft mehr zu verwenden?
Antworten:
Ich beantworte dies unter Berücksichtigung Ihrer spezifischen Situation. Ich würde sagen, dass es in Ordnung ist, diese Bibliotheken zu benutzen. Stellen Sie einfach sicher, dass Ihre slf4j-api die Implementierung nicht mitbringt. Damit meine ich, markieren Sie die Implementierungsabhängigkeit als "Test". Z.B:
Dies wird ausführlich in den SLF4j-FAQ beschrieben.
Die anderen beiden, IME, sind immer abwärtskompatibel. Daher kann ich, wenn ich in 5 Jahren Ihre Bibliothek verwenden muss, aber Sie eine alte Version davon verwenden, Ihre Abhängigkeiten einfach ausschließen und unser Code wird weiterhin funktionieren. Mit anderen Worten, wenn Sie diese speziellen Bibliotheken verwenden, werden Sie nicht jar-hell für andere einführen.
Wenn ich Ihre Bibliothek über maven benutze, merke ich nicht, ob Ihre Bibliothek aufgebläht ist oder nicht. Ich werde nur von dir abhängen und es verwenden. Ich denke, es ist wichtiger, dass Ihr Code korrekt funktioniert, als dass er einen geringeren Platzbedarf hat. Ich bevorzuge es, Commons-io zu verwenden, anstatt das Rad mit einem Fehler neu zu erfinden.
quelle
slf4j-api
und ohne weitere verwandte Artefakte bereitzustellen oder auf andere Weise. Siehe slf4j.org/manual.html#projectDep .exclude
s iirc), die ich machen musste, als bestimmte Module in meinen Abhängigkeiten sich nicht auf eine slf4j-Version "einigen" konnten. Ihrer Antwortprovided
zufolge sieht es so aus, als ob Modulentwickler dies offenlegen würden . Es gäbe keine derartigen Probleme, richtig?provided
- sehr unauffällig.mvn dependency:analyze
Mistversionen bis zum Ausschluss gebracht wurden :)Nein.
"Aufblähen" ist ein Mythos. Unabhängig davon, wie viel Code sich in Ihrer Bibliothek befindet, wird ein Teil des Codes, der niemals verwendet wird, nicht weitergeleitet - dies hat keinerlei Auswirkungen auf die Leistung oder den Speicherbedarf.
Wenn Sie diese zusätzliche Funktionalität benötigen, haben Sie zwei Möglichkeiten. Sie können es entweder selbst schreiben und viel Zeit und Mühe aufwenden, um Probleme zu lösen, die andere bereits gelöst haben, oder Sie können die Lösung verwenden, die bereits vorhanden ist (und getestet / debuggt / etc).
Das lässt uns die Download-Größe und den Speicherplatzbedarf bestimmen, und es sei denn, Sie sprechen von dummen Zahlen. Im Jahr 2013 sind dies zwei Faktoren, die in der Liste der Dinge, über die Sie sich Sorgen machen müssen, am Ende stehen sollten.
quelle