Relativo a SO:
link
TCP, UDP e SCTP non sono flussi: sono protocolli di trasporto. Un flusso può essere implementato utilizzando uno qualsiasi di questi protocolli di trasporto, oppure può essere implementato utilizzando una named pipe, un buffer di memoria condiviso, una tecnologia MQ ...
Un flusso è un'astrazione che nasconde quel tipo di dettagli di basso livello e presenta il tuo programma con un meccanismo per trasmettere o ricevere alcune serie di oggetti o byte.
Un flusso è una soluzione per problemi legati alla comunicazione. Ciò può includere la comunicazione di rete, la comunicazione tra processi, la comunicazione tra thread e persino la comunicazione con un dispositivo o un file hardware.
Il termine reattivo si riferisce al Modello di programmazione reattiva , che si concentra su come per strutturare il codice responsabile della ricezione dei dati in modo asincrono.
Al livello più semplice, gli stream vengono in genere presentati a un destinatario tramite una sorta di buffer, spesso con un meccanismo di sicurezza del thread per garantire che la lettura / scrittura avvenga atomicamente.
Ricevere i dati da un flusso senza un'astrazione reattiva comporta in genere tecniche come "polling" (ispezione periodica) o il blocco di un thread e l'attesa per i dati - Spesso la soluzione risulta nella creazione di un'astrazione reattiva attorno a quel flusso.
Un flusso reattivo può usare un modello diverso come un segnale di evento, o può essere un'astrazione attorno a un sondaggio e / o "thread in attesa". Il termine "reattivo" implica che i dati siano ricevuti in modo asincrono (nota: ciò non significa necessariamente simultaneamente) - Un'astrazione reattiva di solito richiede l'associazione di un callback, un osservatore o un gestore di eventi per gestire i dati in entrata da quel flusso.
Un flusso può essere o non essere responsabile per l'ordine, consegna affidabile, buffering, ecc; si tratta di preoccupazioni generalmente legate ai dettagli di implementazione del flusso (o forse del trasporto sottostante).
Su una nota specifica sulla libreria Java Reactive Streams; il concetto è chiaramente niente di nuovo. Gli stream reattivi in Java sono sempre stati possibili.
Il razionale per la nuova libreria di Java è spiegato nella parte superiore di questa pagina: link
Reactive Streams is an initiative to provide a standard for asynchronous stream processing with non-blocking back pressure.
In altre parole, sembra che Java stia tentando di fornire un insieme di interfacce e flussi di lavoro standard per i flussi reattivi; che (presumo, non sono un programmatore Java ..) probabilmente significa che il supporto attuale per le astrazioni del flusso reattivo è incoerente e frammentato.
In termini semplici, sembra che la libreria Reactive Streams stia tentando di risolvere un altro problema importante per i programmatori Java - consistenza .