2001? Wow, i tempi sono cambiati. Questo era quello? Java 1.3?
In primo luogo, le caratteristiche del linguaggio:
- Generics: Java aggiunti generici nella release 5.0 nel 2004, in sostanza come zucchero sintattico per fermare lo fai tutti quei calchi di oggetti fuori delle collezioni;
- Annotazioni: anche in Java 5. Utilizzato estesamente nei framework di persistenza, Spring e altrove;
- Enumerazioni tipiche: Java 5 ha aggiunto un tipo enum, che è fondamentalmente una classe (sorta di);
- Concorrenza: Java 5 ha aggiunto numerosi utils di concorrenza così il multithreading è cambiato molto; e
- Assert: una funzionalità linguistica molto poco utilizzata aggiunta in Java 1.4. Se abilitato quando si esegue il programma, le risorse possono controllare varie condizioni e bombardare se non sono vere. Il fatto che sia possibile accenderli o spegnerli quando si esegue il programma è ottimo per la diagnostica.
Ciò che è, tuttavia, non sono nemmeno i grandi cambiamenti. Nella prima parte di questo decennio, Java subì radicali cambiamenti architettonici e filosofici.
Nel 2001 le cose più importanti erano EJB, Swing e servlet/JSP. Nessuno di loro è più realmente (almeno non direttamente).
Proabilmente la cosa più grande che accada in Java (sin dal suo inizio imho) è che la primavera e la primavera sono diventate davvero grandi circa 5 anni fa. Spring è un contenitore leggero che cerca anche di nascondere le differenze di implementazione tra diversi provider e API. La cosa più importante di Spring è comunque il principio di "inversione del controllo" o "iniezione di dipendenza". L'idea è che le classi ("bean") vengano assemblate da una configurazione esterna ("contesto dell'applicazione").
Uno schema tipico nei giorni J2EE precedenti era il localizzatore di servizi. Ora è visto in gran parte come un anti-modello. In sostanza si vedrebbe codice come questo:
public MyClass() {
this.dataMember = ServiceLocator.locate("some service");
}
Se si va in giro sostenendo questo tipo di approccio in questi giorni si sarà visto come un anacronismo, un dilettante, un picchiatello o una combinazione dei tre.
Iniezione di dipendenza, nella sua forma più semplice, inietterà invece il comportamento necessario in classi senza riguardo per l'effettiva implementazione. Questo tipo di separazione è ingannevolmente potente e un profondo cambiamento che Sun (ancora) non ha davvero in mente. Migliora inoltre notevolmente i test delle unità.
L'altalena è ancora in giro ma non è più così grande. Sun ha rilasciato JavaFX come concorrente Flash e sostituzione dell'applet negli ultimi mesi. Personalmente non penso che abbia molto futuro (come ha detto Joel nel suo recente podcast, Java sul desktop è praticamente morto), ma altri non saranno d'accordo.
EJB era grande nel 2001. Non molto più. È stato (correttamente) visto come un incubo della configurazione XML, differenze nei server delle applicazioni che li hanno resi largamente non portabili (o non banali portatili se si preferisce) e sono una soluzione così pesante (pre-3.0) che non hanno davvero tante applicazioni
EJB 3.0 ha adottato un approccio molto più simile a Spring dependency (sorta di) e annotazioni di POJO (semplici vecchi oggetti Java).
Servlets e JSP erano grandi nel 2001. Gli struts iniziarono allora o poco dopo e furono grandi fino a pochi anni fa. Ora è stato superato da altri framework Web più moderni (come Struts 2 - nessuna relazione reale con gli STruts 1 nonostante il nome - Spring MVC, Seam e così via).
La cosa grande in questi giorni - non solo in Java - è di coruse il Web e le RIA. Flash/Flex e Javascript/HTML/CSS (più framework) governano il posatoio qui in questi giorni (e sì c'è GWT ma ha un piccolo seguito).
Weblogic e Websphere non sono grandi come lo erano nel 2001. JBoss ha ancora molto slancio ma il mio appserver di scelta in questi giorni è Sun's Glassfish v2 o v3 Prelude.
Anche gli IDE sono cambiati. JBuilder era grande nel 2001. Ora ce ne sono solo tre: Eclipse, Netbeans e IntelliJ (probabilmente in quell'ordine di popolarità, ma la mia preferenza è IntelliJ, che è anche l'unica commerciale del gruppo).
Sono uno sviluppatore Swing e il tuo post mi ha fatto piangere – willcodejavaforfood
Sicuramente non era il fatto che tu sei un Sviluppatore di swing che ti ha fatto piangere? :) – cletus
jsp non è più grande ?? JSF non ha ancora completamente sostituito lo stesso – tehvan