Kompilimi natyral nĂ« Quarkus – pse Ă«shtĂ« e rĂ«ndĂ«sishme

PĂ«rshĂ«ndetje tĂ« gjithĂ«ve! Kemi postimin e dytĂ« nga seria jonĂ« pĂ«r Quarkus – sot do tĂ« flasim mbi kompilimin natyral.

Kompilimi natyral nĂ« Quarkus – pse Ă«shtĂ« e rĂ«ndĂ«sishme

Quarkus – Ă«shtĂ« njĂ« stak Java, i optimizuar pĂ«r Kubernetes. Edhe pse, natyrisht, ka shumĂ« pĂ«r tĂ« bĂ«rĂ« kĂ«tu, ne kemi punuar mirĂ« mbi shumĂ« aspekte, pĂ«rfshirĂ« optimizimin e JVM dhe njĂ« varg framework-esh. NjĂ« nga veçoritĂ« e Quarkus qĂ« ka tĂ«rhequr interes tĂ« madh nga zhvilluesit Ă«shtĂ« qasja komplekse dhe pa brez nĂ« transformimin e kodit Java nĂ« skedarĂ« ekzekutues pĂ«r sistemin operativ specifik (e njohur si "kompilimi natyral"), nĂ« mĂ«nyrĂ« tĂ« ngjashme me C dhe C++, ku njĂ« kompilim i tillĂ« zakonisht ndodh nĂ« fund tĂ« ciklit tĂ« ndĂ«rtimit, testimit dhe implementimit.

Edhe pse kompilimi natyral, siç do ta tregojmë më poshtë, është i rëndësishëm, duhet të thuhet se Quarkus punon shumë mirë edhe në makinën standarde Java OpenJDK Hotspot për shkak të përmirësimeve të performancës që kemi zbatuar në të gjithë stakun. Prandaj, kompilimi natyral duhet të shihet si një përfitim shtesë që mund të përdoret sipas dëshirës ose nevojës. Në të vërtetë, kur bëhet fjalë për imazhet natyrale, Quarkus në masë të madhe mbështetet te OpenJDK. Ndërkohë, moda dev e pritur mirë nga zhvilluesit ofron testim pothuajse të menjëhershëm të ndryshimeve përmes mjeteve të zhvilluara për ekzekutimin dinamik të kodit, të realizuara në Hotspot. Për më tepër, gjatë krijimit të imazheve natyrale, GraalVM aktivizon bibliotekën e klasave OpenJDK dhe mundësitë e HotSpot.

Pra, përse na nevojitet kompilimi natyral, nëse gjithçka është optimizuar kaq mirë? Në këtë pyetje do të përpiqemi të përgjigjemi më poshtë.

Le të fillojmë me të dukshmen: Red Hat ka shumë përvojë në optimizimin e JVM, stack-ëve dhe framework-eve gjatë zhvillimit të projektit JBoss, duke përfshirë:

  • Serveri i parĂ« i aplikacioneve pĂ«r tĂ« punuar nĂ« cloud mbi platformĂ«n Red Hat OpenShift.
  • Serveri i parĂ« i aplikacioneve pĂ«r tĂ« punuar nĂ« komputerat Plug PC.
  • Serveri i parĂ« i aplikacioneve pĂ«r tĂ« punuar nĂ« Raspberry Pi.
  • NjĂ« gamĂ« tĂ« gjerĂ« projektesh qĂ« funksionojnĂ« nĂ« pajisje Android.

