Jsme tu pro vás PO - PÁ 9:00 - 17:00 info@systeum.cz +420 608 408 716

Jsme tu pro vás PO - PÁ 9:00 - 17:00 obchod@systeum.cz +420 608 408 716

Přechod z Java 8 na Java 11: postřehy a zkušenosti

V několika posledních měsících jsem se bavil s pár kamarády, kteří pracují ve větších firmách, a všimli jsme si trendu, že se nyní ve velkém přechází na novou verzi Java 11. Všichni se potýkají s problémy, v některých firmách přechod zabral více času než jinde, někde se udělalo více chyb, někde méně. Každopádně se všichni shodli na tom, že byl ten proces velmi zajímavý a mnoho se naučili. Shodou okolností jsem měl v průběhu posledních měsíců i já možnost pozorovat velký přechod systémů z Java 8 na Java 11. Tak se pojďme podívat, co zajímavého jsem vypozoroval.

Proč přecházíme z Java 8 na Java 11?

Jedním z hlavních důvodů k přechodu bylo využití nových funkci, které Java 11 přináší. Například podporu „parallel garbage collection G1 - info“, ZGC a Epsilon garbage collectory, dále i TLS 1.3 a další zajímavé věci, například:

  1. Running Java File with single command
  2. New utility methods in String class
  3. Local-Variable Syntax for Lambda Parameters
  4. Nested Based Access Control
  5. JEP 321: HTTP Client
  6. Reading/Writing Strings to and from the Files
  7. JEP 328: Flight Recorder

Nová verze ale pouze nepřidává funkcionality, některé věci jsou „depricované“ (odstraněné). Oracle již nebude nabízet JRE a Server JRE ke stažení a také nebude možný auto-update. Java Applet, Java WebStart, Java Plugin a Java Control Panel již nebudou k dispozici v JDK (dokumentace).

Dalším důvodem pro přechod na Java 11 byla modularita, která přišla už s Java 9. Jde o možnost rozdělit aplikaci do několika modulů, což je v rámci našeho projektu klíčové. Pomocí module-info souboru se může spravovat přístup k jednotlivým částem kódu. Modulace kódu pak umožňuje nasadit jen určité části kódu (jeden specifický modul) bez potřeby buildovat a nasazovat další moduly.

Proběhl přechod hladce?

Upgrade na novou verzi Java 11 doprovázelo i pár komplikaci, které zapříčinily celkové selhaní některých modulů. Například jsme bojovali se špatným přepsáním určité části kódu. Upravili jsme jednu část kódu (jeden modul) a předpokládali, že jeho druhá část (druhý modul) nebude mít problémy se zpracováním dat. Bohužel spolu obě části kódu přestaly dobře komunikovat. Z toho důvodu se prováděl následný downgrade aby vše začalo zase pracovat. Úplně se oddělila nová Branch a celý kód jsme přepsali a upravili na jiném serveru, kde se zároveň i vše testovalo pomoci automatického testovacího frameworku. Jakmile jsme úspěšně provedli celkové otestování frontendu i backendu, mohlo se začít s přechodem na upravený systém. Samotný upgrade byl pak rychlejší, nešlo tedy jen o přepsaní některých částí kódu.

V rámci přechodu na Java 11 bylo potřeba upravit i automatický testovací tool a to na základě HttpClient API. Pro detailnější porozumění úpravám se můžete podívat zde.

Nebo mrkněte na ukázku httpGet:

HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("Constants.DEV_URL"))
.build();
client.sendAsync(request, BodyHandlers.ofString())
.thenApply(HttpResponse::body)
.thenAccept(System.out::println)
.join();

Proč se muselo upravovat?  

http Client byl nahrazen -> java.net.HttpURLConnection. Díky tomu se může použít http Request k získaní/vyžádaní zdrojů skrze sít. Také je zde podpora http/1.1 a http/2 v obou případech pro synchronní i nesynchronní komunikaci.

