RFR: JDK-8189611: JarFile versioned stream and real name support

Xueming Shen xueming.shen at oracle.com
Mon Nov 20 18:27:28 UTC 2017

Hi Alan,

Here is the updated webrev with

(1) to move JarFile.getRealName into JarEntry
(2) to hide ZipFile.entryNameStream() from the public
(3) to reword the JarFile.versionedStream() to scope the "latest versined"



On 11/20/17, 7:27 AM, Alan Bateman wrote:
> On 17/11/2017 16:53, Xueming Shen wrote:
>> :
>>> 3. Is ZipFile.entryNameStream really needed? Just asking because 
>>> zf.stream().map(ZipEntry::getName) is possible today.
>> It's not a "must" for sure. The motivation behind this is that my 
>> observation of most normal use scenario
>> inside JDK is that only the "name" info is interested/collect/used. 
>> The use pattern usually is
>> zf.stream().map(ZipEntry::getName)
>> same for the old Enumeration case, only the "name" is used and the 
>> "entry" object is thrown away mostly.
>> Other than the memory consumption (showed in those two snapshots), 
>> it's also relatively costly to create
>> the ZipEntry especially its "esxdostime" calculation. The jmh numbers 
>> from a simple benchmark test
>> suggests the entryNameStream is about 15-20% faster. So, the only 
>> reason it's there is for better
>> performance.
> I can believe that it is faster but it does loose the ability to 
> filter (it requires checking for a trailing "/" to filter out 
> directories for example). I guess I don't object to adding this but it 
> feels like it an opportunity beyond JDK-8189611.
> -Alan

More information about the core-libs-dev mailing list