2009-03-12 1 views
7

Ich bewerbe mich um einen Job als Java-Entwickler. Bis 2001 habe ich einige Hobby-Apps in Java programmiert, danach habe ich hauptsächlich in C++ und anderen Sprachen gearbeitet. In der Zwischenzeit fühlt es sich an, als sei Java sehr gewachsen, und es gibt alle Arten von Akronymen (EJB, Frühling usw.), die mir unbekannt sind.Wie komme ich am besten zu den neuesten Entwicklungen in Java?

Wo finde ich eine kurze, klare Erklärung der jüngsten (5 Jahre) Entwicklung von Java? Was sind Schlüsselelemente zu verstehen?

Antwort

25

2001? Wow, die Zeiten haben sich geändert. Das war was? Java 1.3?

Zum einen Sprach-Feature:

  • Generics: Java hinzugefügt Generika in der Version 5.0 im Jahr 2004, im Grunde als syntaktischer Zucker zu stoppen, alles, was Sie tun, um diese Abgüsse von Objekten aus Sammlungen;
  • Anmerkungen: auch in Java 5. Wird intensiv in Persistenz-Frameworks, Spring und anderswo verwendet;
  • TypeSafe Enums: Java 5 hinzugefügt einen Enum-Typ, der im Grunde eine Klasse (Art) ist;
  • Parallelität: Java 5 hinzugefügt umfangreiche Parallelität Utilities so Multithreading hat sich sehr verändert; und
  • Asserts: ein stark unterverwendetes Sprachfeature in Java 1.4 hinzugefügt. Wenn aktiviert, wenn Sie Ihr Programm ausführen, können Assets nach verschiedenen Bedingungen suchen und ausbomben, wenn sie nicht wahr sind. Die Tatsache, dass Sie sie beim Ausführen Ihres Programms ein- oder ausschalten können, ist für die Diagnose sehr hilfreich.

Die Sache ist jedoch, die oben genannten sind nicht einmal die großen Veränderungen. Zu Beginn dieses Jahrzehnts durchlief Java radikale architektonische und philosophische Veränderungen.

Im Jahr 2001 waren die großen Dinge EJB, Swing und Servlets/JSP. Keiner von ihnen ist wirklich mehr (zumindest nicht direkt).

Wahrscheinlich die größte Sache in Java (seit seiner Gründung imho) ist Frühling und Frühling wirklich vor 5 Jahren groß geworden. Spring ist ein leichtgewichtiger Container, der auch Implementierungsunterschiede zwischen verschiedenen Anbietern und APIs verbergen soll. Das größte an Spring ist jedoch das Prinzip der "Inversion der Kontrolle" oder "Abhängigkeitsinjektion". Die Idee ist, dass Klassen ("Beans") aus einer externen Konfiguration ("Anwendungskontext") zusammengesetzt werden.

Ein typisches Muster in den früheren J2EE-Tagen war der Service Locator. Es wird jetzt weitgehend als ein Anti-Muster betrachtet. Grundsätzlich würden Sie Code wie folgt sehen:

public MyClass() { 
    this.dataMember = ServiceLocator.locate("some service"); 
} 

Wenn Sie in diesen Tagen diese Art von Ansatz befürworten gehen um Sie als Anachronismus betrachtet werden, ein blutiger Anfänger, ein crackpot oder eine Kombination der drei.

Die Abhängigkeitsinjektion wird in ihrer einfachsten Form stattdessen das erforderliche Verhalten in Klassen einbringen, ohne die tatsächliche Implementierung zu berücksichtigen. Diese Art der Trennung ist täuschend stark und eine tiefgreifende Veränderung, mit der Sun (noch) nicht wirklich fertig wird. Es verbessert auch das Komponententesten erheblich.

Swing ist immer noch in der Nähe, aber nicht mehr so ​​groß. Sun hat JavaFX in den letzten Monaten als Flash-Wettbewerber und Applet-Ersatz veröffentlicht. Ich persönlich glaube nicht, dass es eine große Zukunft hat (wie Joel in seinem letzten Podcast sagte, Java auf dem Desktop ist im Grunde tot), aber andere werden nicht zustimmen.

