Java功能指南8-14

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



Java 8,Java 11,Java 13,Java 14-有什么区别?


您可以使用本指南来获取有关如何查找和安装最新版本的Java的实用信息,以了解Java发行版(AdoptOpenJdk,OpenJDK,OracleJDK等)之间的差异,以及获得包括Java版本在内的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, .


  1. OpenJDK Oracle (!). , Oracle , , Java 14, Java 15.
  2. 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


// Pre-Java 10
String myName = "Marco";
// With Java 10
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:
    // code block
    break;
  case FREE_TRIAL:
    // code block
    break;
  default:
    // code block
}

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;
    }
}
    // state-based implementations of equals, hashCode, toString
    // nothing else

:


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;
    // use s
}

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


, . !



:


  • 如何安装Java,要获取的版本以及在何处获取(提示:AdoptOpenJDK)。
  • 什么是Java发行版,存在什么以及有什么区别。
  • Java的特定版本之间有什么区别。

随时欢迎您提供反馈,更正和您的意见!请在下面发表评论。


谢谢阅读!


致谢


Stephen Coleburn写了一篇很棒的文章,介绍了可用的各种Java发行版。谢谢史蒂文!


All Articles