Ne jemi angazhuar prej vitesh nĂ« zgjidhjen e problemeve tĂ« ekzekutimit tĂ« aplikacioneve Java nĂ« cloud dhe nĂ« pajisje me burime tĂ« kufizuara (lexo, IoT) dhe kemi mĂ«suar tĂ« nxjerrim maksimumin nga JVM nĂ« aspektin e performancĂ«s dhe optimizimit tĂ« memories. Ashtu si shumĂ« tĂ« tjerĂ«, ne kemi punuar prej kohĂ«sh me kompilimin natyral tĂ« aplikacioneve Java pĂ«rmes GCJ, Avian, Excelsior JET dhe madje Dalvik dhe e kuptojmĂ« mirĂ« pĂ«rfitimet dhe disavantazhet e kĂ«tij qasje (pĂ«r shembull, dilemĂ«n e zgjedhjes midis universialitetit "build once – run-anywhere" dhe faktit se aplikacionet e kompilura kanĂ« njĂ« pĂ«rmasĂ« mĂ« tĂ« vogĂ«l dhe fillojnĂ« mĂ« shpejt).

Pse është kaq e rëndësishme të merret parasysh këto përfitime dhe disavantazhe? Sepse në disa situata proporcioni i tyre bëhet vendimtar:

  • PĂ«r shembull, nĂ« ambientet serverless/ndĂ«rvepruese me ngjarje, ku shĂ«rbimet duhet tĂ« nisin nĂ« modin (tĂ« ashpĂ«r ose tĂ« butĂ«) tĂ« kohĂ«s reale, pĂ«r t'u pĂ«rgjigjur nĂ« kohĂ« ndaj ngjarjeve. Ndryshe nga shĂ«rbimet e qĂ«ndrueshme me jetĂ« tĂ« gjatĂ«, kĂ«tu, koha e ftohjes kritikon rĂ«ndĂ« kohĂ«n e pĂ«rgjigjes ndaj kĂ«rkesave. Akoma merr njĂ« kohĂ« tĂ« konsiderueshme pĂ«r fillimin e JVM, dhe megjithĂ«se nĂ« disa raste mund tĂ« shkurtohet pĂ«rmes metodave tĂ« pastra harduerike, ndryshimi midis njĂ« sekonde dhe 5 milisekondave mund tĂ« jetĂ« njĂ« çështje jete dhe vdekje. Po, kĂ«tu mund tĂ« eksperimentojmĂ« me krijimin e njĂ« rezervĂ« tĂ« nxehtĂ« tĂ« makinave Java (siç e kemi bĂ«rĂ«, pĂ«r shembull, gjatĂ« portimit tĂ« OpenWhisk nĂ« Knative), por vetĂ« kjo nuk garanton numrin e mjaftueshĂ«m tĂ« JVM pĂ«r tĂ« trajtuar kĂ«rkesat nĂ« pĂ«rputhje me ngarkesĂ«n. Edhe nga pikĂ«pamja ekonomike, kjo, sigurisht, nuk Ă«shtĂ« zgjidhja mĂ« e mirĂ«.
  • MĂ« tej, ka njĂ« aspekt tjetĂ«r qĂ« shpesh paraqitet, siç Ă«shtĂ« multitensionimi. MegjithĂ«se JVM ka arritur shumĂ« afĂ«r mundĂ«sive tĂ« sistemeve operative, ato ende nuk janĂ« nĂ« gjendje tĂ« bĂ«jnĂ« atĂ« qĂ« jemi mĂ«suar me tĂ« nĂ« Linux – tĂ« izolojnĂ« proceset. KĂ«shtu qĂ« njĂ« dĂ«shtim i njĂ« thase mund tĂ« dĂ«shtojĂ« tĂ« gjithĂ« makinĂ«n Java. ShumĂ« pĂ«rpiqen ta anashkalojnĂ« kĂ«tĂ« disavantazh duke ndarĂ« njĂ« JVM tĂ« veçantĂ« pĂ«r aplikacionet e çdo pĂ«rdoruesi, pĂ«r tĂ« minimizuar pasojat e dĂ«shtimit. Kjo Ă«shtĂ« krejt logjike, por nuk pĂ«rshtatet mirĂ« me shkallĂ«zimin.
  • PĂ«rveç kĂ«saj, pĂ«r aplikacionet e orientuara nĂ« cloud, njĂ« tregues i tillĂ« si densiteti i shĂ«rbimeve nĂ« host Ă«shtĂ« i rĂ«ndĂ«sishĂ«m. Kalimi nĂ« metodologjinĂ« 12 faktorĂ«t e aplikacionit, mikroservisĂ«t dhe Kubernetes rrisin numrin e makinave Java pĂ«r njĂ« aplikacion. KĂ«shtu, nga njĂ«ra anĂ«, gjithçka kjo ofron elasticitet dhe besueshmĂ«ri, por njĂ«kohĂ«sisht rritet edhe shpenzimi i memorjes bazĂ« pĂ«r çdo shĂ«rbim, pĂ«r mĂ« tepĂ«r, njĂ« pjesĂ« e kĂ«tyre shpenzimeve shpesh nuk Ă«shtĂ« absolutisht e nevojshme. SkedarĂ«t ekzekutivĂ« tĂ« kompiluar statikisht pĂ«rfitojnĂ« kĂ«tu nga teknika tĂ« ndryshme optimizimi, si eliminimi i kodit tĂ« vdekur nĂ« nivel tĂ« ulĂ«t, kur nĂ« imazhin pĂ«rfundimtar pĂ«rfshihen vetĂ«m ato pjesĂ« tĂ« kuadrit (pĂ«rfshirĂ« dhe JDK-nĂ« e vet) qĂ« shĂ«rbimi realizohet vĂ«rtet. Prandaj, kompilimi natyror i Quarkus ndihmon nĂ« vendosjen mĂ« tĂ« ngjeshur tĂ« kopjeve tĂ« shĂ«rbimeve nĂ« host pa kompromise pĂ«r sigurinĂ«.

