I have for the most part finished the intensive work on jNetPcap, a sister project. Over the next few weeks I will be working on jNetStream 3.0.
The plan is to drop NPL and large part, if not entirely, the current packet implementation in jNetStream. The capture file support, indexing, iterators and majority of the API stay untouched.
The packet implementation itself has to be changed drastically to take advantage of jNetPcap's native capabilities. jNetStream relies heavily on ByteBuffer class, whereas jNetPcap provides a new buffer class called JBuffer. JBuffer is, like a direct ByteBuffer, accessor to native memory. JBuffer is more efficient and flexible then JRE's ByteBuffer implementation. jNetPcap's packet's are subclasses of JBuffer which ranges over entire packet buffer length, providing direct access to raw data. And so forth. One interesting property that jnetpcap brings is that ByteBuffer objects are interchangeable with JBuffer ones without copies. Unfortunately the reverse is not true, as ByteBuffer doesn't allow peering native memory like JBuffer does.
jNetPcap brings:
So stay tuned for more updates soon.