Entrare in Guava

4

Quindi di recente ho iniziato a utilizzare Netty per le mie comunicazioni client / server di applicazioni e ho scoperto che mi piaceva l'idea di% ascoltabile Future s. Mi chiedevo perché non sapessi che Java fosse in grado di farlo, e, abbastanza sicuro, non poteva.

Dopo alcune ricerche mi sono reso conto che questa è una funzionalità fornita dagli strumenti di concorrenza di Guava, che mi ha fatto sfogliare la sua guida per l'utente. Sembra fantastico, ma ho alcune preoccupazioni:

  1. Ho già una discreta quantità di codice che utilizza la concorrenza JDK. Quanto sarà difficile migrare?
  2. Qual è il rischio di iniziare a diventare un "programmatore Guava" per così dire? Quanto sarà difficile rimbalzare avanti e indietro tra il fare le cose in modo Guava e il modo Java principale?
    • Quale potenziale danno potrebbe esserci se, in un progetto esistente, scrivo nuove classi con classi Guava senza eseguire la migrazione del resto del codice?
  3. C'è una buona guida per iniziare lentamente a utilizzare le funzionalità di Guava senza dover smettere di fare il mio vero lavoro per allenarmi per alcuni giorni / settimane?
  4. C'è qualcos'altro che dovrei sapere in anticipo che non ho già pensato?
posta durron597 23.04.2013 - 17:58
fonte

1 risposta

7

Penso che il problema di fondo che hai è che stai pensando a Guava come se fosse un intero framework o DSL (linguaggio specifico del dominio). Guava è un'altra libreria come Apache Commons in cui fornisce astrazioni comuni, strutture dati e metodi di convenienza complementari alle librerie JDK.

Risposte alle tue domande:

  1. Se il tuo codice è progettato bene, non dovrebbe essere difficile usare la libreria di concorrenza di Guava.
  2. Nessun rischio di essere un "programmatore Guava", come ho detto, Guava non è un linguaggio DSL o JVM (come Scala / Groovy) in cui si scrive in modo drammatico il codice in modo diverso.
  3. Oltre a Wiki, JavaDocs e PDF che trovi sul sito, troverai molti post sul blog sull'uso di Guava. Non conosco libri o pubblicazioni altrimenti disponibili. Non dovrebbe richiedere più di qualche giorno.
  4. Nessun.

L'unica eccezione che vedo sopra è che vuoi usare gli idiomi funzionali di Guava e usarlo come introduzione a Programmazione funzionale in Java. Poi ho potuto vedere uno spostamento di paradigma che si verifica in cui si scrive codice in modo diverso. In tal caso:

  1. Esiste un libro chiamato " Programmazione funzionale in Java "di Dean Wampler che parla di FP pre-Java-8. C'è un beta book pubblicato da PragProg che parla di FP usando le funzionalità di Java 8.
  2. Il wiki di Guava stesso ti avvisa di usare giudizi funzionali in modo giudizioso:

    Excessive use of Guava's functional programming idioms can lead to verbose, confusing, unreadable, and inefficient code. These are by far the most easily (and most commonly) abused parts of Guava, and when you go to preposterous lengths to make your code "a one-liner," the Guava team weeps.

  3.   
  Leggendo quanto sopra, scoprirai che FP (pre-Java-8) può essere molto complicato e prolisso (a causa della mancanza di funzioni di prima classe e di dover usare le classi interne). Credetemi, c'è del codice nella nostra base di codice che (ab) usa questi idiomi e il team si lamenta di tutto il tempo (come è difficile da leggere e capire), nonostante non abbia alcuna avversione per FP in generale.     
risposta data 23.04.2013 - 18:40
fonte

Leggi altre domande sui tag