About the Author |
|
xiii | |
About the Technical Reviewer |
|
xv | |
|
|
1 | (6) |
|
|
1 | (1) |
|
|
2 | (2) |
|
|
2 | (1) |
|
|
2 | (2) |
|
|
4 | (1) |
|
|
4 | (1) |
|
|
4 | (1) |
|
|
4 | (1) |
|
|
5 | (1) |
|
|
6 | (1) |
|
|
6 | (1) |
|
Chapter 2 The Module System |
|
|
7 | (50) |
|
|
8 | (1) |
|
|
8 | (1) |
|
|
9 | (6) |
|
|
9 | (1) |
|
|
9 | (3) |
|
|
12 | (1) |
|
|
12 | (2) |
|
|
14 | (1) |
|
Opening Modules and Packages |
|
|
14 | (1) |
|
Working with Existing Code |
|
|
15 | (2) |
|
|
15 | (1) |
|
|
16 | (1) |
|
|
17 | (10) |
|
|
17 | (1) |
|
|
18 | (1) |
|
|
18 | (1) |
|
|
18 | (1) |
|
Limiting the Observable Modules |
|
|
19 | (1) |
|
Upgrading the Module Path |
|
|
19 | (1) |
|
Increasing Readability and Breaking Encapsulation |
|
|
19 | (1) |
|
|
20 | (1) |
|
|
21 | (3) |
|
|
24 | (1) |
|
|
24 | (3) |
|
|
27 | (19) |
|
|
27 | (1) |
|
|
28 | (3) |
|
|
31 | (3) |
|
|
34 | (5) |
|
|
39 | (3) |
|
|
42 | (1) |
|
|
43 | (1) |
|
|
43 | (3) |
|
|
46 | (3) |
|
|
46 | (1) |
|
|
47 | (2) |
|
|
49 | (1) |
|
|
49 | (2) |
|
|
51 | (5) |
|
Building the Project Using Java 9 |
|
|
51 | (1) |
|
|
51 | (1) |
|
|
52 | (4) |
|
|
56 | (1) |
|
|
57 | (10) |
|
|
58 | (1) |
|
|
58 | (1) |
|
|
59 | (1) |
|
|
59 | (6) |
|
|
59 | (1) |
|
|
60 | (1) |
|
|
61 | (1) |
|
|
61 | (1) |
|
|
61 | (1) |
|
|
62 | (1) |
|
|
62 | (1) |
|
|
62 | (1) |
|
|
63 | (1) |
|
|
63 | (1) |
|
|
63 | (1) |
|
|
64 | (1) |
|
|
64 | (1) |
|
|
64 | (1) |
|
|
65 | (1) |
|
|
65 | (1) |
|
|
65 | (1) |
|
|
65 | (1) |
|
|
65 | (2) |
|
Chapter 4 Collections, Stream, and Optional |
|
|
67 | (8) |
|
Factory Methods for Collections |
|
|
67 | (1) |
|
|
67 | (1) |
|
|
67 | (1) |
|
The Map.of() and Map.ofEntries() Methods |
|
|
68 | (1) |
|
|
68 | (1) |
|
|
68 | (1) |
|
|
69 | (1) |
|
|
69 | (1) |
|
|
69 | (2) |
|
|
69 | (1) |
|
|
70 | (1) |
|
|
70 | (1) |
|
|
71 | (1) |
|
IntStream, LongStream, and DoubleStream |
|
|
71 | (1) |
|
|
71 | (2) |
|
|
71 | (1) |
|
|
72 | (1) |
|
|
73 | (1) |
|
The ifPresentOrElse() Method |
|
|
73 | (1) |
|
|
73 | (1) |
|
|
74 | (1) |
|
|
74 | (1) |
|
Chapter 5 The Process API |
|
|
75 | (6) |
|
The ProcessHandle Interface |
|
|
75 | (2) |
|
|
77 | (1) |
|
Managing Long-Running Processes |
|
|
78 | (1) |
|
|
79 | (2) |
|
Chapter 6 The Platform Logging API and Service |
|
|
81 | (6) |
|
Default LoggerFinder Implementation |
|
|
82 | (1) |
|
Creating Custom LoggerFinder Implementations |
|
|
83 | (3) |
|
|
86 | (1) |
|
Chapter 7 Reactive Streams |
|
|
87 | (12) |
|
|
87 | (1) |
|
|
87 | (1) |
|
|
87 | (1) |
|
|
88 | (1) |
|
|
88 | (1) |
|
|
88 | (7) |
|
|
95 | (2) |
|
|
95 | (1) |
|
|
96 | (1) |
|
|
97 | (1) |
|
|
97 | (2) |
|
Chapter 8 Variable Handles |
|
|
99 | (10) |
|
Creating Variable Handles |
|
|
99 | (1) |
|
|
99 | (1) |
|
|
99 | (1) |
|
|
100 | (1) |
|
|
100 | (7) |
|
|
100 | (1) |
|
|
101 | (4) |
|
|
105 | (1) |
|
Byte[ ] and ByteBuffer Views |
|
|
106 | (1) |
|
|
107 | (1) |
|
|
107 | (2) |
|
Chapter 9 Enhanced Method Handles |
|
|
109 | (10) |
|
|
109 | (1) |
|
|
109 | (1) |
|
varHandlelnvoker and varHandleExactlnvoker |
|
|
110 | (1) |
|
|
110 | (1) |
|
|
111 | (1) |
|
|
111 | (5) |
|
|
111 | (2) |
|
|
113 | (1) |
|
|
114 | (1) |
|
whileLoop and doWhileLoop |
|
|
115 | (1) |
|
|
116 | (1) |
|
|
117 | (2) |
|
|
119 | (6) |
|
|
119 | (2) |
|
|
119 | (1) |
|
|
119 | (1) |
|
|
120 | (1) |
|
|
120 | (1) |
|
|
121 | (1) |
|
|
122 | (1) |
|
|
123 | (1) |
|
|
124 | (1) |
|
|
125 | (8) |
|
Getting the Nashorn Engine |
|
|
125 | (1) |
|
|
126 | (2) |
|
|
126 | (1) |
|
Binary and Octal Literals |
|
|
126 | (1) |
|
Iterators and for of Loops |
|
|
126 | (1) |
|
|
127 | (1) |
|
|
128 | (2) |
|
|
128 | (1) |
|
|
129 | (1) |
|
Analyzing Function Complexity |
|
|
130 | (1) |
|
|
131 | (2) |
|
|
133 | (6) |
|
|
133 | (1) |
|
The ObjectInputStream Filter |
|
|
134 | (3) |
|
|
137 | (2) |
|
|
139 | (4) |
|
|
139 | (1) |
|
|
139 | (2) |
|
Using PKCS12 as the Default Keystore |
|
|
141 | (1) |
|
|
141 | (2) |
|
Chapter 14 User Interface |
|
|
143 | (8) |
|
|
143 | (5) |
|
|
143 | (1) |
|
|
144 | (1) |
|
|
144 | (1) |
|
|
145 | (1) |
|
|
146 | (1) |
|
|
146 | (1) |
|
|
146 | (2) |
|
|
148 | (1) |
|
|
148 | (2) |
|
|
150 | (1) |
|
Deprecating the Applet API |
|
|
150 | (1) |
|
|
150 | (1) |
|
|
151 | (10) |
|
|
151 | (2) |
|
Tags, Levels, Decorations, and Output |
|
|
151 | (1) |
|
|
152 | (1) |
|
The Diagnostic Command VM.log |
|
|
153 | (1) |
|
|
154 | (1) |
|
Making G1 the Default Garbage Collector |
|
|
154 | (1) |
|
Deprecating the Concurrent Mark Sweep (CMS) Garbage Collector |
|
|
154 | (1) |
|
Removing Launch-Time JRE Version Selection |
|
|
154 | (1) |
|
|
155 | (2) |
|
Removal of the JVM TI hprof Agent |
|
|
157 | (1) |
|
|
157 | (1) |
|
Removal of Demos and Samples |
|
|
157 | (1) |
|
|
157 | (2) |
|
|
159 | (2) |
|
|
161 | (8) |
|
|
161 | (1) |
|
Private Interface Methods |
|
|
161 | (1) |
|
Resource References in try-with-resources |
|
|
161 | (1) |
|
|
162 | (1) |
|
|
162 | (2) |
|
|
164 | (1) |
|
|
165 | (1) |
|
UTF-8 Property Resource Bundles |
|
|
166 | (1) |
|
|
166 | (1) |
|
|
167 | (1) |
|
|
168 | (1) |
Index |
|
169 | |