On 01/05/2015 13:42, Jess Holle wrote: > Naively, looking at the Tomcat documentation and note the comparison > table there makes it appear that: > > 1. NIO2 offers everything NIO does > 2. NIO cannot offer true blocking IO, whereas NIO2 can > > If that's not true, then the documentation should be updated at least....
It depends how you define "true blocking IO". None of the three connectors in trunk provide blocking I/O via a single read or write call. For all of them you call read/write and then you need to call something else that blocks until the read/write has finished. Only BIO offered "true" blocking I/O in my view. I'll update the docs. Mark > > And, of course, NIO2 just sounds newer/better/fancier than NIO :-) > > On 5/1/2015 4:55 AM, Mark Thomas wrote: >> Next up on my list is the NIO2 connector. >> >> NIO and APR/native both use a polling approach to non-blocking I/O. You >> add the socket to the poller, tell it what operation (read/write) you >> want to perform and then you wait for the poller to tell you the socket >> is ready to perform that operation. >> >> NIO2 uses an asynchronous approach to non-blocking I/O. You perform the >> read/write and then wait to be told it has finished via either a Future >> or a CompletionHandler. >> >> Servlet 3.1 non-blocking I/O is closest to the polling style (you get a >> callback when you are allowed to read/write). >> >> WebSocket non-blocking I/O uses the asynchronous style. >> >> In short, regardless of the underlying approach to non-blocking I/O, we >> have to support JavaEE APIs that use both styles. Therefore there is no >> 'obvious' advantage for either NIO or NIO2. >> >> As far as I can tell, the performance of NIO and NIO2 are comparable. >> >> That raises the question why do we need both NIO and NIO2? And I don't >> have an answer to that. If I had to pick one, I'd pick NIO because: >> - it has been around longer and is more stable >> - it uses the same style as APR/native which may allow further >> refactoring to reduce duplication. >> >> So, should we drop one of NIO or NIO2 in Tomcat 9? If not, why not? If >> yes, which one? >> >> Mark >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org >> For additional commands, e-mail: dev-h...@tomcat.apache.org >> >> > > --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org