Kurs Java

Java 15 już we wrześniu

Tradycyjnie, tuż przed premierą wersji GA przedstawiamy co nowego w kolejnej wersji Javy. Tym razem bierzemy na tapetę wersję 15. Co ciekawe premiera Javy 15 została przewidziana na ...15 września. Ciekawe czy stanie się to pewnego rodzaju tradycją, że dzień premiery w miesiącu będzie zgodny z numerem wersji, czy też jest to po prostu zbieg okoliczności. Zobaczymy.

Zatem, co pojawi się w nowej odsłonie Javy?

Java 15 - 15 września 2020

  • Text Blocks

    Bloki tekstowe to coś, o czym pisaliśmy już dwukrotnie, za każdym razem licząc, że w kolejnej wersji Javy przestanie to być funkcjonalność eksperymentalna. Wreszcie doczekaliśmy się. W Javie 15 zostaje udostępniona finalna wersja.

    Przypomnijmy, że blok tekstowy to wieloliniowy ciąg znaków, który nie wymaga od nas dodawania znaku końca linii w celu przejścia do kolejnej linii. Jest to szczególnie przydatne, gdy w naszym pliku java chcemy użyć HTML-a lub SQL-a.

    I tak na przykład w przypadku HTML-a, zamiast dotychczasowej konstrukcji, możemy osiągnąć ten sam rezultat, stosując nowy, dużo czytelniejszy zapis:
    String html = "<html>\n" +
                  "    <body>\n" +
                  "        <p>Hello, world</p>\n" +
                  "    </body>\n" +
                  "</html>\n";
    
    String html = """
                  <html>
                     <body>
                          <p>Hello, world</p>
                      </body>
                  </html>
                  """;
    
    W przypadku SQL-a wygląda to analogicznie:
    "SELECT `EMP_ID`, `LAST_NAME` FROM `EMPLOYEE_TB`\n" +
    "WHERE `CITY` = 'INDIANAPOLIS'\n" +
    "ORDER BY `EMP_ID`, `LAST_NAME`;\n";
    
    """
    SELECT `EMP_ID`, `LAST_NAME` FROM `EMPLOYEE_TB`
    WHERE `CITY` = 'INDIANAPOLIS'
    ORDER BY `EMP_ID`, `LAST_NAME`;
    """
    
    Warto dodać, że rozwiązanie to może być z powodzeniem stosowane również w przypadku XML-i i JSON-ów.
  • Hidden classes

    Klasy ukryte to nowy rodzaj klas, który pozwala na ukrycie szczegółów implementacji frameworków. Klasy przestają być dostępne bezpośrednio w kodzie bajtowym dla innych klas, a także nie można się do nich dostać poprzez mechanizm refleksji. Klasa ukryta może być zdefiniowana jako członek gniazda kontroli dostępu, ma ograniczony cykl życia i może zostać w każdej chwili zwolniona (unloaded).

    Klasy, które były generowane do tej pory dynamicznie, mogą teraz być zdefiniowane na pewien czas w postaci ukrytej, co z dużym prawdopodobieństwem poprawi wydajność ich użycia w implementacjach rozwiązań w maszynie wirtualnej Javy. Przykładem klas, które mogą zyskać na takim rozwiązaniu, są dynamiczne instancje klas powstające na bazie wyrażeń lambda.
  • Sealed classes [preview]

    To jest co prawda funkcjonalność poglądowa (preview), ale nie można jej pominąć w tym zestawieniu. Klasa sealed (lub interfejs!) jest wszędzie widoczna tak jak klasa publiczna, ale w przeciwieństwie do niej, klasy sealed nie można dowolnie rozszerzać. Koncepcja klas zapieczętowanych (sealed) składa się z kilku modyfikatorów:
    • sealed - powoduje, że klasa lub interfejs są widoczne, tak jakby były publiczne, ale nie można z nich dowolnie dziedziczyć
      package com.example.geometry;
      
      public sealed class Shape {
          ...
      }
      
    • permits - pozwala podanym klasom na dziedziczenie mimo użycia sealed dla klasy bazowej
      package com.example.geometry;
      
      public sealed class Shape
          permits Circle, Rectangle, Square {...}
      
    • non-sealed - umożliwia odwrócenie tego, co wprowadził modyfikator sealed (klasa, która może dziedziczyć z klasy sealed, po wprowadzeniu tego modyfikatora, pozwala na dalsze dziedziczenie z siebie bez restrykcji wprowadzonych przez klasę sealed)
      package com.example.geometry;
      
      public non-sealed class Square extends Shape {...}
      
  • Records [preview]

    Rekordy omawialiśmy już w artykule Kolejne nowości w Javie 14. Rekordy to nowy rodzaj klasy, której deklaracja składa się z nazwy, nagłówka i treści. Nagłówek zawiera listę składników rekordu, czyli zmiennych tworzących jego stan. Obecna wersja dostępna jako preview zawiera zmiany oparte na opiniach społeczności dotyczącej poprzedniej wersji.
    public record Item (Long id,  String description) {}
    
    W powyższym przykładzie wszystkie zmienne, w tym przypadku id i description, będą miały automatycznie dostęp publiczny o takiej samej nazwie i typie zwracanym, jak ta zmienna. Ostatecznym celem rekordów jest umożliwienie programistom łatwiejszego niż dotychczas tworzenia niezmiennych konstrukcji opartych na danych w języku Java. Więcej o rekordach napiszemy, gdy staną się rozwiązaniem finalnym.
  • Pattern Matching for instanceof [preview]

    Podobnie jak w przypadku rekordów rozwiązanie to jest nadal dostępne jako preview. Natomiast wygląda na to, że ostatnio nie toczyły się nad nim żadne prace, ponieważ nie wprowadzono tutaj żadnych zmian. Zainteresowanych tym tematem odsyłamy do naszego opisu w artykule Java 14 już na horyzoncie.
