際際滷

際際滷Share a Scribd company logo
Java 9 - 仆亠 仂仍从仂 仄仂亟仍亳
于舒仆 仍仂于

1
@JohnWings
ivankrylov.java@gmail.com
 亠仄 弍亟亠仄 亞仂于仂亳
 于舒 仍舒亶亟舒 仗仂 仆舒 (Azul Systems)

 亰仄亠仆亠仆亳 于 磶从亠

 仂于亠 舒弍亳仆亠 仄亠仂亟 亟仍
从仂仍仍亠从亳亶

 仂于仂亠 于 Stream API

 Spin Loop Hints

 Process API

 HTTP/2 

 JVM changes

 Stack Walking API

 弍亰仂 仗仂亳 JEP仂于

 JShell
2
Ivan Krylov
Zing: 亳舒仍仆舒 Java-仄舒亳仆舒 亟仍 从仗仆仂亞仂 弍亳亰仆亠舒
 仍舒于仆舒 亠仍 - 仍亠仆亳亠 仗仂从舒亰舒亠仍亠亶 仆从亳仂仆亳仂于舒仆亳 于亳舒仍仆仂亶
Java-仄舒亳仆 亟仍 仗亠亟仗亳亳亶
 仂于亶 JIT 从仂仄仗亳仍仂 仆舒 弍舒亰亠 LLVM
 弌弍仂从舒 仄仂舒 弍仂仍亠 仆亠 于仍亳磳 仆舒 仗仂亳亰于仂亟亳亠仍仆仂 仗亳仍仂亢亠仆亳亶
 亠亠仆仆舒 仗仂弍仍亠仄舒 "仗仂亞亠于舒" 从亳
 亠亳亰仄亠仆仆舒 仗仂亳亰于仂亟亳亠仍仆仂 - 仆亠 仗仂仂 弍仂, 舒 弌 弍仂
 丿亳仂舒亶舒 亠舒 仗亳仄亠仆亠仆亳:
 仂 亳仆亠舒从亳于仆 仗亳仍仂亢亠仆亳亶 亟仂 亰舒亟舒, 从亳亳仆 从仂 于亠仄亠仆亳 仂从仍亳从舒
 仂 仄亳从仂亠于亳仂于 亟仂 仗亳仍仂亢亠仆亳亶, 亠弍ム亳 弍仂仍亳 仂弍亠仄仂于 仗舒仄亳
 丕舒仆磳 仆亠仂弍仂亟亳仄仂 于 弍仂仍亳仆于亠 亳亰于亠仆 "从仂仍亠亶" 于 于舒亠仄
从仂亟亠
3
Zulu (Embedded): 仂亞亟舒 仆亢仆 亠亠仆亳 亟仍 于仂亠仆仆 亳亠仄
 100% 仂从亶 从仂亟 - 亠仆仂仍仂亞亳, 仂仆仂于舒仆仆舒 仆舒 OpenJDK
 弌亠亳亳亳仂于舒仆舒 仆舒 仂于仄亠亳仄仂 亳 仂仂于亠于亳亠 Java SE
 仂从舒亰舒亠仍亳 仆从亳仂仆亳仂于舒仆亳, 亳亟亠仆亳仆亠 OpenJDK 亳
Oracle Java SE
 仂从仂从仍舒仆舒 仗仂亟亟亠亢从舒
 亠仍亳亰舒亳 亟仍 Linux x86, ARM32, ARM64, PPC32, MIPS, 舒
