Come sviluppatore, sono spesso interessato a nuove funzionalità linguistiche che possono semplificarti la vita. Ad esempio, java 5 ha portato generici e annotazioni nel linguaggio, caratteristiche che possono sicuramente aumentare la tua produttività.Il meccanismo di versioning forzato dalla piattaforma è la funzionalità più necessaria di java?
Tuttavia, quando guardo a circa un decennio lavorando sulla piattaforma java, trovo che i problemi relativi al controllo delle versioni sono il più grande colpevole di sforzi improduttivi e inutilmente spesi. Ore e ore di ricerca della versione corretta del jar, cercando di conciliare qualche conflitto di versioning, aggiornando le librerie dipendenti ecc. Quando ho iniziato a lavorare in java, le cose non erano poi così difficili, avresti alcune librerie di terze parti e il gioco è fatto . Oggi, la tua tipica applicazione web potrebbe facilmente usare: Spring Framework, Hibernate, Struts, lo chiami. Tutti questi contengono un numero di librerie di terze parti dipendenti. Oggi, i miei archivi per le orecchie includeranno in genere 40 o più librerie di terze parti. Un vero baratro inferno!
Con le annotazioni, non è necessario gestire i file di configurazione per Hibernate, ad esempio. Una bella funzionalità, ma non ho visto molti problemi derivanti dal fatto che tengo i miei descrittori in un file separato. Con i generici, sono risparmiato dal scrivere dichiarazioni cast, ma nel mio intero carrier di programmazione non riesco a ricordare un singolo bug che si sarebbe potuto prevenire usando un contenitore sicuro per i caratteri. La soluzione ai problemi di versionamento non sarebbe stata molto più preziosa?
Tutti questi problemi hanno portato ad alcuni strumenti come Maven, ivy, One Jar, Jar Jar Links (non scherzo!), Anche giustamente chiamato Jar Hell ecc Anche se si utilizzano alcuni di questi strumenti, si è ben lungi dall'essere immuni al problema. Io uso Maven 2 ed è stato di grande aiuto. Eppure, è un mondo a sé. Il programmatore novizio può impiegare un po 'di tempo per impararlo. Anche spostare i tuoi progetti precedenti nella struttura di Maven è un problema.
Sembra che in. Net abbiano imparato la lezione con dll hell e la gestione degli assembly .Net è molto più semplice.
Sembra che ci siano piani per risolvere questo problema per la piattaforma java e le alternative come OSGI. Penso che sia necessario un certo meccanismo di base delle versioni e delle piattaforme imposto
Questo legge più come un commento che come una domanda. – cletus
Immagino che sia un po 'di entrambi (un commento e un rant). Fondamentalmente volevo vedere se gli altri condividono gli stessi problemi di me. Per anni questo è stato il bisogno più urgente per il mio team e mi sento frustrato dalla mancanza di una soluzione efficiente a questo problema. – Dan
Rant o no, è ancora una domanda legittima. Almeno il titolo è anche se la domanda non viene ripetuta nel corpo del post. – tvanfosson