Oprócz powyższych nowości/zmian wprowadzono jeszcze kilka innych - mocno zakorzenionych w strukturze maszyny wirtualnej (na przykład kolejne zmiany dotyczące garbage collectora ZGC). Pełna lista dostępna jest pod adresem: https://openjdk.java.net.

Podsumowując temat, można stwierdzić, że w Javie 15 poza blokami tekstowymi i klasami ukrytymi nie pojawia się nic spektakularnego, przynajmniej jeśli chodzi o wersje finalne wprowadzanych rozwiązań. Tryb preview udostępnia kilka naprawdę ciekawych rozwiązań, ale na możliwość ich użycia w pełnej krasie przyjdzie nam poczekać jeszcze przynajmniej kilka miesięcy (do marca, a może i dłużej).
Autor: Jarek Klimas
Data: 30 sierpnia 2020
Labele:Backend, Poziom średniozaawansowany, Java Linki:
https://openjdk.java.net
Masz swoje przemyślenia na temat artykułu? Podziel się nimi!
Masz pytanie odnośnie zagadnienia omawianego w artykule?
Coś, co napisaliśmy, nie zaspokoiło Twojego głodu wiedzy?
Daj nam znać co myślisz i skomentuj artykuł na facebooku!

Stale się rozwijamy, a więc bądź na bieżąco!
Na ten adres będziemy przesyłać informacje o ważniejszych aktualizacjach, a także o nowych materiałach pojawiających się na stronie.
Polub nas na Facebooku:
Nasi partnerzy: stackshare
Javappa to również profesjonalne usługi programistyczne oparte o technologie JAVA. Jeśli chesz nawiązać z nami kontakt w celu uzyskania doradztwa bądź stworzenia aplikacji webowej powinieneś poznać nasze doświadczenia.
Kliknij O nas .


Pozycjonowanie stron: Grupa TENSE