Acabo de lanzar una pequeña biblioteca Java que ofrece solo unas pocas clases y métodos. Desde que construí el proyecto con Maven, inmediatamente utilicé varias bibliotecas de terceros para lograr mis objetivos, específicamente:
- commons-lang3 (para algunas cosas generales de Java)
- slf4j-api (para iniciar sesión)
- commons-io (para un poco de material de archivo, literalmente leer un archivo una vez, creo)
No quiero que mi biblioteca parezca hinchada a los ojos de los demás. ¿Debería intentar eliminar mi dependencia de estas bibliotecas para minimizar mi huella? ¿Algún consejo sobre qué tipos de bibliotecas sería mejor evitar al considerar usar más en el futuro?
Respuestas:
Estoy respondiendo esto considerando tu situación específica. Yo diría que está bien usar esas bibliotecas. Solo asegúrese de que su slf4j-api no traiga consigo la implementación. Con eso, me refiero a marcar la dependencia de implementación como "prueba". P.EJ:
Esto se describe en detalle en las preguntas frecuentes de SLF4j.
En cuanto a los otros dos, IME, siempre son compatibles con versiones anteriores. Por lo tanto, si dentro de 5 años necesito usar su biblioteca pero está usando una versión anterior de esas, solo puedo excluir sus dependencias y nuestro código seguirá funcionando. En otras palabras, al usar estas bibliotecas específicas no introducirás jar-hell para otros.
Si uso su biblioteca a través de Maven, no notaré si su biblioteca está hinchada o no. Solo dependeré de la tuya y la usaré. Creo que es más importante que su código funcione correctamente que su huella más pequeña. Prefiero que uses commons-io en lugar de reinventar la rueda con un error.
fuente
slf4j-api
y no otros artefactos relacionados, proporcionados o no. Ver slf4j.org/manual.html#projectDep .exclude
s iirc) que tuve que hacer cuando determinados módulos de mis dependencias no podían "ponerse de acuerdo" en una versión slf4j. Según su respuesta, parece que si los diseñadores de módulos lo exponganprovided
, no habría problemas como ese, ¿correcto?provided
- muy discreto.mvn dependency:analyze
fue traer versiones basura hasta que se excluyó :)No.
"Hinchazón" es un mito. No importa cuánto código haya en su biblioteca, si parte de ese código nunca se usa, no se paginará, no tendrá ningún impacto ni en el rendimiento ni en la huella de la memoria.
Por otro lado, si necesita esa funcionalidad adicional, tiene dos opciones. Puede escribirlo usted mismo y dedicar mucho tiempo y esfuerzo a resolver problemas que otros ya han resuelto antes, o puede optar por usar la solución que ya existe (y ha sido probada / depurada / etc.).
Eso nos deja con el tamaño de descarga y la huella de espacio en disco, y a menos que esté hablando de números tontos, en 2013 son dos factores que deberían estar cerca del final de la lista de cosas por las que debe preocuparse.
fuente