9 villur sem ber að forðast við forritun í Java
Hvaða villur ætti að forðast við forritun í Java? Í eftirfarandi kafla svörum við þessari spurningu.
Er til gullinmeðal til að takast á við mörg umhverfi fyrir mikinn fjölda á einni vél? Java-sérfræðingur okkar, Bartłomiej, veit svarið!
Hér er tómt.Skoðum dæmigerðan vinnustað í hugbúnaðarfyrirtæki. Þú átt nokkra viðskiptavini sem hafa mismunandi umhverfi. Sumir kjósa MySQL, aðrir kjósa Postgres. Ein útgáfa af forritinu þínu þarf Java 11 og önnur Java 17. Framhliðin þarf npm 12 eða 16 vegna þess að þú notar mismunandi útgáfur af hornlaga. Að lokum ertu kominn með þrívíddar fylki sem inniheldur allar mögulegar samsetningar af öllum útgáfum gagnagrunnanna þinna, bakenda og framenda. Hljómar illa, en einn daginn segir yfirmaðurinn þinn…

Ástandið sem lýst er hér að ofan er ekki óalgengt. Flutningur milli tungumála- eða rammasetningarútgáfa, uppfærslur á gagnagrunnum eða einfaldlega mismunandi kröfur frá viðskiptavinum geta snúið öllum stillingum á hvolf. Við ættum að hafa lausn sem hjálpar okkur stjórna þeim breytingum, einn sem samræmist nokkrum forsendum og/eða kröfum og/eða markmiðum:
Í þessari grein mun ég einbeita mér að þremur sviðum. Fyrsta sviðið eru verkfæri fyrir Java og JVM. Annað sviðið eru almenn verkfæri. Þriðja sviðið er hvernig á að nota dökker til að ná markmiðum okkar.
Þegar þú ert a Java-forritari eða, almennt séð, vinnur þú með JVM-tækni, þá geturðu notað SDKMAN!. Þetta er mjög gott og auðvelt í notkun tæki sem styður mörg bókasöfn, rammasöfn og forritunarmál.
Uppsetningarferlið af SDKMAN! Það er nokkuð einfalt. Þú þarft að keyra:
curl -s "https://get.sdkman.io" | bashHljóðskrift
og svo
heimild "$HOME/.sdkman/bin/sdkman-init.sh"HljóðskriftHljóðskrift
Nú geturðu stjórnað þínum Java, Stigi og Maven útgáfur.
Í þessu dæmi munum við setja upp og uppfæra útgáfu nokkurra verkfæra. Þetta er aðeins lítill hluti af tiltækum verkfærum.
Segjum að nýja þitt verkefni notar Java 17. Þú átt engan Java Útgáfa er uppsett. Þú vilt setja hana upp og auk þess bæta við Maven Daemon-tóli til að hraða byggingum. Þess vegna þarftu einnig að setja upp Maven. Til þess þarftu að keyra þrjá einfaldar skipanir:
$ sdk install java 17-open
$ sdk install maven 3.8.4
$ sdk install mvnd 0.7.1
Í lok uppsetningar hvers tóls verður þér spurt hvort þú viljir gera það að sjálfgefnu:
Viltu að Java 17-open sé stillt sem sjálfgefið? (Já/Nei):Hljóðskrift
Þetta er mikilvægt þegar þú setur upp nýja útgáfu af bókasafni eða forritunarmáli, því SDKMAN! mun gera þá sjálfgefnu útgáfu að almennri útgáfu fyrir alla skeljar núverandi notanda.
Frá tíma til tíma þarf SDKMAN! að uppfæra vísitölur. Á meðan þessu stendur gætirðu fengið skilaboð um að til séu nýjar útgáfur af verkfærum sem þú notar. Við getum athugað hvaða útgáfur eru í boði með því að slá inn sdk ls. Fyrir sdk ls maven:
Fáanlegar Maven-útgáfur
================================================================================
3.8.6 3.3.3
3.8.5 3.3.1
3.8.4 3.2.5
3.8.3 3.2.3
3.8.2 3.2.2
3.8.1 3.2.1
3.6.3 3.1.1
3.6.2 3.1.0
3.6.1 3.0.5
3.6.0 3.0.4
3.5.4
3.5.3
3.5.2
3.5.0
3.3.9
================================================================================
staðbundin útgáfa
í notkun
================================================================================
Eins og sjá má hér að ofan hefur Maven nýrri útgáfu en þá sem við notum. Það sama gildir um mvnd (0.8.2) og Java (19-open). Uppfærum allt. Til þess þurfum við bara að kalla á install-skipunina, en að þessu sinni notum við enga útgáfuákvörðun:
$ sdk install maven
$ sdk install mvnd
$ sdk install java
En eitthvað fór úrskeiðis. Maven og mvnd hafa réttar útgáfur, en Java er með útgáfu 17.0.5-tem. Það er vegna þess að “nýjasta” útgáfan af tólinu er stjórnuð af seljanda þess, ekki af staðbundna SDKMAN! Hver er þessi seljandi? Seljandi í SDKMAN! er sá sem getur gefið út útgáfu. En segjum að við loksins setjum upp 19-opið, og við gerðum það að sjálfgefinni stillingu, en af einhverjum ástæðum þurfum við að nota 17-opið.
Við getum stillt a staðlað útgáfa af tóli sem er almenn fyrir öll verkefni og vinnustöðvar. En þegar við þurfum ákveðna útgáfu, höfum við tvær leiðir til þess. Sú fyrsta er að nota sdk nota skipun í hvert skipti sem við viljum nota ákveðna útgáfu af tóli í núverandi skjálóni. Annað er að útbúa lista yfir útgáfur í a .sdkmanrc skrá sem er geymd með verkefninu.
Þó að fyrsta valið sé ætlað einnota notkun, er hitt hannað til að vinna með teams og deila stillingum á milli lið meðlimir.
SDKMAN! er mjög auðvelt í notkun og hefur ríka safn af studdum verkfærum, rammasetningum og forritunarmálum. Það virkar á Linux, MacOS og Windows. Á hinn bóginn er þetta tól JVM-miðað og krefst samþykkis höfundar til að vera birgir. Auk þess er vélvirkjunin af .sdkmanrc er mjög slæmt og gæti verulega hægjað á ferlinu við að skipta um möppur.
Ef þú þarft að nota mörg tungumál og verkfæri, ættir þú að kíkja á asdf. Þetta tæki beinist að “hágæða” verkfærum. Í SDKMAN! finnur þú mörg Java-sértæk verkfæri, eins og Bpipe eða Znai, en asdf býður upp á mun fleiri verkfæri sem eru ekki eins sértæk. Auðvitað skarast sum þessara verkfæra, t.d. Java, Tomcat eða mvnd eru fáanleg í báðum.
Þegar þú vilt nota asdf, þú þarft að hafa gít og krulla uppsett. Eftir það, þú bara:
`git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.10.2`Hljóðskrift
og bættu þessum línum við ~/.bashrc file:
. $HOME/.asdf/asdf.sh.
$HOME/.asdf/completions/asdf.bash
Nú geturðu sett upp viðbætur og verkfæri í uppáhaldsútgáfunum þínum.
Ólíkt SDKMAN!, asdf notar viðbætur til að stjórna verkfærum. Svo áður en þú getur sett upp verkfæri þarftu að setja upp viðbót. Skulum snúa aftur að dæmaverkefninu okkar og reyna að stilla umhverfið með asadfsdf.
Fyrst þurfum við að setja upp viðbætur:
asdf plugin add java
asdf plugin add maven
asdf plugin add mvnd
Þá getum við sett upp verkfærin okkar:
asdf install java openjdk-17
asdf install maven 3.8.4
asdf install mvnd 0.7.1
Og enn og aftur, ólíkt SDKMAN!, asdf breytir engu í umhverfi okkar. Þegar við reynum að nota java fáum við villuskilaboð eins og:
Engin útgáfa er stillt fyrir Java-skipunina
Íhugaðu að bæta einni af eftirfarandi útgáfum við í stillingarskránni þinni í ~/.tool-versions
java openjdk-17
Við þurfum að búa til skrá .verkfærisútgáfur í heimamöppunni til að stjórna sjálfgefnum útgáfum.
Uppfæra hugbúnaðarútgáfur með asdf Það er nokkuð einfalt. Við setjum bara upp nýja útgáfu. Þar sem þetta ferli hefur engin áhrif á umhverfið getum við gert það hvenær sem er og hvar sem er í skráarkerfinu. Þegar við viljum nota ákveðna útgáfu af einhverjum hugbúnaði þurfum við að búa til í verkefnismöppunni a .verkfærisútgáfur Skrá sem gæti verið deilt á milli meðlima team. Mundu að þú þarft að tryggja að allir meðlimir team hafi asdf og viðbætur hafa verið settar upp. Lista yfir viðbætur má finna hér.
asdf Stuðningurinn nær ekki aðeins til forritunarmála, ramma og verkfæra eins og vim eða kubernetess. Hann nær einnig til gagnagrunnanna. Í slíku tilfelli gætum við sett upp margar útgáfur af t.d. Postgres, en aðeins ein þeirra getur verið í gangi. Það er vegna þess að asdf Keyrir skipanir beint á stýrikerfinu þínu án aðskilnaðarlags. Það veldur vandamálum eins og “tengi þegar í notkun” og árekstrum um auðlindir.
asdf er mjög gott tæki ef þú vilt vinna í fjöltyngdu umhverfi. Það styður mörg verkfæri, forritunarmál og rammasöfn. Arkitektúrinn byggir á viðbótum sem gera það mjög auðvelt að stækka það. Hins vegar krefjast sum verkfærin í bókasafninu frekari vinnu við uppsetningu til að tryggja alla nauðsynlega forsendur. asdf Virkar ekki á Windows, jafnvel á WSL.
Þegar ég tala um höfnardeiluna hér að ofan, vita margir ykkar lausnina.
Docker gæti hjálpað okkur í sumum tilvikum. Ég nefni þetta af skyldu, því þetta tól er svo stórt og flókið að við getum ekki fjallað um það í einni grein.
Saman með Docker ættum við að nota a docker-compose tæki sem gefur okkur möguleika á að samræma umhverfi með mörgum gámum.
Docker hjálpar okkur að stjórna verkfærum sem þurfa ákveðnar auðlindir, eins og tengi eða skrár. Það aðskilur eintök í gámum og gefur okkur fulla stjórn á þeim. Þrátt fyrir það er Docker tæki sem bætir mikilli flækju við vinnuumhverfi okkar og getur verið vandamál í sumum tilvikum. Eitt af þessum tilvikum um notkun Docker í prófi er lýst í einu af fyrri grein.
Ég veit að ég lýsti ekki öllum þeim verkfærum sem hægt er að nota til að stjórna útgáfum verkfæra. Það eru mun fleiri slík verkfæri, svo sem jUmhverfi sem gæti komið í stað SDKMAN,
eða Ekki málið sem við getum notað til að stjórna npm eða RVM fyrir Rúbín. Ég einbeitti mér að verkfærum sem ég prófaði á vígvellinum og get mælt með fyrir alla.
