Tem tudo o que você precisa saber sobre as várias versões e recursos do Java.

Java 8, Java 11, Java 13, Java 14 - qual a diferença?
Você pode usar este guia para obter informações práticas sobre como encontrar e instalar a versão mais recente do Java, para entender as diferenças entre distribuições Java (AdoptOpenJdk, OpenJDK, OracleJDK etc.) e também para obter uma visão geral dos recursos Java, incluindo versões Java 8-14.
17 Java
Julegg
java-14 . ?
09 2020 .
-, , Java .
TL;DR . ?
AdoptOpenJDK, Java, . , , , - Java.
TL;DR (. too long; didn't read — , )
Java?
2020 Java 14 Java.
Java ?
Java 6 . , Java 15 2020 , Java 16 2021 . Java , 3-5 . :

:
- Java 8 (. « Java 8?» ). , Java 8.
- Java 1.5 ( 2004 .) 1.6 ( 2006 .) — , !
- , IDE, , Java 11 (LTS) Java 14.
- 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-14 — , .
, , , Java 14, Java 8 JVM.
:
- «» Java, Java 12.
- , Java 8.
- , , Java 9-14, , .
Java?
« Java 8-14» .
, : , (3-5 , Java 8) .
, Java 9-14.
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-14}.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 14, Java 15.
- 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, SapMachine . , , / .
, .
OpenJDK
(Rafael Winterhalter) OpenJDK, : , , , .
: https://rafael.codes/openjdk/.
, 2019 , , jdk.zip (.tar.gz/.msi/.pkg) https://adoptopenjdk.net , .
Java 8-14
: ( ) Java 8 Java 14. Java .
, , Java 8 Java, (Java 9-14) .
, :
— 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 8
, Stream, Lambda Optional Java 8. , — — Java 8.
— 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 :
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
Switch ()
Switch , 12 13, .
int numLetters = switch (day) {
case MONDAY, FRIDAY, SUNDAY -> 6;
case TUESDAY -> 7;
default -> {
String s = day.toString();
int result = s.length();
yield result;
}
};
Records ()
Records (), Java. Java 14, , () / , equals / hashcode, toString.
final class Point {
public final int x;
public final int y;
public Point(int x, int y) {
this.x = x;
this.y = y;
}
}
:
record Point(int x, int y) { }
, .
NullPointerException
, NullPointerExceptions , null.
author.age = 35;
---
Exception in thread "main" java.lang.NullPointerException:
Cannot assign field "age" because "author" is null
InstanceOf ()
(cast) instanceof, :
if (obj instanceof String) {
String s = (String) obj;
}
, , cast.
if (obj instanceof String s) {
System.out.println(s.contains("hello"));
}
()
jpackage (), Java- , .
- Linux: deb rpm
- macOS: pkg dmg
- Windows: MSI EXE
Concurrent Mark Sweep (CMS) , Z.
Java 15
, . !
:
- Como instalar o Java, qual versão obter e onde obtê-la (dica: AdoptOpenJDK ).
- O que é uma distribuição Java, o que existe e quais são as diferenças.
- Quais são as diferenças entre versões específicas do Java.
Comentários, correções e sua opinião são sempre bem-vindos! Basta deixar um comentário abaixo.
Obrigado pela leitura!
Agradecimentos
Stephen Coleburn escreveu um artigo fantástico sobre as várias distribuições Java disponíveis. Obrigado Steven!