рдЬрд╛рд╡рд╛ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдЧрд╛рдЗрдб 8-14

рдЗрд╕рдореЗрдВ рд╡рд╣ рд╕рдм рдХреБрдЫ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЬрд╛рд╡рд╛ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ред



рдЬрд╛рд╡рд╛ 8, рдЬрд╛рд╡рд╛ 11, рдЬрд╛рд╡рд╛ 13, рдЬрд╛рд╡рд╛ 14 - рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ?


рдЬрд╛рд╡рд╛ рд╡рд┐рддрд░рдг рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЦреЛрдЬрдиреЗ рдФрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдЗрд╕ рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд╛рд╡рд╛ рд╡рд┐рддрд░рдг (AdoptOpenJdk, OpenJDK, OracleJDK, рдЖрджрд┐) рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рдЬрд╛рд╡рд╛ рд╕рдВрд╕реНрдХрд░рдг рд╕рд╣рд┐рдд рдЬрд╛рд╡рд╛ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЕрд╡рд▓реЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреАред 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


, . !



:


  • рдЬрд╛рд╡рд╛ рдХреЛ рдХреИрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП, рдХреМрди рд╕рд╛ рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реИ рдФрд░ рдХрд╣рд╛рдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реИ (рд╕рдВрдХреЗрдд: AdoptOpenJDK )ред
  • рдЬрд╛рд╡рд╛ рд╡рд┐рддрд░рдг рдХреНрдпрд╛ рд╣реИ, рдХреНрдпрд╛ рдореМрдЬреВрдж рд╣реИ рдФрд░ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИрдВред
  • рдЬрд╛рд╡рд╛ рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХреНрдпрд╛ рд╣реИрдВред

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛, рд╕реБрдзрд╛рд░ рдФрд░ рдЖрдкрдХреЗ рдЗрдирдкреБрдЯ рдХрд╛ рд╣рдореЗрд╢рд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ! рдмрд╕ рдиреАрдЪреЗ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЫреЛрдбрд╝ рджреЛред


рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!


рд╕реНрд╡реАрдХреГрддрд┐рдпрд╛рдБ


рд╕реНрдЯреАрдлрди рдХреЛрд▓рдмрд░реНрди рдиреЗ рд╡рд┐рднрд┐рдиреНрди рдЬрд╛рд╡рд╛ рд╡рд┐рддрд░рдг рдЙрдкрд▓рдмреНрдз рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╢рд╛рдирджрд╛рд░ рд▓реЗрдЦ рд▓рд┐рдЦрд╛ ред рдзрдиреНрдпрд╡рд╛рдж рд╕реНрдЯреАрд╡рди!


All Articles