Performance a Security

Jedním z požadavků, který náš tým měl, bylo zvýšení Performance a Security, v čemž nám pomohla v Java 11 nově upravená funkcionalita: Garbage Collector. Java dokáže obsluhovat paměť, a když se pustí aplikace v rámci VM (virtual machine JVM), tak právě JVM přiděluje prostor, pokud aplikace potřebuje a pak zase uvolní, když ho už potřeba není. Právě toto „recyklovaní“ paměti v cyklech napomáhá lepšímu výkonu. Když se podíváme na G1 GC což je defaultní garbage collector od Java 9, tak příchodem Java 11 se zlepšila jeho výkonnost až o 60 %.

U zabezpečení se začalo používat TLS 1.3, které je nyní implementováno v JDK. Tuto funkcionalitu zahrnuli do úpravy aplikace také. Na začátku jsme se potýkali s pár problémy, avšak ty se brzy podařilo vyřešit i úpravou Keycloaku na vyšší verzi, kterou podporuje právě Java 11.

V průběhu měsíce se upgrade části kódu na Java 11 povedl a část fungovala bez problémů. Jelikož ale ještě nebyly hotové všechny úpravy, bylo potřeba na vývojové části hodně testovat. Nakonec se ale všechny defekty podařilo odstranit.

Sečteno podtrženo, přechod na Java 11 nám přinesl množství zajímavých situací, ještě nejsme u konce, další postřehy najdete ve 2. díle.

Přechod na Javu 11 pro vás sleduje Standa Keppert.

 

🟡 Hledáte zajímavý projekt? Mrkněte, jak to u nás chodí a jaké kolegy aktuálně hledáme.

🟡 Máte kolegu nebo kamaráda, který se poohlíží po novém projektu? Zapojte se do našeho referral programu Doporuč a získejte finanční odměnu za doporučení.

🟡 Chtěli byste začít pracovat v IT? Stáhněte si náš ebook ZAČNĚTE PRACOVAT V IT: aneb od prvních krůčků po vysněnou práci, ve kterém vás provedeme krůček po krůčku informacemi, kurzy i praxí, které jsou tolik potřebné nejen pro ty, kteří chtějí změnit obor, ale i pro ty, kteří se chtějí pracovně posunout a dále se vzdělávat.

Nebo sdílejte tento článek, který třeba poslouží i vašim známým.

Chcete dostávat naše články pravidelně do schránky? Nechte nám tady svůj email a my si rádi zahrajeme na poštovní sovy.

Mohlo by vás také zajímat

Jak začít jako junior SW developer

čtení na 5 minut 21.10.2020

Jak vás telefon odposlouchává a skr...

čtení na 3 minuty 18.7.2022

Z IT světa – Jaké technologie by vá...

čtení na 3 minuty 29.1.2021

IT kdysi byla čistě ženská disciplí...

čtení na 4 minuty 18.1.2022

Typy outsourcingu IT specialistů

čtení na 5 min 2.4.2024

Jak se o nás mluví?
Zeptejte se našich klientů…

Systeum
Systeum

„Systeum je jedním z největších dodavatelů našich testerských kapacit. Můžu říct, že kvalita uchazečů je vysoko nad průměrem. Také oceňuji velkou ochotu vyjít vstříc všem našim požadavkům.“

Head of test execution

„Systeum je dlouhodobý partner, u kterého máme jistotu, že kandidáti jsou kvalitní a prověření. Od roku 2015 máme díky nim fungující kvalitní seniorní týmy C++ embedded vývojářů a auto testerů.“

Head of Payment Application

„Systeum, thank you for your help to find the right fit to my team! I can recommend cooperation with you to everybody. Very professional, smooth and friendly.“

IT CIM Inventory Management Development

Příklady dlouhodobé spolupráce

Porsche Moneta Raiffeisenbank Generali Komerční banka Monster