它具有您需要了解的有关Java的各种版本和功能的所有信息。

Java 8,Java 11,Java 13-有什么区别?
您可以使用本指南查找和安装最新版本的Java,了解Java发行版(AdoptOpenJdk,OpenJDK,OracleJDK等)之间的差异,并获得Java功能的概述,包括Java版本8-13。
译者注:
2020年4月9日,Marco发布了新版本的《指南》,其中添加了对Java 14的描述。
新版《指南》的翻译引起您注意。
-, , Java .
, AdoptOpenJDK, Java, . - Java.
Java ?
2019 Java 13 Java, , 6 — Java 14 2020 , Java 15 2020 .. Java , 3-5 !

:
- Java 8 (. « Java 8?» ). , Java 8.
- Java 1.5 ( 2004 .) 1.6 ( 2006 .) — , !
- , IDE, , Java 11 (LTS) Java 13.
- Android, Java Java 7, Java 8. Kotlin.
Java 8?
, Java 8. :
- (Maven, Gradle ..) Java > 8 . , , Java 9+, «reflective access» Java, « », .
- Java 8 JDK- Oracle, . 2019 Oracle , , , , «Java », — . , « Java» .
- , LTS, , .
, ( , , ) .
Java 1.X?
Java 9 . , Java 8 1.8, Java 5 1.5 .. java -version , :
c:\Program Files\Java\jdk1.8.0_191\bin>java -version
java version "1.8.0_191" (1)
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)
Java 8. Java 9 , Java 1.x. :
c:\Program Files\Java\jdk11\bin>java -version
openjdk version "11" 2018-09-25 (1)
OpenJDK Runtime Environment 18.9 (build 11+28)
OpenJDK 64-Bit Server VM 18.9 (build 11+28, mixed mode)
Java?
?
, , , Python 2–3, , Java.
Java , . , Java 5 8 Java 8-13 — , .
, , , Java 13, Java 8 JVM.
:
- «» Java, Java 12.
- , Java 8.
- , , Java 9-13, , .
Java?
« Java 8-13» .
, : , (3-5 , Java 8) .
, Java 9-13.
JRE JDK?
Java. «Java»?
-, JRE (Java Runtime Environment) JDK (Java Development Kit).
, JRE, Java. JRE , , Java (JVM) «java».
Java JDK. JDK , JRE, javac , javadoc ( Java) jdb ( Java).
, ?
Java 8 - Oracle JRE JDK , JDK JRE . Java 9 , JDK. JDK , JRE.
, (. « Java») - JRE, , JDK. , Java JDK .
Java JDK?
Java-Docker, MSI . , Java — .zip; .
, , Java , — jdk-{5-13}.zip. .
Java :
Directory C:\dev\jdk-11
12.11.2019 19:24 <DIR> .
12.11.2019 19:24 <DIR> ..
12.11.2019 19:23 <DIR> bin
12.11.2019 19:23 <DIR> conf
12.11.2019 19:24 <DIR> include
12.11.2019 19:24 <DIR> jmods
22.08.2018 19:18 <DIR> legal
12.11.2019 19:24 <DIR> lib
12.11.2019 19:23 1.238 release
/ bin, Windows :
Directory C:\dev\jdk-11\bin
...
12.11.2019 19:23 272.736 java.exe
...
12.11.2019 19:23 20.832 javac.exe
...
, , /bin PATH, java .
, , , Oracle AdoptOpenJDK, PATH .
, Java, java -version. , , !
openjdk version "11" 2018-09-25
OpenJDK Runtime Environment 18.9 (build 11+28)
OpenJDK 64-Bit Server VM 18.9 (build 11+28, mixed mode)
: .zip Java? .
Java
, Java (: JDK), , « ». .
OpenJDK
Java (: JRE / JDK) — OpenJDK.
, (: .zip java ). , , , MarcoJDK, . , Java SE.
, , (. TCK) .
, , String Java, (ay!) (, CLI), . Java.
OpenJDK ( Oracle) OracleJDK
, Java , — Oracle. Java, .
- OpenJDK Oracle (!). , Oracle , , Java 13, Java 14.
- OracleJDK — , 2019 . , , Oracle, . , , , JVM .
( Java 8) OpenJDK OracleJDK, , OracleJDK «». , .
, ( ) Java.
AdoptOpenJDK
2017 , Java User Group (Amazon, Microsoft, Pivotal, Red Hat ) AdoptOpenJDK.
OpenJDK / Java: HotSpot OpenJ9.
, Java.
Azul Zulu, Amazon Corretto, SAPMachine
OpenJDK OpenJDK Wikipedia. Azul Zulu, Amazon Corretto, https://sap.imtqy.com/SapMachine/ . , , / .
, .
, 2019 , , jdk.zip (.tar.gz/.msi/.pkg) https://adoptopenjdk.net , .
Java 8-13
: ( ) Java 8 Java 13. Java .
, , Java 8 Java, (Java 9-13) .
, :
Java 8
Java 8 , - Oracle. :
: ..
Java 8 , , , Runnable, , , :
Runnable runnable = new Runnable(){
@Override
public void run(){
System.out.println("Hello world !");
}
};
:
Runnable runnable = () -> System.out.println("Hello world two!");
, , .
Java 8 , Stream API. :
List<String> list = Arrays.asList("franz", "ferdinand", "fiel", "vom", "pferd");
Java 8, for, - .
API Streams :
list.stream()
.filter(name -> name.startsWith("f"))
.map(String::toUpperCase)
.sorted()
.forEach(System.out::println);
Java 9
Java 9 , :
, .
List<String> list = List.of("one", "two", "three");
Set<String> set = Set.of("one", "two", "three");
Map<String, String> map = Map.of("foo", "one", "bar", "two");
Streams
, takeWhile, dropWhile iterate.
Stream<String> stream = Stream.iterate("", s -> s + "s")
.takeWhile(s -> s.length() < 10);
Optionals
Optionals ifPresentOrElse, .
user.ifPresentOrElse(this::displayAccount, this::displayLogin);
private :
public interface MyInterface {
private static void myPrivateMethod(){
System.out.println("Yay, I am private!");
}
}
, try-with-resources diamond .
JShell
, Java , .
% jshell
| Welcome to JShell -- Version 9
| For an introduction type: /help intro
jshell> int x = 10
x ==> 10
HTTPClient
Java 9 HttpClient. Http Java , , Apache HttpClient OkHttp (, ).
Java 9 Java — , , Java.
Jigsaw: Java Jar
Java 9 Jigsaw Module System, - OSGI. Jigsaw — , .
Multi-Release .jar .jar, JVM. , - / , Java 8 Java 10, .
Java 10
Java 10 , .. , , , , , — var, .
: var
String myName = "Marco";
var myName = "Marco"
Javascript-, ? Java var (, dpash, , ).
Java 11
Java 11 .
( ):
"Marco".isBlank();
"Mar\nco".lines();
"Marco ".strip();
Path path = Files.writeString(Files.createTempFile("helloworld", ".txt"), "Hi, my name is!");
String s = Files.readString(path);
Java 10, Java . .
ubuntu@DESKTOP-168M0IF:~$ java MyScript.java
(var) -
:
(var firstName, var lastName) -> firstName + lastName
HttpClient
HttpClient Java 9, , .
Flight Recorder ( ), No-Op, Nashorn-Javascript-Engine deprecated () ..
Java 12
Java 12 , Unicode 11 switch, .
Java 13
, , , Unicode 12.1, ( ):
Switch (Preview — )
. - , :
switch :
switch(status) {
case SUBSCRIBER:
break;
case FREE_TRIAL:
break;
default:
}
Java 13 switch :
boolean result = switch (status) {
case SUBSCRIBER -> true;
case FREE_TRIAL -> false;
default -> throw new IllegalArgumentException("something is murky!");
};
()
- Java:
String htmlBeforeJava13 = "<html>\n" +
" <body>\n" +
" <p>Hello, world</p>\n" +
" </body>\n" +
"</html>\n";
String htmlWithJava13 = """
<html>
<body>
<p>Hello, world</p>
</body>
</html>
""";
Java 14
, . !
:
, ! .
!
,
本文最初作为有关现代Java编程的一系列指南的一部分出现在网站上。要查找更多手册,请访问网站或订阅新闻通讯以接收有关最近发布的手册的通知:https : //bit.ly/2K0Ao4F。
致谢
Stephen Coleburn写了一篇很棒的文章,介绍了可用的各种Java发行版。谢谢史蒂文!
补充阅读
JVM生态系统调查:为什么Devs不切换到Java 11
超越Java 8
Java 11何时将Java 8替换为默认Java?