舒从亢亠 Windows 亳 Mac OS
4
亳亠仆亳仂于仂仆仂亠
舒仗亳舒仆亳亠 于仂亟舒 Java 9Featurecomplete
ZeroBugBounce
Rampdownphase2
FinalReleaseCandidate
舒亶16
RampdownStartAllTestsRun
GeneralAvailability
亊仆于17
个亠于17
个亠于17
舒17
ミ姿17
27ミ姿17
5
Ext.Featurecomplete
亠从16
6
仂仍仂仂于舒仆亳亠 仗仂 JSR #376
7
9
interface I {
private I foo() { return null; } // OK.
void foo(int x); // OK.
private void foo(String s); 
// Error: private method must declare body.
private abstract void foo(int i, int j);
// Error: private & abstract: bad combo.
}
亳于舒仆亠 仄亠仂亟 于 亳仆亠亠亶舒
亳于舒仆亠 仄亠仂亟 于 亳仆亠亠亶舒
13
public interface II {
private void log(int x, int y, int z) {
System.out.println("x="+x+" y="+y+" z="+z);
}
default int sum(int x, int y) {
log(x,y,x+y);
return x+y;
}
default int mul(int x, int y) {
log(x,y,x*y);
return x*y;
}
}
E鍖ectively-鍖nal 仗亠亠仄亠仆仆亠 
于 try-with-resources 于舒亢亠仆亳
14
public static void main(String... args) {
FileReader f = new FileReader("test.txt");
BufferedReader br = new BufferedReader(fr);
try (br) {
// do something
} catch (Exception ex) {
}
}
public static void main(String... args) {
FileReader f = new FileReader(test.txt");
try (br = new BufferedReader(fr)) {
// do something
} catch (Exception ex) {
}
}
仗仂仍亰仂于舒仆亳亠 @SafeVarargs
于 private 仄亠仂亟舒
15
class VarargsFinalOnly {
@SafeVarargs void m(List<String>... args) { }
}
 Java 8
./TypeInferrenceTest.java:7: error: cannot infer
type arguments for HashMap<K,V>
new HashMap<>()
^
reason: cannot use '<>' with anonymous inner classes
where K,V are type-variables:
K extends Object declared in class HashMap
V extends Object declared in class HashMap
1 error
Diamond  舒仆仂仆亳仄仆仄亳 从仍舒舒仄亳
16
class TypeInferrenceTest {
Map<String, String> map =
new HashMap<> ()
{
{
map.put("key", "value");
}
};
}
舒仗亠 仆舒 亳仗仂仍亰仂于舒仆亳亠 _ 于 亳仄亠仆舒
17
// -source 8:
// warning: as of release 9, '_' is a keyword,
// and may not be used as an identifier
// -source 9:
// error: as of release 9, '_' is a keyword,
// and may not be used as an identifier
class UnderscoreAsIdentifierWarning {
String _ = null;
}
亞亳亠 仂弍仆仂于仍亠仆亳 磶从舒 (?)
舒亟仂亠仍仂 仗亳舒 亳仄 亳仗舒 于 亟亠从仍舒舒亳亳 仗亠亠仄亠仆仆仂亶?
18
var list = new ArrayList<String>();
JEP-286 Local-Variable Type Inference. 仂从舒 仂 仂仍从仂 从舒仆亟亳亟舒
var result = processNewCustomerAdded();
个舒弍亳仆亠 仄亠仂亟 亟仍 从仂仍仍亠从亳亶
弌仂亰亟舒仆亳亠 仆亠亳亰仄亠仆仆 从仂仆亠亶仆亠仂于
19
Set<String> set = new HashSet<>();
set.add("a");
set.add("b");
set = Collections.unmodi鍖ableSet(set);
Set<String> set = Collections.unmodi鍖ableSet(
new HashSet<>(Arrays.asList("a", "b")));
Set<String> set = Collections.unmodi鍖ableSet(
new HashSet<String>() {{
add("a");
add("b");
}});
Set<String> set = Collections.unmodi鍖ableSet(
Stream.of("a", b").collect(toSet())
);
Set<String> set = Set.of("a", "b");
个舒弍亳仆亠 仄亠仂亟 亟仍 从仂仍仍亠从亳亶
20
 Set.of(a, b);
 List.of(a, b);
 Map.of(k1, v1);
 Map.of(k1, v1, k2, v2);
 Map.of(k1, v1, k2, v2, k3, v3);
 Map.ofEntries(entry(k1, v1), entry(k2, v2), .. entry (kn, vn));
仂于仂亠 于 Stream API (1)
22
Stream::takeWhile
while (predicate_on_stream_element) { 
<keep processing this ordered stream>
};
Stream.of(3, 2, 1, 0, -1, 0, 1, 2, 3)
.takeWhile(s -> s > 0)
.forEach(System.out::println);
3
2
1
仂于仂亠 于 Stream API (2)
23
Stream::dropWhile
while (predicate_on_stream_element) {
<skip element of this ordered stream>
};
Stream.of(3, 2, 1, 0, -1, 0, 1, 2, 3)
.dropWhile(s -> s > 0)
.forEach(System.out::println);
0
-1
0
1
2
3
仂于仂亠 于 Stream API (3)
24
 Stream::Iterate  仗亠亟亳从舒仂仄
Stream.iterate(3, i -> i > 0, i -> i-1)
.forEach(System.out::println);
3
2
1
于亠亳 亟仍 Java 8:
Stream.iterate(3, i -> i-1)
.limit(3)
.forEach(System.out::println);
Stream API changes (4)
25
Stream::ofNullable
个舒从仂亳 亟仍 仂亟仆仂亞仂 仆亠仆仍亠于仂亞仂 仍亠仄亠仆舒
long a = Stream.ofNullable(1).count();
long b = Stream.ofNullable(null).count();
System.out.println(a);
System.out.println(b);
1
0
Spin Loop Hint (JEP-285)
 丶亠仍: latency (亳 仗仂亳亰于仂亟亳亠仍仆仂)
 亠 API:

 亠仂亟 j.l.Thread.onSpinWait()
 舒 x86 亳仗仂仍亰亠 亳仆从亳 pause
 仗仂仍亰亠 于 JSR 166 亟仍 JDK9

 java/util/concurrent/locks/StampedLock.java

 java/util/concurrent/Phaser.java

 java/util/concurrent/SynchronousQueue.java
class EventHandler {
volatile boolean eventNoti鍖cationNotReceived;
void waitForEventAndHandleIt() {
while ( eventNoti鍖cationNotReceived ) {
java.lang.Thread.onSpinWait();
}
readAndProcessEvent();
}
void readAndProcessEvent() {
// Read event from some source and process it
. . .
}
}
26
Producer/Consumer and SLH
27
仂亟亟亠亢从舒 SLH 于 Idea
28
Spin Loop Hint - source level
仂于仄亠亳仄仂
 仂仗亳仄, 亠 从仂亟, 仂弍亳舒ム亳亶 8-从仂亶 

 仗仂仍亰亶亠 Agrona library

 亳仍亳 仗仂亟仄仂亳亠 于 java/org/agrona/hints/ThreadHints.java 

 仂亟亟亠亢从舒, 仆舒亳仆舒  Java 7
29
https://github.com/real-logic/Agrona/blob/master/src/main/java/org/agrona/hints/ThreadHints.java
仂亟 亟仍 舒亰仆 于亠亳亶 Java
 亳舒 于亠 仂仍从仂 仗仂亟 舒仄亶 舒亶 java

 舒亰仆亠 舒亳舒从

 丐仂仍亠 jar 舒亳于 (仆舒亳仆舒  9)
Multi-Release JARs (JEP-238)
31

仂亟 亟仍 JRE 于亠亳亳 仄亠仆亠 9
仂亟 亟仍 JRE 于亠亳亳 9
仂亟 亟仍 JRE 于亠亳亳 10
MANIFEST.MF: Multi-Release: true
<root>/META-INF/versions/ ..
 https://github.com/ivankrylov/onSpinWaitMultiReleaseJar

 onSpinWait Wrapper

 javac + make 

 http://in.relation.to/2017/02/13/building-multi-release-jars-with-maven/

 Get pid of jvm

 Maven Antrun + resources + maven-jar-plugin

 http://word-bits.鍖urg.com/multrelease-jars/
亳仄亠 Multi-Release JARs
32
Garbage First 于从仍ム亠仆 仗仂 仄仂仍舒仆亳
 弌舒仄亶 仂于亠仄亠仆仆亶 GC 于 Hotspot

 亠亞亳仂仆舒仍仆亶 仗舒舒仍仍亠仍仆亶 仂亟仆仂于亠仄亠仆仆亶 从仂仍仍亠从仂

 亠亟从舒亰亠仄亠 仗舒亰 亳 于仂从舒 仗仂亳亰于仂亟亳亠仍仆仂!

 仂 仄仂仍舒仆亳 => 亳弍从亳 于 GC 仆舒仂亟 弍亠亠
33
Garbage First 于从仍ム亠仆 仗仂 仄仂仍舒仆亳
 亅亞仂仆仂仄亳从舒 舒弍仂舒亠 仗仂-亟亞仂仄. 仂亞
仗仂磦亳 仂亳弍从亳 于 亳仆仂仆亳亰舒亳亳
 仍亳 (亠(?)) 仆亠仂于仄亠亳仄仂亳  G1 于 Cassandra,
Elasticsearch, Lucene, 亳 .仗,.
 (亳ミ姿 2015): https://groups.google.com/forum/#!topic/
mechanical-sympathy/JxsuVtIIOaY
34
亠亠亢亳 仄亠仆 default GC, 仆亠 亠 仂仆
 仍亳 亟仂 亳 仗仂 于舒 舒亳于舒仍亳 仆舒仂亶从亳 GC 仗仂
仄仂仍舒仆亳 

 亰舒仗舒亳亠 亟舒仆仆仄亳 亞仂仆仂仄亳从亳 亟仍 于舒亠亞仂 仗亳仍仂亢亠仆亳 亳
亠亟 于仆亠亟亠仆亳 (-XX:+PrintFlagsFinal)

 仗仂仗亳亳亠 亳 于 亟亠仗仍仂亶仄亠仆 从亳仗舒
 仍亳 于 亳 舒仆亠亠 磦仆仂 于弍亳舒仍亳 GC 亳 仍舒亞亳 GC

 亳亠亞仂 仆亠 亳亰仄亠仆亳, 舒亠 从仂仍仍亠从仂 仆亠 亳亠亰仆
 丐亠亳亶亠  G1. 亠 亟仂亢亳亟舒 Java 9.
35
丱仂仂亳亶 仗仂于仂亟 亰仆舒 仗仂弍仂仍亠 仗仂 GC
 亅从仗亠亳仄亠仆亳亶亠  G1

 仍舒于仆仂亠 - 仗仂仆亳仄舒 仂仆仂于仆亠 仗亳仆亳仗 舒弍仂 GC

 亠亢亟亠 于亠亞仂 - 仄亠亳从亳, 从仂仂仄亳 仂亠仆亳于舒ム 舒仍亞仂亳仄 GC

 丼仂 亠亠 仗仂亳舒: http://www.infoq.com/minibooks/java-garbage-
collection
36
亞亳亠 亳亰仄亠仆亠仆亳 于 GC
 Deprecate CMS

 Deprecate - 亰仆舒亳 亰舒仗亠亳, 仆仂 于 弍亟亠仄 (仗仂仍亠 9从亳)

 Shenandoah GC (JEP-189)

 亠于亶 OpenJDK GC 仆亠 仂 舒从仍舒

 弌仂亰亟舒仆亳亠 GC 亳仆亠亠亶舒

 https://bugs.openjdk.java.net/browse/JDK-8163329
37
弍仆仂于仍亠仆亳亠 Process API
 JEP 102: Process API Updates

 仂于仂亠:

 仂仍亳 pid 于仂亠亶 JVM

 仂仍亳 仗亳仂从 仗仂亠仂于
亳亠仄

 舒弍仂舒  亟亠亠于礆亳 仗仂亠仂于

 supportsNormalTermination() ? 
Source: http://blog.takipi.com/java-9-the-ultimate-feature-list/ 38
亳仄亠 Process API
Source: http://blog.takipi.com/java-9-the-ultimate-feature-list/ 39
Process proc = Runtime.getRuntime()
.exec(new String[]{"/bin/sh",
"-c", "echo $PPID"});
if (proc.waitFor()==0) {
InputStream in = proc.getInputStream();
int available = in.available();
byte[] outputBytes = new byte[available];
in.read(outputBytes);
String pid = new String(outputBytes);
System.out.println("Your pid is " + pid)
}
System.out.println("Your pid is " 
+ ProcessHandle.current().getPid());
40
丕仆亳亳从舒亳 JVM/GC 仍仂亞亞亳仆亞舒
 丕仆亳亳从舒亳 仗仂 于亠仄 仗仂亟亳亠仄舒仄 jvm

 6 仂于仆亠亶 + 亞亳 

 于仂亟 于 stdout / stderr / 舒亶仍 / 亰舒亳从仍亠仆仆亶 舒亶仍 

 仂弍仂仂仍亳 仗仂弍仍亠仄 仆亠从仂亠从仆仂亞仂 于于仂亟舒 仍仂亞仂于

 11 亟亠从仂舒仂仂于
java -Xlog:help
41
弌仄亠仆舒 仍仂亞亞亳仆亞 仂仗亳亶
-Xlog:classinit
-Xlog:classloaderdata
-Xlog:defaultmethods
-Xlog:itables
-Xlog:monitormismatch
-Xlog:safepoint
-Xlog:startuptime
-Xlog:vmoperation
-Xlog:vtables
-Xlog:verification
...
-XX:+TraceClassInitialization
-XX:+TraceClassLoaderData
-XX:+TraceDefaultMethods
-XX:+TraceItables
-XX:+TraceMonitorMismatch
-XX:+TraceSafepoint
-XX:+TraceStartupTime
-XX:+TraceVMOperation
-XX:+PrintVtables
-XX:+VerboseVerification
...
42
仂 仆亠 于亠 仂仗亳亳 仍亳
-XX:+PrintDeoptimizationDetails
-XX:+PrintAOT
-XX:+ThreadPriorityVerbose
-XX:+PrintTieredEvents
-XX:+PrintConcurrentLocks
-XX:+PrintSharedSpaces
-XX:+PrintSharedArchiveAndExit
-XX:+PrintSharedDictionary
-XX:+PrintMethodHandleStubs
-XX:+PrintVMQWaitTime
...
HTTP/2 亠亞仂亟仆
43
HTTP -> TCP
44
 HTTP 0.9: The One-Line Protocol (1989)

 HTTP/1.0 (1996)

 HTTP/1.1: Internet Standard (1997)

 Keep alive; chunk encodings; byte-
range requests, additional caching
mechanisms, transfer encodings, and
request pipelining

 HTTP/2.0 (since 2012)
Ref: https://hpbn.co/brief-history-of-http/
45
https://speakerdeck.com/vietj/2-2
HTTP/2. Multiplexing
 227: Unicode 7.0
  & 267: Unicode 8.0
Unicode 于 Java 9
46
弍亰仂 JEP-仂于. 舒亳从舒
258: HarfBuzz Font-Layout Engine

263: HiDPI Graphics on Windows and Linux

265: Marlin Graphics Renderer

262: TIFF Image I/O

257: Update JavaFX/Media to Newer Version of GStreamer (1.4.4)

251: Multi-Resolution Images
53
Stack walking API
 仍仂: Throwable::getStackTrace 亳 Thread::getStackTrace

StackTraceElement[] stack = Thread.currentThread().getStackTrace();
 弌舒仍仂:

StackFrame[] stack =new StackWalker().walk((s) ->
s.collect(Collectors.toArray()));
 仂于亶 从仍舒 StackWalker
54
弍亰仂 JEP-仂于.
仂亳亰于仂亟亳亠仍仆仂
197: Segmented Code Cache
165: Compiler Control

295: Ahead-of-Time Compilation

243: Java-Level JVM Compiler
Interface 

246: Leverage CPU Instructions for
GHASH and RSA

254: Compact Strings

280: Indify String Concatenation

250: Store Interned Strings in CDS
Archives

143: Improve Contended Locking

266: More Concurrency Updates
56
弍亰仂 JEP-仂于. 亠亰仂仗舒仆仂
 219: Datagram Transport Layer Security (DTLS)

 229: Create PKCS12 Keystores by Default

 244: TLS Application-Layer Protocol Negotiation Extension

 249: OCSP Stapling for TLS
64
弍亰仂 JEP-仂于. 丼仂 弍亠?
 231: Remove Launch-Time JRE
Version Selection
 240: Remove the JVM TI hprof
Agent
 241: Remove the jhat Tool
65
 仂仍亠亟于亳
仄仂亟仍仆仂亳 (JEP - 261)

 -Xbootclasspath
 -Xbootclasspath/p
 system property
sun.boot.class.path
JShell
 舒亰于亳于舒(亠/仍) 于 舒仄从舒
仗仂亠从舒 Kulla 

 仂亰于仂仍磳 仗仂仗仂弍仂于舒
亳仆舒从亳 弍亠亰 仆舒仗亳舒仆亳
亰舒从仂仆亠仆仆仂亶 仗仂亞舒仄仄

 仂仄仂亞舒亠 仂弍舒 磶从 Java
class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
66
?

jdk9/bin/jshell
67
Jshell Demo
68
Jshell use cases
Currency API (JSR-354)
亠 于仂亶亟亠 于 Java 9, 舒亰于亳于舒亠 仂亟亠仍仆仂
69
弌仗舒亳弍仂

亠仄 于仂仗仂仂于
亳 仂于亠仂于
@JohnWings
70
@
Deprecate finalize
 Deprecate Object.finalize with forRemoval=false
 Problem - objects resurrection
 Alternatives
 PhantomReference
 java.lang.ref.Cleaner (since 9)
 https://stuartmarks.wordpress.com/2017/04/17/deprecation-of-object-
鍖nalize/
71

More Related Content

What's hot (20)

仂亟亳亶 仄亳从 亳亰 Selenium 亳 TestNG- 亠亞亠亳仂仆仆仂亠 亠亳仂于舒仆亳亠 从舒仄亳 舒亰舒弍仂...
仂亟亳亶 仄亳从 亳亰 Selenium 亳 TestNG- 亠亞亠亳仂仆仆仂亠 亠亳仂于舒仆亳亠 从舒仄亳 舒亰舒弍仂...仂亟亳亶 仄亳从 亳亰 Selenium 亳 TestNG- 亠亞亠亳仂仆仆仂亠 亠亳仂于舒仆亳亠 从舒仄亳 舒亰舒弍仂...
仂亟亳亶 仄亳从 亳亰 Selenium 亳 TestNG- 亠亞亠亳仂仆仆仂亠 亠亳仂于舒仆亳亠 从舒仄亳 舒亰舒弍仂...
Andrey Rebrov
JPoint 2016 - Bytecode
JPoint 2016 - BytecodeJPoint 2016 - Bytecode
JPoint 2016 - Bytecode
Anton Arhipov
Joker 2016 - Bytecode 101
Joker 2016 - Bytecode 101Joker 2016 - Bytecode 101
Joker 2016 - Bytecode 101
Anton Arhipov
亳亞仂亳亶 亠仄亠仆从仂 亳仆仂仆仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 亳 仂仗仂亞舒仄仄
亳亞仂亳亶 亠仄亠仆从仂  亳仆仂仆仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 亳 仂仗仂亞舒仄仄亳亞仂亳亶 亠仄亠仆从仂  亳仆仂仆仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 亳 仂仗仂亞舒仄仄
亳亞仂亳亶 亠仄亠仆从仂 亳仆仂仆仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 亳 仂仗仂亞舒仄仄
Yandex
亳仍仍亠-亳舒 磶从舒 C# 从仂仆从亳 async/await
亳仍仍亠-亳舒 磶从舒 C#  从仂仆从亳 async/await亳仍仍亠-亳舒 磶从舒 C#  从仂仆从亳 async/await
亳仍仍亠-亳舒 磶从舒 C# 从仂仆从亳 async/await
Byndyusoft
舒从亳从舒 Lock-free. RealTime-亠于亠
舒从亳从舒 Lock-free. RealTime-亠于亠舒从亳从舒 Lock-free. RealTime-亠于亠
舒从亳从舒 Lock-free. RealTime-亠于亠
Platonov Sergey
仗仂仍亰仂于舒仆亳亠 Open Source 亳仆仄亠仆仂于 亟仍 舒于仂仄舒亳亰舒亳亳 亠亳仂于舒仆亳
仗仂仍亰仂于舒仆亳亠 Open Source 亳仆仄亠仆仂于 亟仍 舒于仂仄舒亳亰舒亳亳 亠亳仂于舒仆亳仗仂仍亰仂于舒仆亳亠 Open Source 亳仆仄亠仆仂于 亟仍 舒于仂仄舒亳亰舒亳亳 亠亳仂于舒仆亳
仗仂仍亰仂于舒仆亳亠 Open Source 亳仆仄亠仆仂于 亟仍 舒于仂仄舒亳亰舒亳亳 亠亳仂于舒仆亳
SQALab
亠于舒亠仄 从仂仂仆亠 仍亳仄亳 Angular 2
亠于舒亠仄 从仂仂仆亠 仍亳仄亳  Angular 2亠于舒亠仄 从仂仂仆亠 仍亳仄亳  Angular 2
亠于舒亠仄 从仂仂仆亠 仍亳仄亳 Angular 2
Oleksii Okhrymenko
舒从亳从舒 亳仗仂仍亰仂于舒仆亳 Dependency Injection
舒从亳从舒 亳仗仂仍亰仂于舒仆亳 Dependency Injection舒从亳从舒 亳仗仂仍亰仂于舒仆亳 Dependency Injection
舒从亳从舒 亳仗仂仍亰仂于舒仆亳 Dependency Injection
Platonov Sergey
仂亟于亳仆仂亠 亳仗仂仍亰仂于舒仆亳亠 Celery 仍亠从舒仆亟 仂亠仍亠于
仂亟于亳仆仂亠 亳仗仂仍亰仂于舒仆亳亠 Celery  仍亠从舒仆亟 仂亠仍亠于仂亟于亳仆仂亠 亳仗仂仍亰仂于舒仆亳亠 Celery  仍亠从舒仆亟 仂亠仍亠于
仂亟于亳仆仂亠 亳仗仂仍亰仂于舒仆亳亠 Celery 仍亠从舒仆亟 仂亠仍亠于
Yandex
亠于舒亠仄 从仂仂仆亠 仍亳仄亳 Angular 2
亠于舒亠仄 从仂仂仆亠 仍亳仄亳  Angular 2亠于舒亠仄 从仂仂仆亠 仍亳仄亳  Angular 2
亠于舒亠仄 从仂仂仆亠 仍亳仄亳 Angular 2
Oleksii Okhrymenko
亳仆仂仆仆仂 亳 仂仗仂亞舒仄仄
亳仆仂仆仆仂 亳 仂仗仂亞舒仄仄亳仆仂仆仆仂 亳 仂仗仂亞舒仄仄
亳仆仂仆仆仂 亳 仂仗仂亞舒仄仄
Platonov Sergey
弌亠于仍亠
弌亠于仍亠弌亠于仍亠
弌亠于仍亠
Unguryan Vitaliy
亠舒从亳于仆亶 亟于亳亞舒亠仍 于舒亠亞仂 Android 仗亳仍仂亢亠仆亳
亠舒从亳于仆亶 亟于亳亞舒亠仍 于舒亠亞仂 Android 仗亳仍仂亢亠仆亳亠舒从亳于仆亶 亟于亳亞舒亠仍 于舒亠亞仂 Android 仗亳仍仂亢亠仆亳
亠舒从亳于仆亶 亟于亳亞舒亠仍 于舒亠亞仂 Android 仗亳仍仂亢亠仆亳
Matvey Malkov
JPoint 2015 - Javassist 仆舒 仍亢弍亠 Java-舒亰舒弍仂亳从舒
JPoint 2015 - Javassist 仆舒 仍亢弍亠 Java-舒亰舒弍仂亳从舒JPoint 2015 - Javassist 仆舒 仍亢弍亠 Java-舒亰舒弍仂亳从舒
JPoint 2015 - Javassist 仆舒 仍亢弍亠 Java-舒亰舒弍仂亳从舒
Anton Arhipov
仂仍亰仂于舒亠仍 仂仆仂 仂亠仆亳! 仂于亠仆亳亠 仗仂亳亰于仂亟亳亠仍仆仂亳 仄仂弍亳仍仆 仗亳仍仂亢亠仆亳亶 ...
仂仍亰仂于舒亠仍 仂仆仂 仂亠仆亳! 仂于亠仆亳亠 仗仂亳亰于仂亟亳亠仍仆仂亳 仄仂弍亳仍仆 仗亳仍仂亢亠仆亳亶 ...仂仍亰仂于舒亠仍 仂仆仂 仂亠仆亳! 仂于亠仆亳亠 仗仂亳亰于仂亟亳亠仍仆仂亳 仄仂弍亳仍仆 仗亳仍仂亢亠仆亳亶 ...
仂仍亰仂于舒亠仍 仂仆仂 仂亠仆亳! 仂于亠仆亳亠 仗仂亳亰于仂亟亳亠仍仆仂亳 仄仂弍亳仍仆 仗亳仍仂亢亠仆亳亶 ...
Ontico
豫仍亳 丶亳从 束RESTFul API 于 于舒亠仄.NET 仗亳仍仂亢亠仆亳亳: 从舒从, 亰舒亠仄 亳 仗仂亠仄?損
豫仍亳 丶亳从 束RESTFul API 于 于舒亠仄.NET 仗亳仍仂亢亠仆亳亳: 从舒从, 亰舒亠仄 亳 仗仂亠仄?損豫仍亳 丶亳从 束RESTFul API 于 于舒亠仄.NET 仗亳仍仂亢亠仆亳亳: 从舒从, 亰舒亠仄 亳 仗仂亠仄?損
豫仍亳 丶亳从 束RESTFul API 于 于舒亠仄.NET 仗亳仍仂亢亠仆亳亳: 从舒从, 亰舒亠仄 亳 仗仂亠仄?損
Yulia Tsisyk
Continuous Delivery with Jenkins: Lessons Learned
Continuous Delivery with Jenkins: Lessons LearnedContinuous Delivery with Jenkins: Lessons Learned
Continuous Delivery with Jenkins: Lessons Learned
Aleksandr Tarasov
Scala, Play Framework 亳 SBT 亟仍 弍仂亞仂 仗仂仂亳仗亳仂于舒仆亳 亳 舒亰舒弍仂从亳 于亠弍-仗...
Scala, Play Framework 亳 SBT 亟仍 弍仂亞仂 仗仂仂亳仗亳仂于舒仆亳 亳 舒亰舒弍仂从亳 于亠弍-仗...Scala, Play Framework 亳 SBT 亟仍 弍仂亞仂 仗仂仂亳仗亳仂于舒仆亳 亳 舒亰舒弍仂从亳 于亠弍-仗...
Scala, Play Framework 亳 SBT 亟仍 弍仂亞仂 仗仂仂亳仗亳仂于舒仆亳 亳 舒亰舒弍仂从亳 于亠弍-仗...
Magneta AI
Scala On Rest
Scala On RestScala On Rest
Scala On Rest
whiter4bbit
仂亟亳亶 仄亳从 亳亰 Selenium 亳 TestNG- 亠亞亠亳仂仆仆仂亠 亠亳仂于舒仆亳亠 从舒仄亳 舒亰舒弍仂...
仂亟亳亶 仄亳从 亳亰 Selenium 亳 TestNG- 亠亞亠亳仂仆仆仂亠 亠亳仂于舒仆亳亠 从舒仄亳 舒亰舒弍仂...仂亟亳亶 仄亳从 亳亰 Selenium 亳 TestNG- 亠亞亠亳仂仆仆仂亠 亠亳仂于舒仆亳亠 从舒仄亳 舒亰舒弍仂...
仂亟亳亶 仄亳从 亳亰 Selenium 亳 TestNG- 亠亞亠亳仂仆仆仂亠 亠亳仂于舒仆亳亠 从舒仄亳 舒亰舒弍仂...
Andrey Rebrov
JPoint 2016 - Bytecode
JPoint 2016 - BytecodeJPoint 2016 - Bytecode
JPoint 2016 - Bytecode
Anton Arhipov
Joker 2016 - Bytecode 101
Joker 2016 - Bytecode 101Joker 2016 - Bytecode 101
Joker 2016 - Bytecode 101
Anton Arhipov
亳亞仂亳亶 亠仄亠仆从仂 亳仆仂仆仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 亳 仂仗仂亞舒仄仄
亳亞仂亳亶 亠仄亠仆从仂  亳仆仂仆仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 亳 仂仗仂亞舒仄仄亳亞仂亳亶 亠仄亠仆从仂  亳仆仂仆仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 亳 仂仗仂亞舒仄仄
亳亞仂亳亶 亠仄亠仆从仂 亳仆仂仆仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 亳 仂仗仂亞舒仄仄
Yandex
亳仍仍亠-亳舒 磶从舒 C# 从仂仆从亳 async/await
亳仍仍亠-亳舒 磶从舒 C#  从仂仆从亳 async/await亳仍仍亠-亳舒 磶从舒 C#  从仂仆从亳 async/await
亳仍仍亠-亳舒 磶从舒 C# 从仂仆从亳 async/await
Byndyusoft
舒从亳从舒 Lock-free. RealTime-亠于亠
舒从亳从舒 Lock-free. RealTime-亠于亠舒从亳从舒 Lock-free. RealTime-亠于亠
舒从亳从舒 Lock-free. RealTime-亠于亠
Platonov Sergey
仗仂仍亰仂于舒仆亳亠 Open Source 亳仆仄亠仆仂于 亟仍 舒于仂仄舒亳亰舒亳亳 亠亳仂于舒仆亳
仗仂仍亰仂于舒仆亳亠 Open Source 亳仆仄亠仆仂于 亟仍 舒于仂仄舒亳亰舒亳亳 亠亳仂于舒仆亳仗仂仍亰仂于舒仆亳亠 Open Source 亳仆仄亠仆仂于 亟仍 舒于仂仄舒亳亰舒亳亳 亠亳仂于舒仆亳
仗仂仍亰仂于舒仆亳亠 Open Source 亳仆仄亠仆仂于 亟仍 舒于仂仄舒亳亰舒亳亳 亠亳仂于舒仆亳
SQALab
亠于舒亠仄 从仂仂仆亠 仍亳仄亳 Angular 2
亠于舒亠仄 从仂仂仆亠 仍亳仄亳  Angular 2亠于舒亠仄 从仂仂仆亠 仍亳仄亳  Angular 2
亠于舒亠仄 从仂仂仆亠 仍亳仄亳 Angular 2
Oleksii Okhrymenko
舒从亳从舒 亳仗仂仍亰仂于舒仆亳 Dependency Injection
舒从亳从舒 亳仗仂仍亰仂于舒仆亳 Dependency Injection舒从亳从舒 亳仗仂仍亰仂于舒仆亳 Dependency Injection
舒从亳从舒 亳仗仂仍亰仂于舒仆亳 Dependency Injection
Platonov Sergey
仂亟于亳仆仂亠 亳仗仂仍亰仂于舒仆亳亠 Celery 仍亠从舒仆亟 仂亠仍亠于
仂亟于亳仆仂亠 亳仗仂仍亰仂于舒仆亳亠 Celery  仍亠从舒仆亟 仂亠仍亠于仂亟于亳仆仂亠 亳仗仂仍亰仂于舒仆亳亠 Celery  仍亠从舒仆亟 仂亠仍亠于
仂亟于亳仆仂亠 亳仗仂仍亰仂于舒仆亳亠 Celery 仍亠从舒仆亟 仂亠仍亠于
Yandex
亠于舒亠仄 从仂仂仆亠 仍亳仄亳 Angular 2
亠于舒亠仄 从仂仂仆亠 仍亳仄亳  Angular 2亠于舒亠仄 从仂仂仆亠 仍亳仄亳  Angular 2
亠于舒亠仄 从仂仂仆亠 仍亳仄亳 Angular 2
Oleksii Okhrymenko
亳仆仂仆仆仂 亳 仂仗仂亞舒仄仄
亳仆仂仆仆仂 亳 仂仗仂亞舒仄仄亳仆仂仆仆仂 亳 仂仗仂亞舒仄仄
亳仆仂仆仆仂 亳 仂仗仂亞舒仄仄
Platonov Sergey
亠舒从亳于仆亶 亟于亳亞舒亠仍 于舒亠亞仂 Android 仗亳仍仂亢亠仆亳
亠舒从亳于仆亶 亟于亳亞舒亠仍 于舒亠亞仂 Android 仗亳仍仂亢亠仆亳亠舒从亳于仆亶 亟于亳亞舒亠仍 于舒亠亞仂 Android 仗亳仍仂亢亠仆亳
亠舒从亳于仆亶 亟于亳亞舒亠仍 于舒亠亞仂 Android 仗亳仍仂亢亠仆亳
Matvey Malkov
JPoint 2015 - Javassist 仆舒 仍亢弍亠 Java-舒亰舒弍仂亳从舒
JPoint 2015 - Javassist 仆舒 仍亢弍亠 Java-舒亰舒弍仂亳从舒JPoint 2015 - Javassist 仆舒 仍亢弍亠 Java-舒亰舒弍仂亳从舒
JPoint 2015 - Javassist 仆舒 仍亢弍亠 Java-舒亰舒弍仂亳从舒
Anton Arhipov
仂仍亰仂于舒亠仍 仂仆仂 仂亠仆亳! 仂于亠仆亳亠 仗仂亳亰于仂亟亳亠仍仆仂亳 仄仂弍亳仍仆 仗亳仍仂亢亠仆亳亶 ...
仂仍亰仂于舒亠仍 仂仆仂 仂亠仆亳! 仂于亠仆亳亠 仗仂亳亰于仂亟亳亠仍仆仂亳 仄仂弍亳仍仆 仗亳仍仂亢亠仆亳亶 ...仂仍亰仂于舒亠仍 仂仆仂 仂亠仆亳! 仂于亠仆亳亠 仗仂亳亰于仂亟亳亠仍仆仂亳 仄仂弍亳仍仆 仗亳仍仂亢亠仆亳亶 ...
仂仍亰仂于舒亠仍 仂仆仂 仂亠仆亳! 仂于亠仆亳亠 仗仂亳亰于仂亟亳亠仍仆仂亳 仄仂弍亳仍仆 仗亳仍仂亢亠仆亳亶 ...
Ontico
豫仍亳 丶亳从 束RESTFul API 于 于舒亠仄.NET 仗亳仍仂亢亠仆亳亳: 从舒从, 亰舒亠仄 亳 仗仂亠仄?損
豫仍亳 丶亳从 束RESTFul API 于 于舒亠仄.NET 仗亳仍仂亢亠仆亳亳: 从舒从, 亰舒亠仄 亳 仗仂亠仄?損豫仍亳 丶亳从 束RESTFul API 于 于舒亠仄.NET 仗亳仍仂亢亠仆亳亳: 从舒从, 亰舒亠仄 亳 仗仂亠仄?損
豫仍亳 丶亳从 束RESTFul API 于 于舒亠仄.NET 仗亳仍仂亢亠仆亳亳: 从舒从, 亰舒亠仄 亳 仗仂亠仄?損
Yulia Tsisyk
Continuous Delivery with Jenkins: Lessons Learned
Continuous Delivery with Jenkins: Lessons LearnedContinuous Delivery with Jenkins: Lessons Learned
Continuous Delivery with Jenkins: Lessons Learned
Aleksandr Tarasov
Scala, Play Framework 亳 SBT 亟仍 弍仂亞仂 仗仂仂亳仗亳仂于舒仆亳 亳 舒亰舒弍仂从亳 于亠弍-仗...
Scala, Play Framework 亳 SBT 亟仍 弍仂亞仂 仗仂仂亳仗亳仂于舒仆亳 亳 舒亰舒弍仂从亳 于亠弍-仗...Scala, Play Framework 亳 SBT 亟仍 弍仂亞仂 仗仂仂亳仗亳仂于舒仆亳 亳 舒亰舒弍仂从亳 于亠弍-仗...
Scala, Play Framework 亳 SBT 亟仍 弍仂亞仂 仗仂仂亳仗亳仂于舒仆亳 亳 舒亰舒弍仂从亳 于亠弍-仗...
Magneta AI
Scala On Rest
Scala On RestScala On Rest
Scala On Rest
whiter4bbit

Similar to Java 9: what is there beyond modularization (20)

Java 9 - 从舒从仂 仂 仆仂于仂仄
Java 9 -  从舒从仂 仂 仆仂于仂仄Java 9 -  从舒从仂 仂 仆仂于仂仄
Java 9 - 从舒从仂 仂 仆仂于仂仄
亠仂仆亳亟 弌舒于亳仍舒
Android: 舒从 仆舒仗亳舒 仗亳仍仂亢亠仆亳亠, 从仂仂仂亠 仆亠 仂仄仂亰亳
Android: 舒从  仆舒仗亳舒 仗亳仍仂亢亠仆亳亠, 从仂仂仂亠 仆亠 仂仄仂亰亳Android: 舒从  仆舒仗亳舒 仗亳仍仂亢亠仆亳亠, 从仂仂仂亠 仆亠 仂仄仂亰亳
Android: 舒从 仆舒仗亳舒 仗亳仍仂亢亠仆亳亠, 从仂仂仂亠 仆亠 仂仄仂亰亳
Elena Kotina
弌亳亠仄舒 仂弍舒弍仂从亳 弍亳亰仆亠-仍仂亞亳从亳 server-side 仗亳仍仂亢亠仆亳 仆舒 Groovy
弌亳亠仄舒 仂弍舒弍仂从亳 弍亳亰仆亠-仍仂亞亳从亳 server-side 仗亳仍仂亢亠仆亳 仆舒 Groovy弌亳亠仄舒 仂弍舒弍仂从亳 弍亳亰仆亠-仍仂亞亳从亳 server-side 仗亳仍仂亢亠仆亳 仆舒 Groovy
弌亳亠仄舒 仂弍舒弍仂从亳 弍亳亰仆亠-仍仂亞亳从亳 server-side 仗亳仍仂亢亠仆亳 仆舒 Groovy
Regn
Java 仂亠仆 2014 亰舒仆亳亠 6
Java 仂亠仆 2014 亰舒仆亳亠 6Java 仂亠仆 2014 亰舒仆亳亠 6
Java 仂亠仆 2014 亰舒仆亳亠 6
Technopark
2014-11-01 03 亳从仂仍舒亶 亳仆从亠. Open your clojure
2014-11-01 03 亳从仂仍舒亶 亳仆从亠. Open your clojure2014-11-01 03 亳从仂仍舒亶 亳仆从亠. Open your clojure
2014-11-01 03 亳从仂仍舒亶 亳仆从亠. Open your clojure
仄从亳亠 丐-弍弍仂仆亳从亳
亅从仗亠亳仄亠仆 Postgres 于 Docker 亳 仂弍仍舒从舒 仂仗亳仄亳亰舒亳 仆舒仂亠从 亳 亠仄 于舒...
 亅从仗亠亳仄亠仆  Postgres 于 Docker 亳 仂弍仍舒从舒  仂仗亳仄亳亰舒亳 仆舒仂亠从 亳 亠仄 于舒... 亅从仗亠亳仄亠仆  Postgres 于 Docker 亳 仂弍仍舒从舒  仂仗亳仄亳亰舒亳 仆舒仂亠从 亳 亠仄 于舒...
亅从仗亠亳仄亠仆 Postgres 于 Docker 亳 仂弍仍舒从舒 仂仗亳仄亳亰舒亳 仆舒仂亠从 亳 亠仄 于舒...
Nikolay Samokhvalov
C++ STL & Qt. 舒仆亳亠 11.
C++ STL & Qt. 舒仆亳亠 11.C++ STL & Qt. 舒仆亳亠 11.
C++ STL & Qt. 舒仆亳亠 11.
Igor Shkulipa
舒亰亞仂于仂 仗仂 Java 9. Extended version
舒亰亞仂于仂 仗仂 Java 9. Extended version舒亰亞仂于仂 仗仂 Java 9. Extended version
舒亰亞仂于仂 仗仂 Java 9. Extended version
Ivan Krylov
Jiramania 仗亠亰亠仆舒亳亳 @augspb
Jiramania 仗亠亰亠仆舒亳亳   @augspbJiramania 仗亠亰亠仆舒亳亳   @augspb
Jiramania 仗亠亰亠仆舒亳亳 @augspb
Gonchik Tsymzhitov
Java Ahead-Of-Time compilation
Java Ahead-Of-Time compilationJava Ahead-Of-Time compilation
Java Ahead-Of-Time compilation
Nikita Lipsky
弌仂于亠仄亠仆仆亶 舒亳亠从亳亶 舒仆舒仍亳亰 从仂亟舒: 仂 仄亠亠 仂仆, 亠亞仂 仆亠 仄亠仍亳 仍亳仆亠
弌仂于亠仄亠仆仆亶 舒亳亠从亳亶 舒仆舒仍亳亰 从仂亟舒: 仂 仄亠亠 仂仆, 亠亞仂 仆亠 仄亠仍亳 仍亳仆亠弌仂于亠仄亠仆仆亶 舒亳亠从亳亶 舒仆舒仍亳亰 从仂亟舒: 仂 仄亠亠 仂仆, 亠亞仂 仆亠 仄亠仍亳 仍亳仆亠
弌仂于亠仄亠仆仆亶 舒亳亠从亳亶 舒仆舒仍亳亰 从仂亟舒: 仂 仄亠亠 仂仆, 亠亞仂 仆亠 仄亠仍亳 仍亳仆亠
corehard_by
Java 9 - Back to the Future
Java 9 - Back to the FutureJava 9 - Back to the Future
Java 9 - Back to the Future
亠仂仆亳亟 弌舒于亳仍舒
IT-亳仆舒从舒. FAQ 亟仍 舒亰舒弍仂亳从舒
IT-亳仆舒从舒. FAQ 亟仍 舒亰舒弍仂亳从舒IT-亳仆舒从舒. FAQ 亟仍 舒亰舒弍仂亳从舒
IT-亳仆舒从舒. FAQ 亟仍 舒亰舒弍仂亳从舒
Mikhail Chinkov
舒亠亠于 仂仄舒仆, 弌仂亰亟舒仆亳亠 亞亠仆亠舒仂舒 仗仂仄亠亢仂仆仂亞仂 仗亠亟舒于仍亠仆亳 Ssa 亳亰 仗仂仍亳亟...
舒亠亠于 仂仄舒仆, 弌仂亰亟舒仆亳亠 亞亠仆亠舒仂舒 仗仂仄亠亢仂仆仂亞仂 仗亠亟舒于仍亠仆亳 Ssa 亳亰 仗仂仍亳亟...舒亠亠于 仂仄舒仆, 弌仂亰亟舒仆亳亠 亞亠仆亠舒仂舒 仗仂仄亠亢仂仆仂亞仂 仗亠亟舒于仍亠仆亳 Ssa 亳亰 仗仂仍亳亟...
舒亠亠于 仂仄舒仆, 弌仂亰亟舒仆亳亠 亞亠仆亠舒仂舒 仗仂仄亠亢仂仆仂亞仂 仗亠亟舒于仍亠仆亳 Ssa 亳亰 仗仂仍亳亟...
Darya Zubova
丐亠亳亠仄 legacy c++
丐亠亳亠仄 legacy c++丐亠亳亠仄 legacy c++
丐亠亳亠仄 legacy c++
Maxim Shulga
仂亠 舒亰舒弍仂从亳 于 亊仆亟亠从亠
仂亠 舒亰舒弍仂从亳 于 亊仆亟亠从亠仂亠 舒亰舒弍仂从亳 于 亊仆亟亠从亠
仂亠 舒亰舒弍仂从亳 于 亊仆亟亠从亠
Andrey Kazarinov
Python Development process in Yandex
Python Development process in YandexPython Development process in Yandex
Python Development process in Yandex
aviatakz
Java 仂亠仆 2014 亰舒仆亳亠 1
Java 仂亠仆 2014 亰舒仆亳亠 1Java 仂亠仆 2014 亰舒仆亳亠 1
Java 仂亠仆 2014 亰舒仆亳亠 1
Technopark
仍亠从舒仆亟 舒礌亟亳仆
仍亠从舒仆亟 舒礌亟亳仆仍亠从舒仆亟 舒礌亟亳仆
仍亠从舒仆亟 舒礌亟亳仆
CodeFest
2014.12.23 仍亠从舒仆亟 仆亟亠亠于, Parallels
2014.12.23 仍亠从舒仆亟 仆亟亠亠于, Parallels2014.12.23 仍亠从舒仆亟 仆亟亠亠于, Parallels
2014.12.23 仍亠从舒仆亟 仆亟亠亠于, Parallels
Nikolay Samokhvalov
Android: 舒从 仆舒仗亳舒 仗亳仍仂亢亠仆亳亠, 从仂仂仂亠 仆亠 仂仄仂亰亳
Android: 舒从  仆舒仗亳舒 仗亳仍仂亢亠仆亳亠, 从仂仂仂亠 仆亠 仂仄仂亰亳Android: 舒从  仆舒仗亳舒 仗亳仍仂亢亠仆亳亠, 从仂仂仂亠 仆亠 仂仄仂亰亳
Android: 舒从 仆舒仗亳舒 仗亳仍仂亢亠仆亳亠, 从仂仂仂亠 仆亠 仂仄仂亰亳
Elena Kotina
弌亳亠仄舒 仂弍舒弍仂从亳 弍亳亰仆亠-仍仂亞亳从亳 server-side 仗亳仍仂亢亠仆亳 仆舒 Groovy
弌亳亠仄舒 仂弍舒弍仂从亳 弍亳亰仆亠-仍仂亞亳从亳 server-side 仗亳仍仂亢亠仆亳 仆舒 Groovy弌亳亠仄舒 仂弍舒弍仂从亳 弍亳亰仆亠-仍仂亞亳从亳 server-side 仗亳仍仂亢亠仆亳 仆舒 Groovy
弌亳亠仄舒 仂弍舒弍仂从亳 弍亳亰仆亠-仍仂亞亳从亳 server-side 仗亳仍仂亢亠仆亳 仆舒 Groovy
Regn
Java 仂亠仆 2014 亰舒仆亳亠 6
Java 仂亠仆 2014 亰舒仆亳亠 6Java 仂亠仆 2014 亰舒仆亳亠 6
Java 仂亠仆 2014 亰舒仆亳亠 6
Technopark
亅从仗亠亳仄亠仆 Postgres 于 Docker 亳 仂弍仍舒从舒 仂仗亳仄亳亰舒亳 仆舒仂亠从 亳 亠仄 于舒...
 亅从仗亠亳仄亠仆  Postgres 于 Docker 亳 仂弍仍舒从舒  仂仗亳仄亳亰舒亳 仆舒仂亠从 亳 亠仄 于舒... 亅从仗亠亳仄亠仆  Postgres 于 Docker 亳 仂弍仍舒从舒  仂仗亳仄亳亰舒亳 仆舒仂亠从 亳 亠仄 于舒...
亅从仗亠亳仄亠仆 Postgres 于 Docker 亳 仂弍仍舒从舒 仂仗亳仄亳亰舒亳 仆舒仂亠从 亳 亠仄 于舒...
Nikolay Samokhvalov
C++ STL & Qt. 舒仆亳亠 11.
C++ STL & Qt. 舒仆亳亠 11.C++ STL & Qt. 舒仆亳亠 11.
C++ STL & Qt. 舒仆亳亠 11.
Igor Shkulipa
舒亰亞仂于仂 仗仂 Java 9. Extended version
舒亰亞仂于仂 仗仂 Java 9. Extended version舒亰亞仂于仂 仗仂 Java 9. Extended version
舒亰亞仂于仂 仗仂 Java 9. Extended version
Ivan Krylov
Jiramania 仗亠亰亠仆舒亳亳 @augspb
Jiramania 仗亠亰亠仆舒亳亳   @augspbJiramania 仗亠亰亠仆舒亳亳   @augspb
Jiramania 仗亠亰亠仆舒亳亳 @augspb
Gonchik Tsymzhitov
Java Ahead-Of-Time compilation
Java Ahead-Of-Time compilationJava Ahead-Of-Time compilation
Java Ahead-Of-Time compilation
Nikita Lipsky
弌仂于亠仄亠仆仆亶 舒亳亠从亳亶 舒仆舒仍亳亰 从仂亟舒: 仂 仄亠亠 仂仆, 亠亞仂 仆亠 仄亠仍亳 仍亳仆亠
弌仂于亠仄亠仆仆亶 舒亳亠从亳亶 舒仆舒仍亳亰 从仂亟舒: 仂 仄亠亠 仂仆, 亠亞仂 仆亠 仄亠仍亳 仍亳仆亠弌仂于亠仄亠仆仆亶 舒亳亠从亳亶 舒仆舒仍亳亰 从仂亟舒: 仂 仄亠亠 仂仆, 亠亞仂 仆亠 仄亠仍亳 仍亳仆亠
弌仂于亠仄亠仆仆亶 舒亳亠从亳亶 舒仆舒仍亳亰 从仂亟舒: 仂 仄亠亠 仂仆, 亠亞仂 仆亠 仄亠仍亳 仍亳仆亠
corehard_by
IT-亳仆舒从舒. FAQ 亟仍 舒亰舒弍仂亳从舒
IT-亳仆舒从舒. FAQ 亟仍 舒亰舒弍仂亳从舒IT-亳仆舒从舒. FAQ 亟仍 舒亰舒弍仂亳从舒
IT-亳仆舒从舒. FAQ 亟仍 舒亰舒弍仂亳从舒
Mikhail Chinkov
舒亠亠于 仂仄舒仆, 弌仂亰亟舒仆亳亠 亞亠仆亠舒仂舒 仗仂仄亠亢仂仆仂亞仂 仗亠亟舒于仍亠仆亳 Ssa 亳亰 仗仂仍亳亟...
舒亠亠于 仂仄舒仆, 弌仂亰亟舒仆亳亠 亞亠仆亠舒仂舒 仗仂仄亠亢仂仆仂亞仂 仗亠亟舒于仍亠仆亳 Ssa 亳亰 仗仂仍亳亟...舒亠亠于 仂仄舒仆, 弌仂亰亟舒仆亳亠 亞亠仆亠舒仂舒 仗仂仄亠亢仂仆仂亞仂 仗亠亟舒于仍亠仆亳 Ssa 亳亰 仗仂仍亳亟...
舒亠亠于 仂仄舒仆, 弌仂亰亟舒仆亳亠 亞亠仆亠舒仂舒 仗仂仄亠亢仂仆仂亞仂 仗亠亟舒于仍亠仆亳 Ssa 亳亰 仗仂仍亳亟...
Darya Zubova
丐亠亳亠仄 legacy c++
丐亠亳亠仄 legacy c++丐亠亳亠仄 legacy c++
丐亠亳亠仄 legacy c++
Maxim Shulga
仂亠 舒亰舒弍仂从亳 于 亊仆亟亠从亠
仂亠 舒亰舒弍仂从亳 于 亊仆亟亠从亠仂亠 舒亰舒弍仂从亳 于 亊仆亟亠从亠
仂亠 舒亰舒弍仂从亳 于 亊仆亟亠从亠
Andrey Kazarinov
Python Development process in Yandex
Python Development process in YandexPython Development process in Yandex
Python Development process in Yandex
aviatakz
Java 仂亠仆 2014 亰舒仆亳亠 1
Java 仂亠仆 2014 亰舒仆亳亠 1Java 仂亠仆 2014 亰舒仆亳亠 1
Java 仂亠仆 2014 亰舒仆亳亠 1
Technopark
仍亠从舒仆亟 舒礌亟亳仆
仍亠从舒仆亟 舒礌亟亳仆仍亠从舒仆亟 舒礌亟亳仆
仍亠从舒仆亟 舒礌亟亳仆
CodeFest
2014.12.23 仍亠从舒仆亟 仆亟亠亠于, Parallels
2014.12.23 仍亠从舒仆亟 仆亟亠亠于, Parallels2014.12.23 仍亠从舒仆亟 仆亟亠亠于, Parallels
2014.12.23 仍亠从舒仆亟 仆亟亠亠于, Parallels
Nikolay Samokhvalov

Java 9: what is there beyond modularization

  • 1. Java 9 - 仆亠 仂仍从仂 仄仂亟仍亳 于舒仆 仍仂于 1 @JohnWings ivankrylov.java@gmail.com
  • 2. 亠仄 弍亟亠仄 亞仂于仂亳 于舒 仍舒亶亟舒 仗仂 仆舒 (Azul Systems) 亰仄亠仆亠仆亳 于 磶从亠 仂于亠 舒弍亳仆亠 仄亠仂亟 亟仍 从仂仍仍亠从亳亶 仂于仂亠 于 Stream API Spin Loop Hints Process API HTTP/2 JVM changes Stack Walking API 弍亰仂 仗仂亳 JEP仂于 JShell 2 Ivan Krylov
  • 3. Zing: 亳舒仍仆舒 Java-仄舒亳仆舒 亟仍 从仗仆仂亞仂 弍亳亰仆亠舒 仍舒于仆舒 亠仍 - 仍亠仆亳亠 仗仂从舒亰舒亠仍亠亶 仆从亳仂仆亳仂于舒仆亳 于亳舒仍仆仂亶 Java-仄舒亳仆 亟仍 仗亠亟仗亳亳亶 仂于亶 JIT 从仂仄仗亳仍仂 仆舒 弍舒亰亠 LLVM 弌弍仂从舒 仄仂舒 弍仂仍亠 仆亠 于仍亳磳 仆舒 仗仂亳亰于仂亟亳亠仍仆仂 仗亳仍仂亢亠仆亳亶 亠亠仆仆舒 仗仂弍仍亠仄舒 "仗仂亞亠于舒" 从亳 亠亳亰仄亠仆仆舒 仗仂亳亰于仂亟亳亠仍仆仂 - 仆亠 仗仂仂 弍仂, 舒 弌 弍仂 丿亳仂舒亶舒 亠舒 仗亳仄亠仆亠仆亳: 仂 亳仆亠舒从亳于仆 仗亳仍仂亢亠仆亳亶 亟仂 亰舒亟舒, 从亳亳仆 从仂 于亠仄亠仆亳 仂从仍亳从舒 仂 仄亳从仂亠于亳仂于 亟仂 仗亳仍仂亢亠仆亳亶, 亠弍ム亳 弍仂仍亳 仂弍亠仄仂于 仗舒仄亳 丕舒仆磳 仆亠仂弍仂亟亳仄仂 于 弍仂仍亳仆于亠 亳亰于亠仆 "从仂仍亠亶" 于 于舒亠仄 从仂亟亠 3
  • 4. Zulu (Embedded): 仂亞亟舒 仆亢仆 亠亠仆亳 亟仍 于仂亠仆仆 亳亠仄 100% 仂从亶 从仂亟 - 亠仆仂仍仂亞亳, 仂仆仂于舒仆仆舒 仆舒 OpenJDK 弌亠亳亳亳仂于舒仆舒 仆舒 仂于仄亠亳仄仂 亳 仂仂于亠于亳亠 Java SE 仂从舒亰舒亠仍亳 仆从亳仂仆亳仂于舒仆亳, 亳亟亠仆亳仆亠 OpenJDK 亳 Oracle Java SE 仂从仂从仍舒仆舒 仗仂亟亟亠亢从舒 亠仍亳亰舒亳 亟仍 Linux x86, ARM32, ARM64, PPC32, MIPS, 舒 舒从亢亠 Windows 亳 Mac OS 4
  • 5. 亳亠仆亳仂于仂仆仂亠 舒仗亳舒仆亳亠 于仂亟舒 Java 9Featurecomplete ZeroBugBounce Rampdownphase2 FinalReleaseCandidate 舒亶16 RampdownStartAllTestsRun GeneralAvailability 亊仆于17 个亠于17 个亠于17 舒17 ミ姿17 27ミ姿17 5 Ext.Featurecomplete 亠从16
  • 7. 7
  • 8. 9 interface I { private I foo() { return null; } // OK. void foo(int x); // OK. private void foo(String s); // Error: private method must declare body. private abstract void foo(int i, int j); // Error: private & abstract: bad combo. } 亳于舒仆亠 仄亠仂亟 于 亳仆亠亠亶舒
  • 9. 亳于舒仆亠 仄亠仂亟 于 亳仆亠亠亶舒 13 public interface II { private void log(int x, int y, int z) { System.out.println("x="+x+" y="+y+" z="+z); } default int sum(int x, int y) { log(x,y,x+y); return x+y; } default int mul(int x, int y) { log(x,y,x*y); return x*y; } }
  • 10. E鍖ectively-鍖nal 仗亠亠仄亠仆仆亠 于 try-with-resources 于舒亢亠仆亳 14 public static void main(String... args) { FileReader f = new FileReader("test.txt"); BufferedReader br = new BufferedReader(fr); try (br) { // do something } catch (Exception ex) { } } public static void main(String... args) { FileReader f = new FileReader(test.txt"); try (br = new BufferedReader(fr)) { // do something } catch (Exception ex) { } }
  • 11. 仗仂仍亰仂于舒仆亳亠 @SafeVarargs 于 private 仄亠仂亟舒 15 class VarargsFinalOnly { @SafeVarargs void m(List<String>... args) { } }
  • 12. Java 8 ./TypeInferrenceTest.java:7: error: cannot infer type arguments for HashMap<K,V> new HashMap<>() ^ reason: cannot use '<>' with anonymous inner classes where K,V are type-variables: K extends Object declared in class HashMap V extends Object declared in class HashMap 1 error Diamond 舒仆仂仆亳仄仆仄亳 从仍舒舒仄亳 16 class TypeInferrenceTest { Map<String, String> map = new HashMap<> () { { map.put("key", "value"); } }; }
  • 13. 舒仗亠 仆舒 亳仗仂仍亰仂于舒仆亳亠 _ 于 亳仄亠仆舒 17 // -source 8: // warning: as of release 9, '_' is a keyword, // and may not be used as an identifier // -source 9: // error: as of release 9, '_' is a keyword, // and may not be used as an identifier class UnderscoreAsIdentifierWarning { String _ = null; }
  • 14. 亞亳亠 仂弍仆仂于仍亠仆亳 磶从舒 (?) 舒亟仂亠仍仂 仗亳舒 亳仄 亳仗舒 于 亟亠从仍舒舒亳亳 仗亠亠仄亠仆仆仂亶? 18 var list = new ArrayList<String>(); JEP-286 Local-Variable Type Inference. 仂从舒 仂 仂仍从仂 从舒仆亟亳亟舒 var result = processNewCustomerAdded();
  • 15. 个舒弍亳仆亠 仄亠仂亟 亟仍 从仂仍仍亠从亳亶 弌仂亰亟舒仆亳亠 仆亠亳亰仄亠仆仆 从仂仆亠亶仆亠仂于 19 Set<String> set = new HashSet<>(); set.add("a"); set.add("b"); set = Collections.unmodi鍖ableSet(set); Set<String> set = Collections.unmodi鍖ableSet( new HashSet<>(Arrays.asList("a", "b"))); Set<String> set = Collections.unmodi鍖ableSet( new HashSet<String>() {{ add("a"); add("b"); }}); Set<String> set = Collections.unmodi鍖ableSet( Stream.of("a", b").collect(toSet()) ); Set<String> set = Set.of("a", "b");
  • 16. 个舒弍亳仆亠 仄亠仂亟 亟仍 从仂仍仍亠从亳亶 20 Set.of(a, b); List.of(a, b); Map.of(k1, v1); Map.of(k1, v1, k2, v2); Map.of(k1, v1, k2, v2, k3, v3); Map.ofEntries(entry(k1, v1), entry(k2, v2), .. entry (kn, vn));
  • 17. 仂于仂亠 于 Stream API (1) 22 Stream::takeWhile while (predicate_on_stream_element) { <keep processing this ordered stream> }; Stream.of(3, 2, 1, 0, -1, 0, 1, 2, 3) .takeWhile(s -> s > 0) .forEach(System.out::println); 3 2 1
  • 18. 仂于仂亠 于 Stream API (2) 23 Stream::dropWhile while (predicate_on_stream_element) { <skip element of this ordered stream> }; Stream.of(3, 2, 1, 0, -1, 0, 1, 2, 3) .dropWhile(s -> s > 0) .forEach(System.out::println); 0 -1 0 1 2 3
  • 19. 仂于仂亠 于 Stream API (3) 24 Stream::Iterate 仗亠亟亳从舒仂仄 Stream.iterate(3, i -> i > 0, i -> i-1) .forEach(System.out::println); 3 2 1 于亠亳 亟仍 Java 8: Stream.iterate(3, i -> i-1) .limit(3) .forEach(System.out::println);
  • 20. Stream API changes (4) 25 Stream::ofNullable 个舒从仂亳 亟仍 仂亟仆仂亞仂 仆亠仆仍亠于仂亞仂 仍亠仄亠仆舒 long a = Stream.ofNullable(1).count(); long b = Stream.ofNullable(null).count(); System.out.println(a); System.out.println(b); 1 0
  • 21. Spin Loop Hint (JEP-285) 丶亠仍: latency (亳 仗仂亳亰于仂亟亳亠仍仆仂) 亠 API: 亠仂亟 j.l.Thread.onSpinWait() 舒 x86 亳仗仂仍亰亠 亳仆从亳 pause 仗仂仍亰亠 于 JSR 166 亟仍 JDK9 java/util/concurrent/locks/StampedLock.java java/util/concurrent/Phaser.java java/util/concurrent/SynchronousQueue.java class EventHandler { volatile boolean eventNoti鍖cationNotReceived; void waitForEventAndHandleIt() { while ( eventNoti鍖cationNotReceived ) { java.lang.Thread.onSpinWait(); } readAndProcessEvent(); } void readAndProcessEvent() { // Read event from some source and process it . . . } } 26
  • 24. Spin Loop Hint - source level 仂于仄亠亳仄仂 仂仗亳仄, 亠 从仂亟, 仂弍亳舒ム亳亶 8-从仂亶 仗仂仍亰亶亠 Agrona library 亳仍亳 仗仂亟仄仂亳亠 于 java/org/agrona/hints/ThreadHints.java 仂亟亟亠亢从舒, 仆舒亳仆舒 Java 7 29 https://github.com/real-logic/Agrona/blob/master/src/main/java/org/agrona/hints/ThreadHints.java
  • 25. 仂亟 亟仍 舒亰仆 于亠亳亶 Java 亳舒 于亠 仂仍从仂 仗仂亟 舒仄亶 舒亶 java 舒亰仆亠 舒亳舒从 丐仂仍亠 jar 舒亳于 (仆舒亳仆舒 9)
  • 26. Multi-Release JARs (JEP-238) 31 仂亟 亟仍 JRE 于亠亳亳 仄亠仆亠 9 仂亟 亟仍 JRE 于亠亳亳 9 仂亟 亟仍 JRE 于亠亳亳 10 MANIFEST.MF: Multi-Release: true <root>/META-INF/versions/ ..
  • 27. https://github.com/ivankrylov/onSpinWaitMultiReleaseJar onSpinWait Wrapper javac + make http://in.relation.to/2017/02/13/building-multi-release-jars-with-maven/ Get pid of jvm Maven Antrun + resources + maven-jar-plugin http://word-bits.鍖urg.com/multrelease-jars/ 亳仄亠 Multi-Release JARs 32
  • 28. Garbage First 于从仍ム亠仆 仗仂 仄仂仍舒仆亳 弌舒仄亶 仂于亠仄亠仆仆亶 GC 于 Hotspot 亠亞亳仂仆舒仍仆亶 仗舒舒仍仍亠仍仆亶 仂亟仆仂于亠仄亠仆仆亶 从仂仍仍亠从仂 亠亟从舒亰亠仄亠 仗舒亰 亳 于仂从舒 仗仂亳亰于仂亟亳亠仍仆仂! 仂 仄仂仍舒仆亳 => 亳弍从亳 于 GC 仆舒仂亟 弍亠亠 33
  • 29. Garbage First 于从仍ム亠仆 仗仂 仄仂仍舒仆亳 亅亞仂仆仂仄亳从舒 舒弍仂舒亠 仗仂-亟亞仂仄. 仂亞 仗仂磦亳 仂亳弍从亳 于 亳仆仂仆亳亰舒亳亳 仍亳 (亠(?)) 仆亠仂于仄亠亳仄仂亳 G1 于 Cassandra, Elasticsearch, Lucene, 亳 .仗,. (亳ミ姿 2015): https://groups.google.com/forum/#!topic/ mechanical-sympathy/JxsuVtIIOaY 34
  • 30. 亠亠亢亳 仄亠仆 default GC, 仆亠 亠 仂仆 仍亳 亟仂 亳 仗仂 于舒 舒亳于舒仍亳 仆舒仂亶从亳 GC 仗仂 仄仂仍舒仆亳 亰舒仗舒亳亠 亟舒仆仆仄亳 亞仂仆仂仄亳从亳 亟仍 于舒亠亞仂 仗亳仍仂亢亠仆亳 亳 亠亟 于仆亠亟亠仆亳 (-XX:+PrintFlagsFinal) 仗仂仗亳亳亠 亳 于 亟亠仗仍仂亶仄亠仆 从亳仗舒 仍亳 于 亳 舒仆亠亠 磦仆仂 于弍亳舒仍亳 GC 亳 仍舒亞亳 GC 亳亠亞仂 仆亠 亳亰仄亠仆亳, 舒亠 从仂仍仍亠从仂 仆亠 亳亠亰仆 丐亠亳亶亠 G1. 亠 亟仂亢亳亟舒 Java 9. 35
  • 31. 丱仂仂亳亶 仗仂于仂亟 亰仆舒 仗仂弍仂仍亠 仗仂 GC 亅从仗亠亳仄亠仆亳亶亠 G1 仍舒于仆仂亠 - 仗仂仆亳仄舒 仂仆仂于仆亠 仗亳仆亳仗 舒弍仂 GC 亠亢亟亠 于亠亞仂 - 仄亠亳从亳, 从仂仂仄亳 仂亠仆亳于舒ム 舒仍亞仂亳仄 GC 丼仂 亠亠 仗仂亳舒: http://www.infoq.com/minibooks/java-garbage- collection 36
  • 32. 亞亳亠 亳亰仄亠仆亠仆亳 于 GC Deprecate CMS Deprecate - 亰仆舒亳 亰舒仗亠亳, 仆仂 于 弍亟亠仄 (仗仂仍亠 9从亳) Shenandoah GC (JEP-189) 亠于亶 OpenJDK GC 仆亠 仂 舒从仍舒 弌仂亰亟舒仆亳亠 GC 亳仆亠亠亶舒 https://bugs.openjdk.java.net/browse/JDK-8163329 37
  • 33. 弍仆仂于仍亠仆亳亠 Process API JEP 102: Process API Updates 仂于仂亠: 仂仍亳 pid 于仂亠亶 JVM 仂仍亳 仗亳仂从 仗仂亠仂于 亳亠仄 舒弍仂舒 亟亠亠于礆亳 仗仂亠仂于 supportsNormalTermination() ? Source: http://blog.takipi.com/java-9-the-ultimate-feature-list/ 38
  • 34. 亳仄亠 Process API Source: http://blog.takipi.com/java-9-the-ultimate-feature-list/ 39 Process proc = Runtime.getRuntime() .exec(new String[]{"/bin/sh", "-c", "echo $PPID"}); if (proc.waitFor()==0) { InputStream in = proc.getInputStream(); int available = in.available(); byte[] outputBytes = new byte[available]; in.read(outputBytes); String pid = new String(outputBytes); System.out.println("Your pid is " + pid) } System.out.println("Your pid is " + ProcessHandle.current().getPid());
  • 35. 40 丕仆亳亳从舒亳 JVM/GC 仍仂亞亞亳仆亞舒 丕仆亳亳从舒亳 仗仂 于亠仄 仗仂亟亳亠仄舒仄 jvm 6 仂于仆亠亶 + 亞亳 于仂亟 于 stdout / stderr / 舒亶仍 / 亰舒亳从仍亠仆仆亶 舒亶仍 仂弍仂仂仍亳 仗仂弍仍亠仄 仆亠从仂亠从仆仂亞仂 于于仂亟舒 仍仂亞仂于 11 亟亠从仂舒仂仂于 java -Xlog:help
  • 37. 42 仂 仆亠 于亠 仂仗亳亳 仍亳 -XX:+PrintDeoptimizationDetails -XX:+PrintAOT -XX:+ThreadPriorityVerbose -XX:+PrintTieredEvents -XX:+PrintConcurrentLocks -XX:+PrintSharedSpaces -XX:+PrintSharedArchiveAndExit -XX:+PrintSharedDictionary -XX:+PrintMethodHandleStubs -XX:+PrintVMQWaitTime ...
  • 39. HTTP -> TCP 44 HTTP 0.9: The One-Line Protocol (1989) HTTP/1.0 (1996) HTTP/1.1: Internet Standard (1997) Keep alive; chunk encodings; byte- range requests, additional caching mechanisms, transfer encodings, and request pipelining HTTP/2.0 (since 2012) Ref: https://hpbn.co/brief-history-of-http/
  • 41. 227: Unicode 7.0 & 267: Unicode 8.0 Unicode 于 Java 9 46
  • 42. 弍亰仂 JEP-仂于. 舒亳从舒 258: HarfBuzz Font-Layout Engine 263: HiDPI Graphics on Windows and Linux 265: Marlin Graphics Renderer 262: TIFF Image I/O 257: Update JavaFX/Media to Newer Version of GStreamer (1.4.4) 251: Multi-Resolution Images 53
  • 43. Stack walking API 仍仂: Throwable::getStackTrace 亳 Thread::getStackTrace StackTraceElement[] stack = Thread.currentThread().getStackTrace(); 弌舒仍仂: StackFrame[] stack =new StackWalker().walk((s) -> s.collect(Collectors.toArray())); 仂于亶 从仍舒 StackWalker 54
  • 44. 弍亰仂 JEP-仂于. 仂亳亰于仂亟亳亠仍仆仂 197: Segmented Code Cache 165: Compiler Control 295: Ahead-of-Time Compilation 243: Java-Level JVM Compiler Interface 246: Leverage CPU Instructions for GHASH and RSA 254: Compact Strings 280: Indify String Concatenation 250: Store Interned Strings in CDS Archives 143: Improve Contended Locking 266: More Concurrency Updates 56
  • 45. 弍亰仂 JEP-仂于. 亠亰仂仗舒仆仂 219: Datagram Transport Layer Security (DTLS) 229: Create PKCS12 Keystores by Default 244: TLS Application-Layer Protocol Negotiation Extension 249: OCSP Stapling for TLS 64
  • 46. 弍亰仂 JEP-仂于. 丼仂 弍亠? 231: Remove Launch-Time JRE Version Selection 240: Remove the JVM TI hprof Agent 241: Remove the jhat Tool 65 仂仍亠亟于亳 仄仂亟仍仆仂亳 (JEP - 261) -Xbootclasspath -Xbootclasspath/p system property sun.boot.class.path
  • 47. JShell 舒亰于亳于舒(亠/仍) 于 舒仄从舒 仗仂亠从舒 Kulla 仂亰于仂仍磳 仗仂仗仂弍仂于舒 亳仆舒从亳 弍亠亰 仆舒仗亳舒仆亳 亰舒从仂仆亠仆仆仂亶 仗仂亞舒仄仄 仂仄仂亞舒亠 仂弍舒 磶从 Java class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } } 66
  • 50. Currency API (JSR-354) 亠 于仂亶亟亠 于 Java 9, 舒亰于亳于舒亠 仂亟亠仍仆仂 69
  • 52. Deprecate finalize Deprecate Object.finalize with forRemoval=false Problem - objects resurrection Alternatives PhantomReference java.lang.ref.Cleaner (since 9) https://stuartmarks.wordpress.com/2017/04/17/deprecation-of-object- 鍖nalize/ 71