2009-03-12 5 views
7

Mi sto candidando per un lavoro come sviluppatore java. Ho programmato alcune app per hobby in Java fino al 2001, dopodiché ho lavorato principalmente in C++ e altre lingue. Nel frattempo, sembra che java sia cresciuto molto, e ci sono tutti i tipi di acronimi (EJB, spring, ecc.) A me sconosciuti.Come faccio a seguire al meglio gli ultimi sviluppi in Java?

Dove posso trovare una spiegazione concisa e chiara dello sviluppo (di 5 anni) recente di java? Quali sono gli elementi chiave per capire?

risposta

25

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).

+0

Sono uno sviluppatore Swing e il tuo post mi ha fatto piangere – willcodejavaforfood

+0

Sicuramente non era il fatto che tu sei un Sviluppatore di swing che ti ha fatto piangere? :) – cletus

+1

jsp non è più grande ?? JSF non ha ancora completamente sostituito lo stesso – tehvan

3

Iscriviti e ascoltare The Java Posse podcast.

+0

grazie, che è un'eccellente informazione, dal momento che faccio il bus 2x40 min ogni giorno :) – Fredriku73

1

Cletus ha dato una risposta sorprendente, ma devo dissentire fortemente con

Java sul desktop è sostanzialmente morto

In realtà, è più che viva:] Eclipse IDE è molto più di un semplice strumento di sviluppo. Dai un'occhiata al framework SWT/JFace/Eclipse RCP su eclipse.org: con esso puoi creare tu stesso applicazioni come Eclipse. Editor di testo, editor di diagrammi grafici, strumenti di modellazione, report .. Non riesco a stare al passo con le tecnologie di Eclipse da solo ... alcuni di loro sono entrati in Spring e sono persino programmati nella prossima versione di Java per essere supportati in modo nativo (moduli come OSGi). Dimentica Swing, le app desktop in questi giorni sono state sviluppate in modo RCP.

Alcune informazioni possono essere trovate a http://wiki.eclipse.org/index.php/Rich_Client_Platform e zona eclipse su dzone.com.

Java ora ha il supporto per JavaScript per impostazione predefinita e Aditionally un certo numero di linguaggi come Python, Ruby, ecc sono stati "porting" per il suo ecosistema come Jython, JRuby.C'è anche una nuova lingua chiamata groovy e il suo progetto di punta graal (che usa Spring e Hibernate).

GWT (convertitore Java to JavaScript + set di widget) sta guadagnando attenzione. Esiste anche un progetto emergente chiamato Eclipse RAP che mira a portare roba RCP nel web.

Oltre a JBoss e Glassfish, potresti essere interessato a Jetty: un'alternativa estremamente leggera ma potente.

Problemi correlati