---
title: Java 9
category: Java
tag:
- Java
---
**Java 9** 2017 9 21 Java 8 3 Java 9 Java `Stream` ......
[Archived OpenJDK General-Availability Releases](http://jdk.java.net/archive/) JDK https://openjdk.java.net/projects/jdk/
****
- [JEP 222: Java ](https://openjdk.java.net/jeps/222)
- [JEP 261: ](https://openjdk.java.net/jeps/261)
- [JEP 248G1 ](https://openjdk.java.net/jeps/248)
- [JEP 193: ](https://openjdk.java.net/jeps/193)
- [JEP 254](https://openjdk.java.net/jeps/254)
## 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. ......
##
[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
export 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. ](https://www.cnblogs.com/IcanFixIt/p/6947763.html)](http://www.cnblogs.com/IcanFixIt/p/6947763.html)
## G1
Java 8 Parallel Scavenge+Parallel Old Java 9, CMS **G1Garbage-First Garbage Collector**
G1 Java 7
##
`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`
## String
Java 8 `String` `char[]` Java 9 `String` `byte[]`
```java
public final class String implements java.io.Serializable,Comparable, CharSequence {
// @Stable
@Stable
private final byte[] value;
}
```
##
Java 9
```java
public interface MyInterface {
private void methodPrivate(){
}
}
```
## try-with-resources
Java 9 `try-with-resources`
```java
try (Scanner scanner = new Scanner(new File("testRead.txt"));
PrintWriter writer = new PrintWriter(new File("testWrite.txt"))) {
// omitted
}
```
Java 9 `try-with-resources` effectively-final
```java
final Scanner scanner = new Scanner(new File("testRead.txt"));
PrintWriter writer = new PrintWriter(new File("testWrite.txt"))
try (scanner;writer) {
// omitted
}
```
** effectively-final ** `final`
`writer` `final` effectively-final
## Stream & Optional
`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