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 čekejte brzy.

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

Mohlo by vás také zajímat

Bitcoin is on the rise

čtení na 3 minuty 19.1.2021
Číst dál

Jak začít jako junior SW developer

čtení na 5 minut 21.10.2020
Číst dál

Take Control (DualSense vs Xbox One)

čtení na 4 minuty 3.12.2020
Číst dál

Zlatá pravidla emailové etikety

čtení na 3 minuty 29.7.2020
Číst dál

Pohovor v IT: Jak se obléct?

čtení na 3 minuty 4.11.2020
Číst dál

IT konference a online kurzy

čtení na 3 minuty 16.6.2020
Číst dál

Jaká byla React Girls Academie?

čtení na 3 minuty 26.11.2020
Číst dál

Když prezentuje introvert

čtení na 2 minuty 7.10.2020
Číst dál

11 tipů na online pohovor

čtení na 2 minuty 8.6.2020
Číst dál

GPT-3 speaks at a human degree

čtení na 4 minuty 30.12.2020
Číst dál

Podporujeme ženy v IT

čtení na 2 minuty 23.9.2020
Číst dál

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

„Na spolupráci nejvíce oceňuji individuální přístup. Systeum nám zajišťuje tým testerů, C/C++ a Java developery. Specialisté odpovídají našim požadavkům na znalosti síťových protokolů i cloud řešení.“

Chief Technology Officer

„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

Partneři, se kterými spolupracujeme

Aevi Raiffeisenbank 2N TELEKOMUNIKACE Komerční banka Monster

Náš web využívá soubory cookies. Prohlížením našich stránek souhlasíte s pravidly jejich používání.

Souhlasím