Como desarrollador, a menudo me interesa la característica de idioma nuevo que puede hacer su vida más fácil. Por ejemplo, java 5 trajo genéricos y anotaciones al lenguaje, características que definitivamente pueden aumentar su productividad.¿Es el mecanismo de control de versiones más necesario de Java?
Sin embargo, cuando miro hacia atrás a casi una década de trabajo en la plataforma Java, encuentro que los problemas relacionados con las versiones son el mayor culpable del esfuerzo improductivo e innecesariamente gastado. Horas y horas de buscar la versión correcta del contenedor, tratando de conciliar algún conflicto de versiones, actualizar bibliotecas dependientes, etc. Cuando comencé a trabajar en Java, las cosas no eran tan difíciles, tendrías algunas bibliotecas de terceros y eso es todo . Hoy en día, su aplicación web típica podría usar fácilmente: Spring Framework, Hibernate, Struts, lo que sea. Todos estos llevan una cantidad de bibliotecas de terceros dependientes. Hoy, mis archivos de oído generalmente incluirán unas 40 o más bibliotecas de terceros. ¡Un verdadero infierno!
Con las anotaciones, no tengo que administrar los archivos de configuración para Hibernate, por ejemplo. Una buena característica, pero no he visto tantos problemas derivados del hecho de que guardo mis descripciones en un archivo separado. Con los genéricos, me libero de escribir sentencias de elenco, pero en todo mi soporte de programación no puedo recordar un solo error que podría haberse evitado usando un contenedor tipo seguro. ¿No habría sido mucho más valiosa la solución a los problemas de control de versiones?
Todos estos problemas han dado lugar a varias herramientas como Maven, ivy, One Jar, Jar Jar Links (no es broma!), Incluso el apropiado nombre Jar Hell etc. Incluso si utiliza algunas de estas herramientas, que está lejos de ser inmune a la problema. Uso Maven 2 y ha sido de gran ayuda. Aún así, es un mundo en sí mismo. El programador principiante puede tardar un tiempo en aprenderlo. Mover sus proyectos heredados a la estructura de Maven también es un problema.
Parece que en .Net han aprendido la lección con dll hell y la administración de ensamblados .Net es mucho más simple.
Parece que hay planes para resolver este problema para la plataforma Java y alternativas como OSGI. Creo que se necesita urgentemente algún mecanismo de versión básico y aplicado a la plataforma
Esto parece más un comentario que una pregunta. – cletus
Supongo que es un poco de ambos (un comentario y una diatriba). Básicamente quería ver si otros compartían los mismos problemas que yo. Desde hace años, esta ha sido la necesidad más apremiante para mi equipo y me siento frustrado por la falta de una solución eficiente para este problema. – Dan
Rant o no, sigue siendo una pregunta legítima. Al menos el título es incluso si la pregunta no se repite en el cuerpo de la publicación. – tvanfosson