[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/backdiy/JavaGuide/main/docs/java/new-features/java9.md [Back]  [Original]

---
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 

![](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/java-guide-blog/image-20210816083417616.png)

**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`

![](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/java-guide-blog/module-structure.png)

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

Web Proxy Viewer  |  New URL  |  Original Page