Domanda

Sono curioso di sapere cosa pensano gli altri programmatori Java della loro parte preferita del linguaggio, perché si sentono in quel modo e perché anche altri programmatori dovrebbero volerlo conoscere a fondo. Sto cercando ragioni come semplicità, prestazioni, ecc. Grazie.

È stato utile?

Soluzione

La mia API Java preferita è il Collections Framework . Mi ritrovo ad usarlo continuamente invece di implementare le mie implementazioni, ed è molto divertente e semplice da usare. Si compone di diversi utili e implementazioni intercambiabili di strutture di dati e algoritmi ad alte prestazioni, nonché diversi metodi di convenienza per avvolgere funzionalità aggiuntive attorno a loro.

Un tutorial di Josh Bloch è disponibile qui: http: // java.sun.com/docs/books/tutorial/collections/index.html

Altri suggerimenti

La mia parte preferita dell'API è sicuramente java.lang . Ha questa classe chiamata String , che ti permette di manipolare facilmente array di caratteri. Qualsiasi programmatore che si preoccupi seriamente di scrivere un buon codice Java dovrebbe verificarlo.

java.util.concurrent è fondamentale per la mia vita. Facciamo un bel po 'di programmazione multicore e l'idea di provare a implementare tutti i nostri compiti usando i thread grezzi vecchio stile mi fa sentire male.

Un buon esempio di dove il pacchetto di concorrenza ci semplifichi davvero la vita è il pool di strutture di dati specializzate che fornisce. Il mio preferito è il CopyOnWriteArrayList . Usiamo parecchio nelle situazioni in cui l'attività di visualizzazione sta leggendo da una cache di dati per aggiornare lo schermo mentre un'altra attività sta acquisendo informazioni dalla rete per aggiornare la cache. Normalmente, questo sarebbe un invito per collisioni, ConcurrentModificationExceptions e orrori simili. Utilizzando CopyOnWriteArrayList, l'attività di scrittura creerà una nuova copia dei dati se deve aggiungere dati, garantendo così che il lettore disporrà sempre di un set di dati valido (anche se potenzialmente obsoleto) da visualizzare.

Come dice javadoc,

  

Questo è normalmente troppo costoso, ma potrebbe   essere più efficiente delle alternative   quando le operazioni di attraversamento sono enormi   superano le mutazioni ed è utile   quando non puoi o non vuoi   sincronizzare gli attraversamenti, ma è necessario   escludere interferenze tra concorrenti   fili.

Java elimina intere classi di bug che normalmente introdurrei per risolvere questo problema, permettendomi di concentrarmi sugli effettivi problemi che devo risolvere.

Sicuramente il Framework delle Collezioni. Viene utilizzato continuamente, indipendentemente dal fatto che si stia eseguendo Java lato server o lato client, sia grafico che no. È facile da usare. La maggior parte delle classi di strutture di dati ha una versione non generica e una generica (è meglio usare la seconda, ma c'è un codice legacy che usa pesantemente la prima), ma sono praticamente identici in termini di API diversi dai parametri della classe. In .NET le due versioni possono avere nomi / API diversi e può diventare molto confusa. Mi piace anche come il Java Collections Framework abbia algoritmi come metodi statici (ad es. Collections.sort (collectionVar)) piuttosto che come metodi di istanza. In .NET usano metodi di istanza e per qualche motivo, non tutte le strutture di dati hanno una sorta ... il Framework di raccolta è anche molto ricco e puoi trovare strutture di dati sia semplici che specializzate (ad esempio LinkedHashMap che conserva l'ordine di inserzione).

Un aspetto negativo che ho sentito è che il framework non funziona bene e alcune persone scrivono le proprie. Non posso verificarlo perché non mi occupo di cose critiche per le prestazioni.

javax.naming

http: //java.sun com / JavaSE / 6 / docs / api / javax / denominazione / package-summary.html

Java è una grande tecnologia di integrazione dei sistemi per via della sua portabilità e JNDI fa un buon lavoro per sottrarre le complessità del primo contatto con un sistema remoto.

Riflessione. Alcuni di questi sono in java.lang .reflect e alcuni in java .lang (principalmente Class e ClassLoader).

Streams. Gli stream in Java sono molto più facili da comprendere e implementare rispetto alle loro controparti in C ++ (opinione) ed è generalmente facile vedere, in base ai nomi degli stream forniti con l'API, cosa farà uno stream per te.

Sono un grande fan di JPA in Java EE . Ha ridotto la quantità di lavoro che devo fare sia per le app di grandi dimensioni (che utilizzerebbero i bean) sia per le piccole app.

Un secondo vicino è JAAS, l'API di sicurezza, ecco il link per Java SE JAAS : http://java.sun.com/javase/technologies/security/

Finora, il pacchetto API java.util.regex è il mio preferito perché mi ha impedito di dover reinventare la ruota in così tante occasioni quando si tratta di cercare e utilizzare pezzi di stringhe per vari scopi.

java.util è molto utile. Perché?

  • Collezioni. Molti di loro!
  • Classi di data e ora
  • Scanner di testo
  • Utilità di iniezione delle dipendenze (da Java 6)
  • Un thread timer
  • Numeri casuali
  • Il modello di osservatore è lì
  • Proprietà Java

java.util.jar - Aiuta a caricare file .jar in un caricatore di classi per i miei plugin dell'applicazione! Lo adoro.

java.util.regex

Ci sono altri pacchetti senza i quali non posso vivere, ma il pacchetto regex deve essere nel livello più alto di " maggiori aggiunte a java " - sicuramente proprio lì con le Collezioni.

Sono d'accordo con il commento di Reflection. di gran lunga la parte più utile / potente dell'API Java

Ripensando ai miei giorni di Java, l'API più divertente da usare era java.util.concurrent , semplicemente perché fornisce blocchi ben pensati e facili da usare per l'elaborazione parallela.

InheritableThreadLocal fino in fondo !!! Solo così tante opportunità di scrivere codice offuscato e la bobina di corda per impiccarti non sembra mai esaurirsi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top