Argumentet e sipërpërmendura janë tashmë të mjaftueshme për të kuptuar arsyeshmërinë e kompiluese natyrore nga pikëpamja e pjesëmarrësve në projektin Quarkus. Megjithatë, ekziston edhe një arsye tjetër, jo teknike, por njësoj e rëndësishme: vitet e fundit shumë programues dhe kompani zhvilluesh janë distancuar nga Java në favor të gjuhëve të reja të programimit, duke e konsideruar Java-n së bashku me JVM-të e saj, stakët dhe kuadrot si shumë të pangopura në lidhje me memorjen, tepër të ngadalta, etj.

MegjithatĂ«, zakoni pĂ«r tĂ« pĂ«rdorur tĂ« njĂ«jtin mjet pĂ«r zgjidhjen e çdo problemi – nuk Ă«shtĂ« gjithmonĂ« e drejtĂ«. NdonjĂ«herĂ« Ă«shtĂ« mĂ« mirĂ« tĂ« bĂ«sh njĂ« hap prapa dhe tĂ« kĂ«rkosh diçka tjetĂ«r. Dhe nĂ«se Quarkus i bĂ«n njerĂ«zit tĂ« ndalojnĂ« dhe tĂ« mendojnĂ«, atĂ«herĂ« kjo Ă«shtĂ« e mirĂ« pĂ«r tĂ«rĂ« ekosistemin Java. Quarkus pĂ«rfaqĂ«son njĂ« qasje novatore pĂ«r krijimin e aplikacioneve mĂ« efikase, duke e bĂ«rĂ« Java-n mĂ« tĂ« rĂ«ndĂ«sishme pĂ«r arkitekturat e reja tĂ« aplikacioneve, si p.sh. serverless. PĂ«r mĂ« tepĂ«r, falĂ« zgjerueshmĂ«risĂ« sĂ« tij, shpresojmĂ« se Quarkus do tĂ« ketĂ« njĂ« ekosistem tĂ« tĂ«rĂ« Java-zhvillimesh, duke rritur ndjeshĂ«m numrin e kuadrove qĂ« do tĂ« mbĂ«shtesin natyrisht kompilimin natyror si pjesĂ« e aplikacioneve.

Burimi: habr.com

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster