
Marketing konwersacyjny. Jak przeprowadzić kupującego przez ścieżkę marketingową.
14 sierpnia 2020
Wskaźniki Google – Core Web Vitals
28 sierpnia 2020
Najnowsze wersje Javy ukazały się odpowiednio we wrześniu 2019 r. (Java 13) i sześć miesięcy później w marcu (Java 14). Opiszemy je po kolei, aby zobaczyć zmiany, które zaszły na przestrzeni czasu.
„, „120516d”: „JAVA 13
„, „6005d53”: „Oprócz ponad 2300 poprawek błędów i drobnych ulepszeń, nowa wersja Java zawiera 5 głównych ulepszeń, które są również nazywane JEP-ami. Java 13 wprowadza usprawnienia w zakresie usuwania pamięci, udostępniania danych klas aplikacji i bloków tekstowych.
„, „739d428”: „Wprowadzenie bloków tekstowych
„, „2dd4826”: „Główną nową funkcją Javy 13 dla programistów jest wprowadzenie bloków tekstowych. Ponownie, architekci odpowiedzialni za ewolucję Javy postanowili zachować ostrożność, ponieważ bloki tekstowe są dostępne tylko jako funkcja eksperymentalna w Javie 13.
„, „751855e”: „Bloki tekstowe to po prostu nowy typ literału łańcuchowego, który pozwala pisać łańcuchy w wielu wierszach. Aby uprościć ich użycie, zdecydowano, że blok tekstowy będzie rozpoczynał się od nowego, określonego separatora i znaku końca wiersza. Pozwala to na użycie prostych cudzysłowów w bloku tekstowym bez ich ucieczki.
„, „7362fc5”: „Bloki tekstowe zachowują zdefiniowane przez użytkownika wcięcia, gdy są deklarowane w kodzie źródłowym. Usuwane jest tylko wcięcie wykonane przed pierwszą literą, ponieważ jest ono uważane za losowe.
„, „40d5b7a”: „Ulepszenia w Garbage Collectorze
„, „7577884”: „Garbage Collector jest istotną częścią wirtualnych maszyn Java. Wraz z rozwojem JDK, aby sprostać nowym potrzebom aplikacji Java, Oracle i Red Hat zaproponowały nowe implementacje.
„, „2519ceb”: „W ten sposób w Javie 11 pojawił się niskopoziomowy Garbage Collector o nazwie ZGC. Ten Garbage Collector był oferowany eksperymentalnie i nie był dostępny dla wszystkich środowisk.
„, „771ef82”: „W Javie 13 ZGC został ulepszony, aby umożliwić zwracanie nieużywanego stosu pamięci do bazowego systemu operacyjnego. Obecnie ZGC tego nie robi, a to zachowanie wyraźnie nie było optymalne dla wszystkich typów aplikacji i środowisk docelowych. Było to jeszcze bardziej problematyczne w przypadkach, gdy wykorzystanie pamięci jest poważnym problemem. Na przykład:
„, „357b98d”: „- \n
- Środowiska kontenerowe. \n
- \n
- Środowiska, w których aplikacja może być wyłączona przez długi czas i może konkurować z innymi aplikacjami o zasoby. \n
- \n
- Aplikacja, której wymagania dotyczące miejsca na dysku mogą zmieniać się podczas działania. \n
Inne garbage collectory, takie jak G1 lub Shenandoah firmy Red Hat, zapewniają obecnie tę możliwość. Konieczne było zatem dodanie tej możliwości do ZGC w Javie 13, aby ułatwić jego przyszłe wdrożenie.
„, „46fb8e1”: „API Gniazd
„, „7d1c68e”: „Ponowna implementacja starszego API Gniazd, która zastępuje podstawową implementację używaną przez API gniazd, nowocześniejszą implementacją, łatwą do debugowania i utrzymania. Nowa implementacja zostanie dostosowana do pracy z wątkami trybu użytkownika, znanymi również jako włókna. Starsze wspomniane API pochodzą z JDK 1.0 i są mieszanką starszego kodu C i Java, opisywanego jako trudny do debugowania i utrzymania. Starsza implementacja ma również inne problemy, takie jak natywna struktura danych do obsługi asynchronicznego wyłączania, co powoduje problemy z niezawodnością i przenośnością, oraz problemy z współbieżnością, które muszą zostać poddane przeglądowi.
„, „531efec”: „Dynamiczne Archiwa CDS
„, „1d60065”: „Wiele wydarzyło się w wirtualnej maszynie Java (JVM) i bibliotece klas. Class Data Sharing (CDS) zostało wprowadzone w Javie 5. Celem CDS jest skrócenie czasu uruchamiania aplikacji Java poprzez przechowywanie niektórych informacji o klasach w archiwach Class Data Sharing. Dane te mogą być następnie ładowane w czasie wykonywania i używane przez kilka JVM.
„, „3d6611e”: „Jednak do Javy 10, współdzielone archiwa były dostępne tylko dla ładowarki modułów klasy Bootstrap. Począwszy od Javy 10, CDS zostało rozszerzone na Application Class Data Sharing (AppCDS). AppCDS umożliwia wbudowanym systemom i platformowym ładowarkom klas, a także zdefiniowanym przez użytkownika ładowarkom klas, dostęp do archiwów CDS. Listy klas są wymagane do tworzenia archiwów CDS w celu identyfikacji klas do załadowania.
„, „61f1c2b”: „Wcześniej te listy klas musiały być określane przez testowe uruchomienia aplikacji, aby ustalić, które klasy zostały faktycznie załadowane podczas wykonania. Od Javy 12, domyślne archiwa CDS są dostarczane z JDK, które są oparte na liście klas JDK. Celem jest zaoszczędzenie dodatkowych testowych uruchomień aplikacji. Po wykonaniu aplikacji archiwizowane są tylko nowo załadowane klasy aplikacji i biblioteki, które nie są jeszcze w CDS domyślnej warstwy, dynamiczne archiwowanie jest aktywowane poprzez linię poleceń.
„, „1b712c9”: „Wyrażenia switch
„, „45b9b81”: „Jest to aktualizacja, która wprowadziła nowe wyrażenia switch w JDK 12 jako funkcję podglądu języka. Dodano nową, uproszczoną formę bloku switch z etykietami. Po wprowadzeniu nowej składni w JDK 12, wysłano prośbę o opinię na listę mailingową. Zebrane opinie zaowocowały badaniem, które wprowadza tylko jedną zmianę. W nowej wersji wyrażeń switch, zostanie ona zastąpiona nową instrukcją yield. Nowe wyrażenia Switch są nadal dostępne tylko w trybie podglądu. Java 13 nie ma wielu JEP-ów. Dla większości użytkowników Javy interesujące będą tylko bloki tekstowe i wyrażenia Switch. Jednak są to tylko funkcje języka podglądu, które nie są dostępne domyślnie.
„, „73a11bf”: „JAVA 14
„, „7464010”: „Java 14 dodaje nowe funkcje, aby poprawić produktywność programistów, w tym wsparcie Java dla wyrażeń Switch, nowe API do ciągłego monitorowania danych JDK Flight Recorder oraz zwiększoną dostępność niskopoziomowego Z Garbage Collector dla macOS i Windows.
„, „350e932”: „JDK 14 przynosi wiele nowych funkcji do języka programowania Java. Niektóre z nich są bardziej interesujące niż inne, a niektóre są bardziej jak porządkowanie. Oto podsumowanie nowych funkcji:
„, „1905470”: „Dopasowanie wzorców dla instanceof
„, „742b82e”: „Jest to funkcja podglądu w JDK 14. Dopasowanie wzorców pozwala na bardziej zwięzłe i bezpieczniejsze przedstawienie typowej logiki programu, głównie warunkowego wyodrębniania komponentów z obiektów. Kod może być krótki i bezpieczny dla typów.
„, „37792fb”: „Alokacja pamięci w tym NUMA dla G1
„, „303e2c3”: „Alokacja pamięci NUMA dla modułu Garbage Collector G1 ma na celu poprawę wydajności G1 na dużych maszynach.
„, „60032e6”: „Strumieniowanie zdarzeń JFR
„, „16f1a45”: „Strumieniowanie zdarzeń JFR zapewnia API do ciągłego wykorzystywania danych JFR zarówno z aplikacji w procesie, jak i poza procesem. JFR to narzędzie do zbierania profili i diagnostycznych danych dotyczących uruchomionych aplikacji Java i maszyny wirtualnej Java. Propozycja strumieniowania zdarzeń rejestruje ten sam zestaw zdarzeń, co w przypadku braku strumieniowania, z narzutem mniejszym niż jeden procent, jeśli to możliwe. Strumieniowanie zdarzeń musi współistnieć z nagraniami niestrumieniowymi, zarówno na dysku, jak i w pamięci.
„, „573df21”: „MappedByteBuffer
„, „19e917d”: „MappedByteBuffer z możliwością rozszerzenia dostępu do pamięci nieulotnej (NVM). Ta pamięć jest używana do trwałego przechowywania danych. Ta propozycja ulepszeń Java wprowadza nowy moduł i klasę do API JDK.
„, „2ac2b2b”: „NullPointerExceptions
„, „19d268d”: „Ulepszenie NullPointerExceptions dotyczy użyteczności wyjątków generowanych przez wirtualną maszynę Java. Ma to na celu dostarczenie przydatnych informacji programistom o przedwczesnym zakończeniu programu i poprawę zrozumienia programu poprzez wyraźniejsze powiązanie dynamicznego wyjątku ze statycznym kodem programu.
„, „2519184”: „Records
„, „50d9c15”: „JEP 359 udostępnia rekordy jako funkcję podglądu dla Javy. Rekordy to nowy typ. Reprezentują ograniczoną formę deklaracji klasy. Rekordy różnią się od klasycznych klas tym, że nie mogą oddzielić swojego API od swojej reprezentacji. Jednak utracona wolność jest rekompensowana zwiększoną precyzją.
„, „75179a6”: „Wyrażenia Switch
„, „34138e4”: „W JEP 325 zaproponowano rozszerzenie instrukcji switch tak, aby mogła być używana jako instrukcja lub wyrażenie. Obie formy powinny być w stanie używać „tradycyjnych” lub „uproszczonych” zmiennych i struktur kontrolnych. Celem tego JEP-a było uproszczenie codziennego programowania i utorowanie drogi do dopasowywania wzorców w połączeniu z instrukcją Switch.
„, „17f919d”: „Usunięcie portów Solaris i SPARC
„, „1b4c107”: „System operacyjny Solaris nie jest już tak naprawdę aktualny. W związku z tym chęć Oracle do oznaczenia portów dla Solaris / SPARC, Solaris / x64 i Linux / SPARC jako przestarzałych nie jest zaskoczeniem. Należy jednak zauważyć, że stare wersje Javy (do JDK 14) powinny działać bez zmian na starych systemach, włączając w to odpowiednie porty. Celem tego wszystkiego jest zajęcie się innymi funkcjami.
„, „32e724a”: „Usunięcie modułu CMS (Concurrent Mark Sweep)
„, „3084666”: „Usunięcie Garbage Collector Concurrent Mark Sweep (CMS), który był wcześniej zbędny i przeznaczony do usunięcia. Powstały następcy CMS, w tym ZGC i Shenandoah.
„, „4d326f2”: „Z Garbage Collector na macOS i Windows
„, „44d1565”: „Propozycja ma na celu udostępnienie Z Garbage Collector jako opcji dla użytkowników macOS i Windows. Istnieje również funkcjonalność kolektora do zwolnienia nieużywanej pamięci dla systemu.
„, „3c79a97”: „Wycofanie wywołania ParallelScavenge + SerialOld
„, „5d14300”: „JEP 366 dotyczy również garbage collectorów, a w tym przypadku kombinacji dwóch: ParallelScavenge i SerialOld. Sugeruje się oznaczenie kombinacji tych dwóch algorytmów jako przestarzałych, ponieważ prawdopodobnie tylko niewielu programistów używa ich w tej konstelacji.
„, „41a340b”: „Usunięcie narzędzia Pack 200
„, „3dd1798”: „Pack200 to schemat kompresji plików JAR. Usunięto narzędzia i API Pack200. Wszystkie zostały wycofane w Java SE 11 z zamiarem ich usunięcia w przyszłości.
„, „76c7c4e”: „Bloki tekstowe
„, „1f0709b”: „Druga wersja podglądu bloków tekstowych, wieloliniowy literał ciągu, który unika większości specjalnych sekwencji i automatycznie formatuje ciąg w przewidywalny sposób.
„, „6696b9f”: „Foreign Memory Access API
„, „143bb04”: „Istnieją tysiące bibliotek i aplikacji Java, które uzyskują dostęp do pamięci zewnętrznej. Jednak samo API Java nie zapewnia dobrego sposobu na to, chociaż może obniżyć koszty czyszczenia i współdzielić pamięć między wieloma procesami.
„, „3b5ee94”: „Java 14 przynosi wiele nowości. Wprowadzono w niej kilka interesujących zmian, jednak warto zaznaczyć, że nie są to zmiany przełomowe. Jednak, podobnie jak w poprzednich edycjach, widoczny jest trend stopniowej modernizacji języka. Stale otrzymujemy ulepszenia Garbage Collectors, które są kluczowe dla wydajności aplikacji maszyn wirtualnych Java.
” } }

