MEJORAS QUE TRAJO CONSIGO EL J2SE1.4: NIO AVANZADO(II)

Java 2 Platform, Standard Edition (J2SE)

Brevemente, comento algunas características avanzadas de NIO:

1. MappedByteBuffers: permite asociar una porción del fichero en un buffer de memoria.
Es importante anotar que sólo carga en memoria bajo demanda -sólo lo que se está leyendo-.

2. E/S No Bloqueante:

ByteBuffer buffer = ByteBuffer.allocate( bufferSize );
Socket newSocket = ss.accept();
newSocket.configureBlocking( false );
SocketChannel sch = socket.getChannel();
buffer.clear();
sch.read( buffer );

La llamada a read devuelve un buffer vacío si no hay nada que leer, en lugar de quedarse esperando hasta que llegue el primer byte.


3. Multiplexación

Para realizar E/S multiplexada, en Java hasta ahora no quedaba más remedio que utilizar polling. Sin embargo, de los viejos tiempos de C nos llega el "selector": es un objeto que monitoriza un conjunto de canales, avisando cuando alguno tiene datos de entrada.
El método Selector.select() se queda bloqueado hasta que alguno de los canales está preparado:
while (true) {
selector.select();
// deal with new input ...
}


Interfaces de Red

La clase NetworkInterface provee acceso a objetos de nivel de sistema operativo que representan las interfaces.




Comments

Anonymous said…
Buenas Justo... Ando trasteando en TID construyendo un MOM en Java similar al que realicé en C++ y mira por donde buscando unas cosas de java.nio me he topado con tu blog... Veo que sigues teniendo tiempo para todo, curro, blog's, IEEE,... No sé como lo consigues.

Pues eso, que con el java.nio, un poco de patrones y algo de herencia estoy haciendo un juguete que intentaré que mis jefes y demás compañeros de trabajo le pierdan el miedo que le tienen a las prestaciones en Java y se animen a desarrollar cosas sobre Java.