Ich bin neugierig zu erfahren, was andere Java-Programmierer als ihren bevorzugten Teil der Sprache empfinden, warum sie sich so fühlen und warum andere Programmierer auch ein genaues Wissen davon haben sollten. Ich suche nach Gründen wie Einfachheit, Leistung usw. Danke.
Meine bevorzugte Java API ist das Collections Framework . Ich benutze es die ganze Zeit, anstatt meine eigenen Implementierungen zu rollen, und es ist sehr angenehm und einfach zu bedienen. Es besteht aus mehreren nützlichen und austauschbare Implementierungen von leistungsstarken Datenstrukturen und Algorithmen sowie verschiedene Komfortmethoden zum Einbinden zusätzlicher Funktionen um sie herum.
Ein Tutorial von Josh Bloch finden Sie hier: Ссылка
java.util.concurrent ist kritisch zu meinem Leben. Wir machen ziemlich viel Multicore-Programmierung und die Idee, alle unsere Aufgaben mit alten rohen Threads zu implementieren, lässt mich einfach krank fühlen.
Ein gutes Beispiel dafür, wo das Concurrency-Paket unser Leben wirklich erleichtert, ist der Pool spezialisierter Datenstrukturen, den es bietet. Mein persönlicher Favorit ist die CopyOnWriteArrayList . Wir verwenden ziemlich viel in Situationen, in denen die Anzeigeaufgabe aus einem Cache von Daten liest, um den Bildschirm zu aktualisieren, während eine andere Aufgabe Informationen aus dem Netzwerk übernimmt, um den Cache zu aktualisieren. Normalerweise wäre dies eine Einladung für Kollisionen, ConcurrentModificationExceptions und ähnliche Schrecken . Mit der CopyOnWriteArrayList erstellt die Schreibaufgabe eine neue Kopie der Daten, wenn Daten hinzugefügt werden müssen. Auf diese Weise wird sichergestellt, dass der Reader immer eine gültige (wenn auch potenziell veraltete) Datenmenge anzeigt.
Wie der Javadoc sagt,
Das ist normalerweise zu teuer, aber vielleicht effizienter sein als Alternativen wenn Traversierungsoperationen in großem Umfang Überzahl Mutationen und ist nützlich wenn du nicht willst oder willst Traversalen synchronisieren, müssen aber Interferenz zwischen gleichzeitig ausschließen Themen.
Java beseitigt ganze Klassen von Fehlern, die ich normalerweise einführen würde, um dieses Problem zu lösen, wodurch ich mich auf die eigentlichen Probleme konzentrieren kann, die ich lösen muss.
Definitiv das Collections Framework. Es wird die ganze Zeit verwendet, egal ob Sie serverseitig Java oder clientseitig, grafisch oder nicht arbeiten. Es ist einfach zu bedienen. Die meisten Datenstrukturklassen haben sowohl eine nicht-generische als auch eine generische Version (am besten, die zweite zu verwenden, aber es gibt Legacy-Code, der die erste stark verwendet), aber sie sind in Bezug auf die API abgesehen von den Klassenparametern ziemlich identisch. In .NET können die zwei Versionen unterschiedliche Namen / API haben und es kann sehr verwirrend werden. Ich mag auch, dass das Java Collections Framework Algorithmen als statische Methoden (z. B. Collections.sort (collectionVar)) und nicht als Instanzmethoden hat. In .NET verwenden sie Instanzmethoden und aus irgendeinem Grund hat nicht jede Datenstruktur eine Sortierung ... das Collections Framework ist ebenfalls sehr reich und Sie können sowohl einfache als auch spezialisierte Datenstrukturen finden (zB LinkedHashMap, das den Insertionsauftrag beibehält) / p>
Ein Nachteil, den ich gehört habe, ist, dass das Framework nicht gut funktioniert und einige Leute ihre eigenen schreiben. Ich kann es nicht überprüfen, da ich mich nicht mit performance-kritischen Dingen befasse.
javax.naming
Java ist aufgrund seiner Portabilität eine großartige Technologie für die Systemintegration, und JNDI macht einen guten Job, um die Komplexität des ersten Kontakts mit einem entfernten System zu abstrahieren.
Reflexion. Einige davon finden Sie in java.lang.reflect und einige in java.lang (hauptsächlich Class und ClassLoader) .
Streams. Die Streams in Java sind viel leichter zu verstehen und zu implementieren als ihre Gegenstücke in C ++ (Meinung) und es ist normalerweise einfach zu sehen, was ein Stream für Sie tun wird, basierend auf den Namen der Streams, die mit der API kommen.
Ich bin ein großer Fan von JPA in Java EE . Es hat den Arbeitsaufwand reduziert, den ich sowohl für große Apps (die EJBs verwenden) als auch für kleine Apps benötigen.
Ganz nah dran ist JAAS, die Sicherheits-API, hier ist der Link für Java SE JAAS : Ссылка
Bisher ist das API-Paket java.util.regex mein Favorit, weil es mich davon abgehalten hat, das Rad bei so vielen Gelegenheiten neu zu erfinden, wenn es darum geht, Strings für verschiedene Zwecke zu suchen und zu verwenden.
java.util ist sehr nützlich. Warum?
java.util.jar - Hilft beim Laden von .jar-Dateien in einen Klassenlader für meine Anwendungsplugins! Ich liebe es.
java.util.regex
Es gibt andere Pakete, ohne die ich nicht leben kann, aber das Regex-Paket muss in der obersten Stufe der "größten Ergänzungen zu Java" sein - definitiv genau dort oben mit Sammlungen.
Wenn ich an meine Java-Tage zurückdenke, war die am meisten Spaß machende API java.util.concurrent , einfach weil es gut durchdachte und einfach zu verwendende Bausteine für die parallele Verarbeitung bietet.
Tags und Links java reflection collections