13

Estoy sorprendido de que el proyecto Apache Commons Collections aún no haya logrado que sus bibliotecas sean conscientes de los genéricos. Realmente me gustan las funciones que ofrece esta biblioteca, pero la falta de soporte para los genéricos es un gran obstáculo. Hay un Lavalabs fork of Commons Collections which does support generics, que parece exigir compatibilidad con versiones anteriores, pero cuando intenté actualizar a esta versión, mi aplicación web no se inició (en JBoss).Colección de recursos genéricos comunes

Mis preguntas son:

  • si alguien ha actualizado con éxito de Commons cobros al tenedor mencionado anteriormente
  • Si Commons Collections tiene ningún plan para añadir soporte para los genéricos

Por cierto, me Estoy al tanto de las colecciones de Google, pero soy reacio a usarlo hasta que la API se estabilice.

Saludos, Don

Respuesta

8

Hay contribuciones. Pagar el jira 's

También hay un JDK5 branch.

Nos gustaría agregar genéricos y actualizar Commons Collections a 1.5 (y 1.6). El mayor problema es cómo abordar la compatibilidad con versiones anteriores. Y la gente tiene opiniones muy diferentes allí. Para algunos de los componentes de Commons, el JDK más reciente casi pide una reescritura para el nuevo JDK en mi humilde opinión.

Durante ApacheCon, sin embargo, sentí el impulso de varias personas para hacer que esto avanzara. Es solo una gran tarea.

dude a aparecer en [email protected]

aplausos, Torsten

+0

Gracias Torsten. Estoy un poco relucant para mencionar esto en la lista de correo ya que espero que ya haya sido discutido un millón de veces. Veré la rama JDK5 –

+0

Pregunta: ¿Sabía que JDK 1.4 ya no es compatible con el sol? –

+0

Solo sácalo. Necesitamos la presión :) – tcurdt

6

Teniendo en cuenta que la última palabra en Yakarta propia internaldebate estaba en 07 de diciembre diría que Apache no abrazará genéricos, dejando el campo libre para algo Java5 amigos como Google Collections.

0

No me puedo imaginar lo que la razón puede que no use las colecciones de Google. Es bastante simple de usar esa biblioteca.

Para mi trabajo, uso ambas colecciones, apache y google.

¿Puedes explicarme más acerca de por qué no puedes usar las colecciones de google?

respecto

+2

Una razón es porque mi aplicación ya incluye colecciones comunes (por ejemplo, como una dependencia transitiva de otra biblioteca Apache). Si fuera posible, preferiría actualizar a una versión genérica de colecciones comunes que introducen otra dependencia. –

9

Considere Google Collections. Desde su Javalobby interview:

[Google Collections es] construido con Java 5 características: genéricos, enumeraciones, tipos de retorno covariantes, etc. Al escribir código Java 5, que desea una biblioteca de colecciones que saca el máximo partido de la lengua. Además, nos esforzamos enormemente para que la biblioteca sea completa, robusta y consistente con las clases de colección JDK.

+0

Estoy en todo por esta respuesta. En serio, si la gente común de Apache quiere permanecer en sus chozas colectivas de la edad oscura (por las razones que sean), entonces es su elección. Es embarazoso codificar nuevos proyectos utilizando bibliotecas sin soporte para las características modernas de Java. – Lajcik

+1

Google collections ya no se mantiene y ahora es parte de [Guava] (http://guava-libraries.googlecode.com/) – herman

1

Digo, muerdo la bala y cambie a google-collections, al menos para el nuevo código.

Sé que le preocupa la estabilidad, pero la biblioteca de colecciones de google está MUY cerca de estable para la versión 1.0: cuelgue en la lista de desarrolladores o mire sus problemas informados, ya son muy cautelosos con los cambios. especialmente rompiendo. Cualquier incompatibilidad entre la versión actual y la final (aparentemente inminente) 1.0 va a ser extremadamente pequeña.

Además, si le preocupa la estabilidad, elija una versión (por ejemplo, la actual, 1.0 RC4), y ... simplemente no actualice. Claro, no obtendrá ninguna característica nueva, pero las colecciones comunes no se han actualizado de manera significativa en varios años, por lo que realmente está peor? Al menos estás congelado en algo con genéricos y (en mi humilde opinión) una API mucho mejor.

0

Hay un puerto de colecciones genéricas 3.1 available here, que hemos estado utilizando durante algunos años. Hace el trabajo muy bien, y dado que se basa estrictamente en la fuente de Commons existente, tiene una API estable.

No obstante, podría actualizarse para adaptarse a Commons Collections 3.2.

1

El problema general de BC es que el paquete org.apache.commons.collections ha sido renombrado comoorg.apache.commons.collections15. No sé el motivo de este cambio. Intente cambiarle el nombre, vuelva a compilar la biblioteca y vuelva a ejecutar su aplicación.

He encontrado este problema usando la herramienta Clirr en commons-collections-3.2.1.jar (de Apache) y collections-generic-4.01.jar (de Lavalabs).

Cuestiones relacionadas