On Jun 18, 2015, at 2:08 AM, Jim Laskey (Oracle) <james.las...@oracle.com> wrote:
> https://bugs.openjdk.java.net/browse/JDK-8080511 > > This is an long overdue refresh of the jimage support in the JDK9-dev repo. > This includes native support for reading jimage files, improved jrt-fs (java > runtime file system) support for retrieving modules and packages from the > runtime, and improved performance for langtools in the presence of jrt-fs. > > http://cr.openjdk.java.net/~jlaskey/hs-rt-jimage/webrev-top > <http://cr.openjdk.java.net/~jlaskey/hs-rt-jimage/webrev-top> > http://cr.openjdk.java.net/~jlaskey/hs-rt-jimage/webrev-jdk > <http://cr.openjdk.java.net/~jlaskey/hs-rt-jimage/webrev-jdk> I eyeballed the JDK changes. Just two thing: make/src/classes/build/tools/module/ModuleArchive.java 90 @Override 91 public Stream<Entry> entries() { 92 List<Entry> entries = new ArrayList<>(); 93 try { 94 if (classes != null) 95 Files.walk(classes) 96 .sorted() 97 .filter(p -> !Files.isDirectory(p) 98 && !classes.relativize(p).toString().startsWith("_the.") 99 && !classes.relativize(p).toString().equals("javac_state")) 100 .map(p -> toEntry(p, classes, EntryType.CLASS_OR_RESOURCE)) 101 .forEach(entries::add); 102 if (cmds != null) 103 Files.walk(cmds) 104 .filter(p -> !Files.isDirectory(p)) 105 .map(p -> toEntry(p, cmds, EntryType.NATIVE_CMD)) 106 .forEach(entries::add); 107 if (libs != null) 108 Files.walk(libs) 109 .filter(p -> !Files.isDirectory(p)) 110 .map(p -> toEntry(p, libs, EntryType.NATIVE_LIB)) 111 .forEach(entries::add); 112 if (configs != null) 113 Files.walk(configs) 114 .filter(p -> !Files.isDirectory(p)) 115 .map(p -> toEntry(p, configs, EntryType.CONFIG)) 116 .forEach(entries::add); 117 } catch (IOException ioe) { 118 throw new UncheckedIOException(ioe); 119 } 120 return entries.stream(); 121 } You can use collect(toList()) In general the contract for Archive.entries probably has to say the stream needs to be closed after use since it might cover lazy I/O based resources, so callers will need to use a try-with-resources block. Paul. > http://cr.openjdk.java.net/~jlaskey/hs-rt-jimage/webrev-hotspot > <http://cr.openjdk.java.net/~jlaskey/hs-rt-jimage/webrev-hotspot> > http://cr.openjdk.java.net/~jlaskey/hs-rt-jimage/webrev-langtools > <http://cr.openjdk.java.net/~jlaskey/hs-rt-jimage/webrev-langtools> > > > Details: > > - jrt-fs provides access, via the nio FileSystem API, to the classes in a > .jimage file, organized by module or by package. > - Shared code for jimage support converted to native. Currently residing in > hotspot, but will migrate to it’s own jdk library > https://bugs.openjdk.java.net/browse/JDK-8087181 > <https://bugs.openjdk.java.net/browse/JDK-8087181> > - A new archive abstraction for class/resource sources. > - java based implementation layer for jimage reading to allow backport to > JDK8 (jrt-fs.jar - IDE support.) > - JNI support for jimage into hotspot. > - White box tests written to exercise native jimage support. >