¿Qué sueles buscar en una biblioteca de Java? ¿Cómo sabes que es bueno y que servirá bien a tu propósito?

Gracias por el A2A. Trataré de enumerar algunos puntos que creo que son importantes al elegir una biblioteca o un marco (aunque las diferentes bestias, los procesos para elegirlos son muy parecidos).

Algunos puntos:

  • Licencia: es primordial saber si el uso de la biblioteca (o marco) afectaría la viabilidad comercial de mi software. Tiendo a pasar bibliotecas que emplean una licencia copyleft (como GPL)
  • Alcance: Bibliotecas que tienen un alcance bien definido. Deben hacer una sola cosa y hacerlo bien en lugar de hacer una gran cantidad de cosas y no sobresalir en ninguna de ellas.
  • Estilo: el código debería ser natural y seguir el estilo del lenguaje actual (por ejemplo, las bibliotecas modernas de Java deberían abarcar completamente los cierres y los genéricos).
  • Documentación: las bibliotecas deben estar bien documentadas con muchos ejemplos. Esta documentación debe estar en inglés simple: solo un Javadoc (o algo comparable) no será suficiente.
  • Interoperabilidad: las bibliotecas deben ser agradables entre sí; el empleo de una biblioteca no debe impedir que el programador use otra.
  • Capacidad de prueba: la biblioteca no debe obstaculizar la capacidad de prueba general del sistema. (por ejemplo, para facilitar las pruebas unitarias, puede ser deseable una biblioteca de fechas para proporcionar alguna forma de establecer la fecha actual)

No estrictamente, sino más o menos en este orden:

  • la licencia
  • qué tan bien coincide con el problema que tengo
  • qué bibliotecas similares hay
  • cómo se vería mi código al usar la biblioteca
  • el alcance (personalmente prefiero marcos pequeños y enfocados con pocas dependencias propias)
  • cuántas versiones de producción listas / posteriores a la 1.0 ha tenido, qué tan activo es (mira las publicaciones, la cancelación de errores, las confirmaciones)
  • cómo se distribuye (preferiblemente de algún repositorio maven / gradle)
  • código y calidad de api

La última parte es lo que generalmente llevará la mayor parte del tiempo. Normalmente solo hojeo el proyecto. Intenta construirlo. Ejecute pruebas unitarias. Y crea un poco de código de prueba. Mi forma favorita de hacerlo es escribir Clojure contra la API.

Si llego a la lista y tengo suficientes respuestas a todas estas preguntas, sé que tengo algo que puedo usar.

Las cosas que, en mi opinión personal, no son tan importantes como muchas personas creen que son, son: cuántos usuarios tiene la biblioteca o qué tan popular es, si tiene soporte comercial, si sigue los estándares y si tiene documentación / libros (aunque es bueno tenerlo, si la biblioteca es buena y tiene un buen conjunto de pruebas unitarias y código de ejemplo, debería poder hacerlo con solo algunos documentos mínimos).