EJB war 2001 groß. Nicht so viel mehr. Es wurde (richtigerweise) als Albtraum der XML-Konfiguration angesehen, Unterschiede in den Anwendungsservern, die sie größtenteils nicht portabel (oder nicht-trivial portabel, wenn Sie bevorzugen) und sie sind solch eine schwergewichtige Lösung (vor 3.0), die sie nicht Ich habe wirklich so viele Anwendungen.

EJB 3.0 hat einen viel springhafteren Ansatz der Abhängigkeitsinjektion (Sortierung) und Anmerkungen von POJOs (einfache alte Java-Objekte) verwendet.

Servlets und JSP waren groß im Jahr 2001. Struts begann dann oder bald danach und war groß bis vor ein paar Jahren. Es wurde jetzt von anderen modernen Web-Frameworks übertroffen (wie Struts 2 - trotz des Namens keine echte Beziehung zu STruts 1 - Spring MVC, Seam und so weiter).

Die große Sache in diesen Tagen - nicht nur in Java - ist von coruse das Web und RIAs. Flash/Flex und Javascript/HTML/CSS (plus Frameworks) beherrschen in diesen Tagen hier den Raum (und ja, es gibt GWT, aber es hat eine kleine Anhängerschaft).

Weblogic und Websphere sind nicht so groß wie 2001. JBoss hat immer noch eine Menge Dynamik, aber mein Anwendungsserver der Wahl ist Sun Glassfish v2 oder v3 Prelude.

IDEs haben sich ebenfalls geändert. JBuilder war im Jahr 2001 groß. Jetzt gibt es nur noch drei: Eclipse, Netbeans und IntelliJ (in dieser Reihenfolge der Popularität probalby, aber meine Vorliebe ist IntelliJ, die auch die einzige kommerzielle der Reihe ist).

+0

Ich bin ein Swing-Entwickler und Ihr Beitrag machte mich weinen – willcodejavaforfood

+0

Sicher war es nicht die Tatsache, dass Sie ein sind Swing-Entwickler, der dich zum Weinen gebracht hat? :) – cletus

+1

jsp nicht mehr groß ?? JSF hat es noch nicht ganz ersetzt – tehvan

1

cletus eine erstaunliche Antwort gab, aber ich habe stark mit

Java anderer Meinung zu sein auf dem Desktop

In der Tat im Grunde tot, es mehr als lebendig ist:] Eclipse-IDE ist weit mehr als nur ein Entwicklerwerkzeug. Schauen Sie sich SWT/JFace/Eclipse RCP Framework auf eclipse.org an - mit ihm können Sie Anwendungen wie Eclipse selbst erstellen. Texteditoren, grafische Diagrammeditoren, Modellierungstools, Berichte .. Ich kann selbst nicht mit Eclipse-Technologien mithalten ... einige von ihnen haben es in Spring geschafft und sind sogar in der nächsten Java-Version geplant, um nativ unterstützt zu werden (Module wie OSGi)). Vergessen Sie Swing, Desktop-Anwendungen in diesen Tagen werden in RCP Weg entwickelt.

Einige Informationen finden Sie unter http://wiki.eclipse.org/index.php/Rich_Client_Platform und Eclipse-Zone bei dzone.com.

Java unterstützt nun JavaScript von Ausfall- und Aditionally eine Reihe von Sprachen wie Python, Ruby usw. haben „portiert“, um das Ökosystem als Jython, JRuby.Es gibt auch eine neue Sprache namens groovy und ihr Flaggschiff-Projekt Grails (die Spring und Hibernate verwendet).

GWT (Java zu JavaScript Converter + Reihe von Widgets) gewinnt Aufmerksamkeit. Es gibt sogar ein emergentes Projekt namens Eclipse RAP, das darauf abzielt, RCP-Inhalte ins Web zu bringen.

Abgesehen von JBoss und Glassfish könnten Sie sich für Jetty interessieren - eine extrem leichte und zugleich leistungsstarke Alternative.

Verwandte Themen