---
title: Java 9
description: Java 9 jlink
category: Java
tag:
- Java
head:
- - meta
- name: keywords
content: Java 9,JDK9,,JPMS,jlink,, API
---
**Java 9** 2017 9 21 Java 8 3 Java 9 Java `Stream`
JDK 9 LTS JDK8JDK11JDK17JDK21
- [JEP 222: Java Shell Tool (JShell)](https://openjdk.org/jeps/222)
- [JEP 261: Module System ()](https://openjdk.org/jeps/261)
- [JEP 248: G1 Becomes the Default Garbage Collector (G1 )](https://openjdk.org/jeps/248)
- [JEP 254: Compact Strings ()](https://openjdk.org/jeps/254)
- [JEP 193: Variable Handles ()](https://openjdk.org/jeps/193)
JDK 8 JDK 25

## JEP 222: Java Shell Tool (JShell)
JShell Java 9 Java Python
JShell

**JShell **
1. Java "Hello World"
2. IDE IDEIDE
3.
**JShell **
1. JShell
2. JShell
3. JShell `1 + 1`
4.
## JEP 261: Module System ()
[Jigsaw Project](https://openjdk.java.net/projects/jigsaw/) Java
****
> A uniquely named, reusable group of related packages, as well as resources (such as images and XML files) and a module descriptor
`module-info.java`
jar `module-info.java`

JDK 94 Java **[jlink](http://openjdk.java.net/jeps/282) ** (Jlink Java 9 Java JRE) JDK Java
`exports`
```java
module my.module {
//exports
exports com.my.package.name;
}
module my.module {
//exportsto
exports com.my.package.name to com.specific.package;
}
```
Java 9
- [Project Jigsaw: Module System Quick-Start Guide](https://openjdk.java.net/projects/jigsaw/quick-start)
- [Java 9 Modules: part 1](https://stacktraceguru.com/java9/module-introduction)
- [Java 9 2. ](http://www.cnblogs.com/IcanFixIt/p/6947763.html)
## JEP 248: G1 Becomes the Default Garbage Collector (G1 )
Java 8 Parallel Scavenge+Parallel Old Java 9, CMS **G1Garbage-First Garbage Collector**
G1 Java 7
## JEP 193: Variable Handles ()
`MethodHandle` Java `java.lang.invoke.VarHandle` `java.lang.invoke.MethodHandles.Lookup` `VarHandle`
`VarHandle` `java.util.concurrent.atomic` `sun.misc.Unsafe` API
## API
API JEPJava Enhancement Proposal
JDK **JEP** JVM `List.of()` JDK **JBS (JDK Bug System)** Ticket
###
`List.of()``Set.of()``Map.of()` `Map.ofEntries()` Guava
```java
List.of("Java", "C++");
Set.of("Java", "C++");
Map.of("Java", 1, "C++", 2);
```
`of()` `java.lang.UnsupportedOperationException`
### Stream
`Stream` `ofNullable()``dropWhile()``takeWhile()` `iterate()`
Java 9 `ofNullable()` `Stream` `Stream` Java 8 `Stream`
```java
Stream stringStream = Stream.ofNullable("Java");
System.out.println(stringStream.count());// 1
Stream nullStream = Stream.ofNullable(null);
System.out.println(nullStream.count());//0
```
`takeWhile()` `Stream`
```java
List integerList = List.of(11, 33, 66, 8, 9, 13);
integerList.stream().takeWhile(x -> x < 50).forEach(System.out::println);// 11 33
```
`dropWhile()` `takeWhile()`
```java
List integerList2 = List.of(11, 33, 66, 8, 9, 13);
integerList2.stream().dropWhile(x -> x < 50).forEach(System.out::println);// 66 8 9 13
```
`iterate()` `Predicate` ()
```java
public static Stream iterate(final T seed, final UnaryOperator f) {
}
//
public static Stream iterate(T seed, Predicate