Ich bin kurz davor, meine erste berufliche Karriere als Softwareentwickler zu beginnen, und ich werde wahrscheinlich viel Java-Code schreiben. Ich weiß nicht so viel darüber, was genau ich schreiben werde, und außerdem habe ich ziemlich breite Interessen, wenn es sowieso um Code geht.
Aus Gründen, die es nicht wert waren, besprochen zu werden, ließ ich mich bei meinem letzten Praktikum nur auf die Java 1.3 und 1.4 SDKs programmieren. Außerdem konzentrierte sich meine Universitätsausbildung hauptsächlich auf Algorithmen, Datenstrukturen und andere Theorien, nicht auf Sprachmerkmale oder Bibliotheken.
In Anbetracht der obigen Ausführungen lohnt es sich also, nachzusehen, welche Funktionen, Klassen usw. in der aktuellen Java-Version (auf welcher Nummer sind wir jetzt überhaupt?) Und warum. Was habe ich seit 1.4.2 verpasst, das dir das Leben als Programmierer erleichtert?
Beispiele und Geschichten darüber, wie Sie ein bestimmtes Paket oder ein solches entdeckt und verwendet haben, wären ebenfalls großartig.
Antworten:
Die Änderungen, die ich für am wichtigsten halte, sind:
Lesen Sie auch, welches Java Sie anstreben. , um die drei Versionen besser zu verstehen.
quelle
for
Loops"?Die wichtigste Veränderung in Ihrem täglichen Programmierleben ist die Einführung von Generika die höchstwahrscheinlich in jedem neuen Modul verwendet werden, zu dem Sie aufgefordert werden, und es ist eine verwirrende neue Syntax.
Generics ist der Mechanismus, mit dem z. B. a
List
Strings anstelle von nackten Objekten enthalten kann, wobei der Compiler erzwingt, dass ein Element, das in die Liste aufgenommen werden soll, ein String ist, und er weiß, dass es ein String ist, wenn Sie ein Element aus einer Liste entfernen .Dies sorgt für bessere Programme, da Sie die explizite Umwandlung der Laufzeit in den Zieltyp vermeiden (was häufig zu Fehlern führt, wenn Sie einen Fehler machen) und die IDE Ihnen dabei helfen kann, die ganze Drecksarbeit zu erledigen, da sie viel mehr über Ihren Code weiß als es geschah, als es nur eine Liste von Objekten war.
Joshua Bloch hat eine gute Einführung in Generics geschrieben, die als Beispielkapitel unter http://java.sun.com/docs/books/effective/ verfügbar ist.
quelle
def whatever
....id
was istdef
odervar
... nachgedacht, aber andererseits ist die Sicherheit von 100% statischem Tippen wirklich erstaunlich.Autoboxing ist eine nette Funktion, die mit Java 5 eingeführt wurde. Genau wie in C # führt der Compiler jetzt eine automatische Konvertierung zwischen den primitiven (Basis-) Typen und ihren entsprechenden Objektumhüllungsklassen (int zu Integer usw.) und wieder zurück durch. Das macht die Arbeit mit Java Collections viel einfacher.
For-each- Looping war auch in Java 5 neu, denke ich. Dies erleichtert die Iteration über Arrays (und Auflistungen), da die üblichen Probleme beim Einrichten und Verwalten einer Indexvariablen oder von Iteratoren weitgehend vermieden werden. Am Beispiel:
quelle
Aufzählungen , um endgültige Statiken und Konstanten zu ersetzen und Verweise auf Zeichenfolgen und magische Zahlen zu entfernen. Ein Beispiel von den guten Leuten bei sun / oracle :
und
quelle
java.util.concurrent wurde in 1.5 eingeführt. Die beste Ressource zum Erlernen ist (wahrscheinlich) das Java Concurrency in Practice- Buch. Die IMHO-Parallelität ist Javas wichtigster Wettbewerbsvorteil im Vergleich zu allem anderen.
quelle
java.util.concurrent
Parallelität von Primitiven ist wie die automatische Speicherverwaltung die manuelle Speicherverwaltung. Letzteres ist nur ein Rezept, um mehr Zeit für das Debuggen aufzuwenden, und bietet keine Vorteile.Hat
StringBuilder
mir geholfen, mein Programm zu beschleunigen. Es entspricht derStringBuffer
Fadensicherheit ohne Gewinde.quelle
+
von Zeichenfolgen wird automatisch StringBuilder anstelle von StringBuffer für Quellversion 1.5 und höher verwendet.Ich werde helfen, indem ich die hilfreiche Antwort von @ykombinator kategorisiere. Seine Liste ist eine Liste der Elemente, die Sie täglich verwenden, wenn Sie eine "allgemeine" Java-Entwicklung durchführen.
Geringer Aufprall und geringer Schwierigkeitsgrad:
High Impact und mittlerer Schwierigkeitsgrad:
Hohe Auswirkung und hoher Schwierigkeitsgrad:
Geringe Auswirkung und hohe Schwierigkeit (wird nur verwendet, wenn Sie fortgeschrittenes Einfädeln durchführen)
Ich würde daher vorschlagen, dass Sie die Dokumentation / Hilfe zu Teilen mit geringen Auswirkungen und geringen Schwierigkeitsgraden durchlesen - sie sind leicht zu erlernen. Verbringen Sie viel Zeit mit Anmerkungen und Generika - Anmerkungen sind sehr nützlich, und Generika können ziemlich kompliziert werden.
Sehen Sie sich den neuen Inhalt der Parallelität nur an, wenn Sie Threading ausführen müssen.
quelle
Da ich keinen Kommentar abgeben kann, da ich unter 50 bin, hinterlasse ich eine Antwort. Es wurde bereits erwähnt, aber ich werde es noch einmal wiederholen: Anmerkungen! Diese Art von Metadaten wurde das Wichtigste in meiner jahrelangen Erfahrung mit Java. Es wird gut verwendet, wie es einige Frameworks tun, wodurch der Code viel präziser und sauberer wird. Anmerkungen können zum Beispiel:
Natürlich können Sie auch Ihre eigenen Anmerkungen erstellen und wissen, ob eine Methode, eine Klasse oder ein Feld durch Reflektion mit Anmerkungen versehen ist.
quelle
Lernen am Beispiel funktioniert bei mir
Hier ist ein kurzes Beispiel für Java 6
Mach dir keine Sorgen mit Java5, es ist in Bezug auf Java6 veraltet.
Nächster Schritt, Anmerkungen. Diese definieren lediglich Aspekte für Ihren Code, mit denen Anmerkungsleser die Kesselplatinen-Konfiguration für Sie ausfüllen können. Stellen Sie sich einen einfachen Webdienst vor, der die JAX-RS-Spezifikation verwendet (sie versteht RESTful-URIs). Sie wollen sich nicht die Mühe machen, die fiese WSDL zu machen und mit Axis2 usw. herumzuspielen, sondern ein schnelles Ergebnis erzielen. Richtig, mach das:
Knall. Mit ein wenig Konfigurationsmagie in Ihrer web.xml können Sie loslegen. Wenn Sie mit Maven bauen und das Jetty-Plugin konfiguriert haben, verfügt Ihr Projekt über einen eigenen kleinen Webserver (ohne dass Sie mit JBoss oder Tomcat herumspielen müssen), und der obige Code reagiert auf URIs der bilden:
Job erledigt.
quelle
Wow, das war eine Explosion aus der Vergangenheit! Ich habe seit 4 Jahren kein Java mehr verwendet - und in dieser Zeit hat sich überhaupt nichts geändert!
Es gibt eine Liste der Funktionen nach Version , aber hier ist der wichtige Teil (natürlich plagiiert) ...
J2SE 5.0 (30. September 2004)
Java SE 6 (11. Dezember 2006)
Das ist alles. Java SE 7.0 sieht interessanter aus, ist aber noch nicht veröffentlicht.
Wenn man bedenkt, wie viele neue Sprachfunktionen und APIs in den letzten 4 Jahren zu C # hinzugefügt wurden, bin ich ziemlich erstaunt. Was ist bei Sun / Oracle los?
quelle