Pam dysgu Java a sut i'w wneud yn effeithiol. Adroddiad Yandex

Sut mae Java yn wahanol i ieithoedd poblogaidd eraill? Pam mai Java ddylai fod yr iaith gyntaf i'w dysgu? Gadewch i ni greu cynllun a fydd yn eich helpu i ddysgu Java o'r dechrau a thrwy gymhwyso sgiliau rhaglennu mewn ieithoedd eraill. Gadewch i ni restru'r gwahaniaethau rhwng creu cod cynhyrchu yn Java a datblygu mewn ieithoedd eraill. Darllenodd Mikhail Zatepyakin yr adroddiad hwn mewn cyfarfod ar gyfer cyfranogwyr y dyfodol interniaethau Yandex a datblygwyr cychwynnol eraill - Java Junior meetingup.


- Helo bawb, fy enw i yw Misha. Rwy'n ddatblygwr o Yandex.Market, a heddiw byddaf yn dweud wrthych pam i ddysgu Java a sut i'w wneud yn effeithiol. Efallai y byddwch yn gofyn cwestiwn rhesymol: pam y byddaf yn adrodd y stori hon, ac nid rhai datblygwr cryf gyda blynyddoedd lawer o brofiad? Y ffaith yw fy mod i fy hun wedi astudio Java yn ddiweddar, tua blwyddyn a hanner yn ôl, felly dwi'n dal i gofio sut brofiad oedd o a pha beryglon sydd yna.

Flwyddyn yn ôl cefais interniaeth yn Yandex.Market. Datblygais y backend ar gyfer Beru, ar gyfer y Farchnad ei hun, mae'n debyg ichi ei ddefnyddio. Nawr rwy'n parhau i weithio yno, mewn tîm gwahanol. Rydym yn creu llwyfan dadansoddol ar gyfer Yandex.Market ar gyfer partneriaid busnes.

Pam dysgu Java a sut i'w wneud yn effeithiol. Adroddiad Yandex

Gadewch i ni ddechrau. Pam dysgu Java o safbwynt ymarferol? Y ffaith yw bod Java yn iaith raglennu enwog iawn. Mae ganddi gymuned fawr iawn.

Er enghraifft, mae mynegai TIOBE o'r fath, mynegai poblogaidd o boblogrwydd ieithoedd rhaglennu, ac mae Java yn y safle cyntaf yno. Hefyd, ar safleoedd swyddi, mae'n debyg y byddwch chi'n sylwi bod y rhan fwyaf o'r swyddi gwag yn ymwneud â Java, hynny yw, trwy ddatblygu yn Java, gallwch chi bob amser ddod o hyd i swydd.

Gan fod y gymuned yn fawr iawn, bydd unrhyw gwestiwn sydd gennych yn dod o hyd i ateb ar rai Gorlif o Stack neu safleoedd eraill. Hefyd, wrth ddatblygu yn Java, rydych chi mewn gwirionedd yn ysgrifennu cod ar y JVM, felly gallwch chi newid yn hawdd i Kotlin, Scala ac ieithoedd eraill sy'n defnyddio'r JVM.

Pam dysgu Java a sut i'w wneud yn effeithiol. Adroddiad Yandex

Beth sy'n dda am Java o safbwynt ideolegol? Mae yna wahanol ieithoedd rhaglennu. Maen nhw'n datrys problemau gwahanol, rydych chi'n gwybod hynny. Er enghraifft, mae Python yn wych ar gyfer ysgrifennu sgriptiau un llinell i ddatrys problemau cyflym.

Ar yr ochr gadarnhaol, gallwch reoli'r cod gweithredadwy yn llawn. Er enghraifft, mae gennym geir, ceir heb yrwyr Yandex, mae eu cod wedi'i ysgrifennu mewn pwyntiau cadarnhaol. Pam? Mae gan Java y fath beth - Garbage Collector. Mae'n clirio RAM o wrthrychau diangen. Mae'r peth hwn yn dechrau'n ddigymell ac yn stopio'r byd, hynny yw, mae'n atal gweddill y rhaglen ac yn mynd i gyfrif gwrthrychau, cof clir o wrthrychau. Os yw'r fath beth yn gweithio mewn drôn, nid yw'n cŵl. Bydd eich drôn yn gyrru'n syth, ar hyn o bryd yn clirio ei gof a pheidio ag edrych ar y ffordd o gwbl. Felly, mae'r drôn wedi'i ysgrifennu ar y manteision.

Pam dysgu Java a sut i'w wneud yn effeithiol. Adroddiad Yandex

Pa broblemau mae Java yn eu datrys? Mae'n bennaf yn iaith ar gyfer datblygu rhaglenni mawr sy'n cael eu hysgrifennu dros y blynyddoedd, gan ddwsinau neu gannoedd o bobl. Yn benodol, mae llawer o'r backend yn Yandex.Market wedi'i ysgrifennu yn Java. Mae gennym dîm gwasgaredig mewn sawl dinas, deg o bobl ym mhob un. Ac mae'r cod yn hawdd i'w gynnal, mae wedi'i gefnogi ers deng mlynedd neu fwy, ac ar yr un pryd mae pobl newydd yn dod i mewn ac yn deall y cod hwn.

Pa nodweddion ddylai fod gan iaith fel bod y cod yn cael ei gynnal yn hawdd ac fel y gellir ei ddatblygu'n hawdd mewn timau mawr. Yn gyntaf oll, dylai fod yn darllenadwy cod, a dylai fod yn hawdd i weithredu atebion pensaernïol cymhleth. Hynny yw, dylai fod yn hawdd ysgrifennu tyniadau lefel uchel, ac ati. Dyma'r hyn y mae Java yn ei ddarparu i ni. Mae hon yn iaith gwrthrych-ganolog. Mae'n hawdd iawn gweithredu tyniadau lefel uchel a phensaernïaeth gymhleth.

Mae yna hefyd lawer o fframweithiau a llyfrgelloedd ar gyfer Java, oherwydd bod yr iaith yn fwy na 15 oed. Yn ystod y cyfnod hwn, roedd popeth y gellid ei ysgrifennu wedi'i ysgrifennu arno, felly mae yna dunelli o lyfrgelloedd ar gyfer popeth y gallai fod ei angen arnoch.

Pam dysgu Java a sut i'w wneud yn effeithiol. Adroddiad Yandex

Pa sgiliau sylfaenol, yn fy marn i, ddylai fod gan chwaraewr JA cychwynnol? Yn gyntaf oll, dyma wybodaeth o iaith graidd Java. Nesaf yw rhyw fath o fframwaith Chwistrellu Dibyniaeth. Bydd y siaradwr nesaf, Kirill, yn siarad am hyn yn llawnach. Nid af yn rhy ddwfn. Nesaf yw'r patrymau pensaernïaeth a dylunio. Mae angen i ni allu ysgrifennu cod pensaernïol hardd er mwyn ysgrifennu cymwysiadau mawr. Ac mae hyn yn rhyw fath o SQL neu ORM ar gyfer tasgau o weithio gyda'r gronfa ddata. Ac mae hyn yn fwy perthnasol i'r backend.

Pam dysgu Java a sut i'w wneud yn effeithiol. Adroddiad Yandex

Ewch! craidd Java. Wna i ddim darganfod America yma mewn gwirionedd - mae angen i chi wybod yr iaith ei hun. Yr hyn y dylech roi sylw iddo. Yn gyntaf, mae Java wedi rhyddhau llawer o fersiynau yn ystod y blynyddoedd diwethaf, hynny yw, yn 2014-2015 rhyddhawyd y seithfed, yna'r wythfed, nawfed, degfed, llawer o fersiynau newydd, a chyflwynwyd llawer o bethau cŵl newydd ynddynt , er enghraifft, y Java Stream API , lambda, ac ati Pethau cŵl, ffres, cŵl iawn a ddefnyddir yn y cod cynhyrchu, yr hyn y maent yn gofyn amdano mewn cyfweliadau ac y mae angen i chi wybod. Felly, ni ddylech gymryd llyfr o'r silff yn llyfrgell Java-4 a mynd i'w ddysgu. Dyma ein cynllun: rydym yn dysgu Java-8 neu uwch.

Rydyn ni'n talu sylw manwl i ddatblygiadau arloesol fel Stream API, var, ac ati. Gofynnir iddynt yn ystod cyfweliadau ac fe'u defnyddir yn gyson wrth gynhyrchu. Hynny yw, mae'r API Stream yn llawer oerach na dolenni, yn gyffredinol, yn beth cŵl iawn. Byddwch yn siwr i dalu sylw.

Ac mae pob math o bethau fel iterators, Eithriadau ac yn y blaen. Pethau sy'n ymddangos yn ddibwys i chi cyn belled â'ch bod chi'n ysgrifennu rhywfaint o god bach eich hun. Nid oes angen yr Eithriadau hyn arnoch chi, pwy sydd eu hangen beth bynnag? Ond byddant yn bendant yn cael eu gofyn mewn cyfweliadau, byddant yn bendant yn ddefnyddiol i chi wrth gynhyrchu. Yn gyffredinol, dylech dalu sylw i Eithriadau, iterwyr a phethau eraill.

Pam dysgu Java a sut i'w wneud yn effeithiol. Adroddiad Yandex

Strwythurau data. Ni allwch fynd heb strwythurau, ond bydd yn wych os nad ydych chi'n gwybod bod setiau, geiriaduron a thaflenni yn unig. A hefyd gwahanol weithrediadau o strwythurau. Er enghraifft, mae gan yr un geiriadur yn Java lawer o weithrediadau, gan gynnwys HashMap a TreeMap. Mae ganddyn nhw asymptotigau gwahanol, maen nhw wedi'u strwythuro'n wahanol y tu mewn. Mae angen i chi wybod sut maen nhw'n wahanol a phryd i ddefnyddio pa un.

Bydd hefyd yn cŵl iawn os ydych chi'n gwybod sut mae'r strwythurau data hyn yn gweithio'n fewnol. Hynny yw, nid yw'n hawdd gwybod eu asymptotigau - faint mae'r bet yn gweithio, pa mor hir mae'r tocyn yn gweithio, ond sut mae'r strwythur yn gweithio y tu mewn - er enghraifft, beth yw bwced yn HashMap.

Mae hefyd yn werth talu sylw i goed a graffiau. Mae'r rhain yn bethau nad ydynt yn gyffredin iawn mewn cod cynhyrchu, ond maent yn boblogaidd mewn cyfweliadau. Yn unol â hynny, mae angen i chi allu croesi coed, graffiau mewn lled a dyfnder. Mae'r rhain i gyd yn algorithmau syml.

Cyn gynted ag y byddwch yn dechrau ysgrifennu unrhyw god mawr, cymhleth, gan ddefnyddio llyfrgelloedd, cod aml-ddosbarth, byddwch yn sylweddoli ei bod yn anodd i chi heb adeiladu systemau a datrys dibyniaethau. Maven a Gradle yw'r rhain yn bennaf. Maent yn caniatáu ichi fewnforio llyfrgelloedd i'ch prosiect mewn un llinell. Hynny yw, rydych chi'n ysgrifennu xml un llinell ac yn mewnforio llyfrgelloedd i'r prosiect. Systemau gwych. Maent tua'r un peth, defnyddiwch naill ai un - Maven neu Gradle.

Nesaf - rhyw fath o system rheoli fersiwn. Rwy'n argymell Git oherwydd ei fod yn boblogaidd ac mae yna lawer o sesiynau tiwtorial. Mae bron pawb yn defnyddio Git, mae'n beth cŵl, ni allwch fyw hebddo.

A rhyw fath o amgylchedd datblygu. Rwy'n argymell IntelliJ Idea. Mae'n cyflymu'r broses ddatblygu yn fawr, yn eich helpu chi'n fawr, yn ysgrifennu'r holl god plât boeler i chi, yn gyffredinol, mae'n cŵl.

Pam dysgu Java a sut i'w wneud yn effeithiol. Adroddiad Yandex

Dolenni o'r sleid: SQLZOO, habrapost

SQL. Ychydig am backenders. Roedd yna achos doniol yma mewn gwirionedd. Dau ddiwrnod cyn fy ail gyfweliad interniaeth, galwodd merch AD fi a dweud y byddent yn gofyn i mi am SQL a HTTP mewn dau ddiwrnod, roedd angen i mi ei ddysgu. Ac nid oeddwn yn gwybod bron dim am SQL neu HTTP. Ac fe wnes i ddod o hyd i'r wefan cŵl hon - SQLZOO. Dysgais SQL arno mewn 12 awr, rwy'n golygu, cystrawen SQL, sut i ysgrifennu ymholiadau SELECT, YMUNWCH, ac ati Safle cŵl iawn, rwy'n ei argymell yn fawr. Yn wir, mewn 12 awr dysgais 90% o'r hyn rwy'n ei wybod nawr.

Ac mae hefyd yn wych gwybod pensaernïaeth cronfa ddata. Mae'r rhain yn bob math o allweddi, mynegeion, normaleiddio. Mae cyfres o bostiadau am hyn ar Habré.

Pam dysgu Java a sut i'w wneud yn effeithiol. Adroddiad Yandex

Yn Java, yn ogystal â SQL, mae yna bob math o systemau mapio gwrthrych-berthynol fel JPA. Mae rhywfaint o god. Yn y dull cyntaf mae rhywfaint o god SQL - SELECT name id O info.users BLE id IN userIds. O gronfa ddata'r defnyddwyr, o'r tabl, ceir eu IDau a'u henwau.

Nesaf, mae yna fapper penodol sy'n troi gwrthrych o'r gwaelod yn wrthrych Java. Ac mae trydydd dull isod sy'n gweithredu'r cod hwn mewn gwirionedd. Gellir disodli hyn i gyd gan ddefnyddio JPA gydag un llinell, sydd wedi'i hysgrifennu isod. Mae'n gwneud yr un peth - darganfyddwch All ByIdIn. Hynny yw, yn seiliedig ar enw'r dull, mae'n cynhyrchu ymholiad SQL i chi.

Peth cwl iawn. Roeddwn i fy hun, pan nad oeddwn yn gwybod SQL, yn defnyddio JPA. Yn gyffredinol, rhowch sylw. Os ydych chi'n rhy ddiog i ddysgu SQL, mae'n drychineb. Ac, yn gyffredinol, tân!

Pam dysgu Java a sut i'w wneud yn effeithiol. Adroddiad Yandex

Gwanwyn. Pwy sydd wedi clywed am y fath beth â fframwaith y Gwanwyn? Ydych chi'n gweld faint ohonoch sydd yna? Nid heb reswm. Mae'r gwanwyn wedi'i gynnwys yng ngofynion pob ail swydd wag backend Java. Hebddo, nid oes unman mewn datblygiad mawr mewn gwirionedd. Beth yw'r Gwanwyn? Yn gyntaf oll, fframwaith Chwistrellu Dibyniaeth yw hwn. Am hyn hefyd bydd yn dweud siaradwr nesaf. Ond yn fyr, mae hwn yn beth sy'n eich galluogi i'w gwneud hi'n haws mewnforio dibyniaethau rhai dosbarthiadau i eraill. Hynny yw, mae gwybodaeth am ddibyniaethau yn cael ei symleiddio.

Mae Spring Boot yn ddarn o Spring sy'n eich galluogi i redeg eich cais gweinydd gydag un botwm. Rydych chi'n mynd i THID, pwyswch ychydig o fotymau, a nawr mae gennych chi'ch cais gweinydd ar waith ar localhost 8080. Hynny yw, nid ydych chi wedi ysgrifennu un llinell o god eto, ond mae eisoes yn gweithio. Peth cwl iawn. Os ydych chi'n ysgrifennu rhywbeth eich hun, tân!

Mae'r gwanwyn yn fframwaith mawr iawn. Mae nid yn unig yn codi eich cais gweinydd ac yn datrys Chwistrellu Dibyniaeth. Mae'n caniatáu ichi wneud criw o bethau, gan gynnwys creu dulliau REST API. Hynny yw, fe wnaethoch chi ysgrifennu rhyw ddull ac atodi'r anodiad mapio Get iddo. Ac yn awr mae gennych chi eisoes ryw ddull ar localhost sy'n ysgrifennu Helo byd i chi. Dwy linell o god ac mae'n gweithio. Stwff oer.

Mae'r gwanwyn hefyd yn gwneud profion ysgrifennu yn haws. Nid oes unrhyw ffordd heb brofi mewn datblygiad mawr. Mae angen profi'r cod. At y diben hwn, mae gan Java lyfrgell oer JUnit 5. A JUnit yn gyffredinol, ond y fersiwn ddiweddaraf yw'r pumed. Mae yna bopeth ar gyfer profi, pob math o honiadau a phethau eraill.

Ac mae yna fframwaith Mockito anhygoel. Dychmygwch fod gennych chi rywfaint o ymarferoldeb rydych chi am ei brofi. Mae'r swyddogaeth yn gwneud llawer o bethau, gan gynnwys, rhywle yn y canol, mae'n mewngofnodi i VKontakte gyda'ch ID, er enghraifft, ac yn derbyn enw cyntaf ac olaf y defnyddiwr VKontakte o'r ID. Mae'n debyg na fyddwch chi'n cynnwys VKontakte yn y profion, mae hynny'n rhyfedd. Ond mae angen i chi brofi'r ymarferoldeb, felly gwnaethoch y dosbarth hwn, gan ddefnyddio Mockito, mok it, efelychiad.

Byddwch yn dweud pan ddaw cais i'r dosbarth hwn gydag ID o'r fath ac o'r fath, ei fod yn dychwelyd rhywfaint o enw olaf, er enghraifft, Vasya Pupkin. A bydd yn gweithio. Hynny yw, byddwch yn profi'r holl ymarferoldeb ar gyfer mok un dosbarth. Peth cwl iawn.

Pam dysgu Java a sut i'w wneud yn effeithiol. Adroddiad Yandex

Dolen o'r sleid

Patrymau dylunio. Beth yw e? Templedi yw'r rhain ar gyfer datrys problemau nodweddiadol sy'n codi wrth ddatblygu. Mewn datblygiad, mae problemau unfath neu debyg yn codi'n aml y byddai'n wych eu datrys rywsut yn dda. Felly, lluniodd pobl arferion gorau, rhai templedi, ar sut i ddatrys y problemau hyn.

Mae yna wefan gyda'r patrymau mwyaf poblogaidd - refactoring.guru, gallwch chi ei ddarllen, darganfod pa batrymau sydd yna, darllen criw o theori. Y broblem yw ei fod bron yn ddiwerth. Mewn gwirionedd, nid yw patrymau heb ymarfer yn arbennig o ddefnyddiol.

Byddwch yn clywed am rai patrymau fel Singletone neu Builder. Pwy glywodd y geiriau hyn? Llawer o bobl. Mae yna batrymau mor syml y gallwch chi eu rhoi ar waith eich hun. Ond mae'r rhan fwyaf o'r patrymau: strategaeth, ffatri, ffasâd - nid yw'n glir ble i wneud cais iddynt.

A hyd nes y gwelwch yn ymarferol yng nghod rhywun arall le y cymhwysir y patrwm hwn iddo, ni fyddwch yn gallu ei gymhwyso eich hun. Felly, mae ymarfer yn bwysig iawn gyda phatrymau. Ac nid yw darllen amdanyn nhw ar refactoring.guru yn ddefnyddiol iawn, ond mae'n bendant yn werth ei wneud.

Pam dysgu Java a sut i'w wneud yn effeithiol. Adroddiad Yandex

Pam fod angen patrymau? Gadewch i ni ddweud bod gennych chi ddosbarth Defnyddiwr penodol. Mae ganddo ID ac Enw. Rhaid i bob Defnyddiwr gael ID ac Enw. Chwith uchaf mae'r ystafell ddosbarth.

Beth yw'r ffyrdd i gychwyn Defnyddiwr? Mae dau opsiwn - naill ai adeiladwr neu osodwr. Beth yw anfanteision y ddau ddull?

Adeiladwr. Defnyddiwr newydd (7, "Bond"), iawn. Nawr gadewch i ni ddweud nad oes gennym ni ddosbarth Defnyddiwr, ond rhyw un arall, gyda saith maes rhifol. Bydd gennych adeiladwr sy'n cynnwys saith rhif olynol. Nid yw'n glir beth yw'r niferoedd hyn a pha rai ohonynt sy'n perthyn i ba eiddo. Nid yw'r dylunydd yn wych.

Yr ail opsiwn yw setter. Rydych chi'n ysgrifennu'n glir: setId(7), setName ("Bond"). Rydych chi'n deall pa eiddo sy'n perthyn i ba faes. Ond mae gan osodwr broblem. Yn gyntaf, efallai y byddwch yn anghofio aseinio rhywbeth, ac yn ail, mae eich gwrthrych yn troi allan i fod yn mutable. Nid yw hyn yn edau ddiogel ac mae'n lleihau darllenadwyedd y cod ychydig. Dyna pam mae pobl yn meddwl am batrwm cŵl - Adeiladwr.

Pam dysgu Java a sut i'w wneud yn effeithiol. Adroddiad Yandex

Am beth mae hyn? Gadewch i ni geisio cyfuno manteision y ddau ddull - gosodwr a lluniwr - mewn un. Rydym yn gwneud gwrthrych penodol, Adeiladwr, a fydd hefyd â meysydd Id ac Enw, a fydd ei hun yn cael ei adeiladu yn seiliedig ar y gosodwr, ac a fydd â dull Adeiladu sy'n dychwelyd Defnyddiwr newydd i chi gyda'r holl baramedrau. Rydym yn cael gwrthrych digyfnewid a setter. Cwl!

Beth yw'r problemau? Yma mae gennym yr Adeiladwr clasurol. Y broblem yw y gallwn barhau i anghofio gwirio mewn rhyw faes. Ac os ydym wedi anghofio ymweld â'r ID, yn yr achos hwn yn Builder mae'n cael ei gychwyn i sero, oherwydd nid yw'r math int yn nullable. Ac os byddwn yn gwneud yr Enw “Bond” ac yn anghofio ymweld â'r swyddfa ID, bydd gennym Ddefnyddiwr newydd gydag id “0” a'r enw “Bond”. Ddim yn cŵl.

Gadewch i ni geisio ymladd hyn. Yn Builder byddwn yn newid int i int fel ei fod yn nullable. Nawr mae popeth yn wych.

Pam dysgu Java a sut i'w wneud yn effeithiol. Adroddiad Yandex

Os byddwn yn ceisio creu Defnyddiwr gyda'r enw “Bond”, gan anghofio rhoi ei ID, byddwn yn cael eithriad pwyntydd null, oherwydd nid yw'r ID yn nulladwy, ac mae gan yr Adeiladwr eithriad pwyntydd null, yn benodol.

Pam dysgu Java a sut i'w wneud yn effeithiol. Adroddiad Yandex

Ond fe allwn ni anghofio rhoi enw o hyd, felly rydyn ni'n gosod ailchwarae gwrthrych i null. Nawr, pan fyddwn yn adeiladu ein gwrthrych gan Builder, mae'n gwirio nad yw'r maes yn nullable. Ac nid dyna'r cyfan.

Gadewch i ni edrych ar yr enghraifft olaf. Yn yr achos hwn, os byddwn rywsut yn rhoi nwl yn yr amser rhedeg ID, byddai'n wych gwybod ar unwaith eich bod wedi gwneud hynny ac nid yw'n cŵl eich bod yn gwneud camgymeriad nawr.

Pam dysgu Java a sut i'w wneud yn effeithiol. Adroddiad Yandex

Mae angen i chi daflu gwall nid ar hyn o bryd o greu Defnyddiwr, ond pan fyddwch chi'n gosod null i'r ID. Felly, yn Adeiladwr byddwn yn newid y cyfanrif setter i int, a bydd yn tyngu ar unwaith eu bod yn taflu allan null.

Yn fyr, beth yw'r pwynt? Mae yna batrwm Adeiladwr syml, ond mae gan ei weithrediad rai cynnil hyd yn oed, felly mae'n cŵl iawn edrych ar wahanol weithrediad patrymau. Mae gan bob patrwm ddwsinau o weithrediadau. Mae hyn i gyd yn ddiddorol iawn.

Pam dysgu Java a sut i'w wneud yn effeithiol. Adroddiad Yandex

Sut ydyn ni'n ysgrifennu Codwr Adeiladu mewn cod cynhyrchu? Dyma ein Defnyddiwr. Rydym yn atodi cylchdro Adeiladwr o lyfrgell Lombok iddo, ac mae ei hun yn cynhyrchu Adeiladwr i ni. Hynny yw, nid ydym yn ysgrifennu unrhyw god, ond mae Java eisoes yn meddwl bod gan y dosbarth hwn Adeiladwr, a gallwn ei alw fel hyn.

Rwyf eisoes wedi dweud bod gan Java lyfrgelloedd ar gyfer bron popeth, gan gynnwys Lombok, llyfrgell oer sy'n eich galluogi i osgoi ysgrifennu boilerplate. Adeiladwr, GET.

Pam dysgu Java a sut i'w wneud yn effeithiol. Adroddiad Yandex

Gall patrymau fod yn bensaernïol - yn gysylltiedig nid yn unig ag un dosbarth, ond â'r system gyfan. Mae yna egwyddor mor oer wrth ddylunio system: Egwyddor Cyfrifoldeb Sengl. Am beth mae'n siarad? Y ffaith bod yn rhaid i bob dosbarth fod yn gyfrifol am rai o'i swyddogaethau ei hun. Yn yr achos hwn, mae gennym Reolwr sy'n cyfathrebu â defnyddwyr, gwrthrychau JSON. Mae yna Facade, sy'n trosi gwrthrychau JSON yn fodelau y bydd y cymhwysiad Java wedyn yn gweithio gyda nhw. Mae yna Wasanaeth sydd â rhesymeg gymhleth sy'n gweithio gyda'r modelau hyn. Mae Gwrthrych Mynediad Data sy'n rhoi'r modelau hyn yn y gronfa ddata ac yn eu hadalw o'r gronfa ddata. Ac mae y gronfa ddata ei hun. Mewn geiriau eraill, nid yw'r cyfan mewn un dosbarth, ond rydym yn gwneud pum dosbarth gwahanol, a dyna batrwm arall.

Pam dysgu Java a sut i'w wneud yn effeithiol. Adroddiad Yandex

Unwaith y byddwch wedi dysgu Java fwy neu lai, mae'n wych ysgrifennu eich prosiect eich hun a fydd â chronfa ddata, gweithio gydag APIs eraill, a datgelu eich cais gweinydd i gleientiaid REST API. Byddai hyn yn beth gwych i'w ychwanegu at eich ailddechrau, byddai'n ddiwedd cŵl i'ch addysg. Gyda hyn gallwch chi fynd i gael swydd.

Pam dysgu Java a sut i'w wneud yn effeithiol. Adroddiad Yandex

Dyma enghraifft o fy nghais gweinyddwr. Yn fy ail flwyddyn, ysgrifennais bapur tymor gyda'r bois. Roeddent yn ysgrifennu cais symudol ar gyfer trefnu digwyddiadau. Yno, gallai defnyddwyr fewngofnodi trwy VKontakte, gosod pwyntiau ar y map, creu digwyddiadau, gwahodd eu ffrindiau atynt, arbed delweddau o ddigwyddiadau, ac ati.

Beth wnes i yn y prosiect? Ysgrifennodd gais gweinydd yn Spring Boot heb ddefnyddio SQL. Doeddwn i ddim yn ei adnabod, defnyddiais JPA. Beth allai ei wneud? Mewngofnodwch i VK trwy OAuth-2. Cymerwch docyn y defnyddiwr, ewch i VK ag ef, gwiriwch ei fod yn ddefnyddiwr go iawn. Derbyn gwybodaeth am ddefnyddwyr trwy VKontakte. Roedd yn gallu cadw gwybodaeth mewn cronfa ddata, hefyd trwy JPA. Arbedwch luniau a ffeiliau eraill yn fedrus yng nghof y cyfrifiadur, a chadwch ddolenni iddynt yn y gronfa ddata. Ar y pryd doeddwn i ddim yn gwybod bod gwrthrychau CLOB yn y gronfa ddata, felly fe wnes i hynny fel hyn. Roedd API REST ar gyfer defnyddwyr, cymwysiadau cleient. Ac roedd profion uned ar gyfer ymarferoldeb sylfaenol.

[…] Enghraifft fach o fy nysgu llwyddiannus o Java. Yn fy mlwyddyn gyntaf yn y brifysgol, dysgais C# a chefais ddealltwriaeth o raglennu OOP - beth yw dosbarthiadau, rhyngwynebau, tynnu, a pham mae eu hangen. Fe helpodd fi lawer. Heb hyn, mae dysgu Java yn eithaf anodd; nid yw'n glir pam mae angen dosbarthiadau.

Pam dysgu Java a sut i'w wneud yn effeithiol. Adroddiad Yandex

Yn fy ail flwyddyn yn y brifysgol, fe wnaethon nhw ddysgu craidd Java eto, ond wnes i ddim stopio yno, es i astudio Spring fy hun ac ysgrifennu papur cwrs, fy mhrosiect, y soniais amdano uchod. A chyda hyn i gyd, es i am interniaeth yn Yandex, pasio cyfweliad, a mynd i mewn i Yandex.Market. Yno ysgrifennais y backend ar gyfer Beru, dyma ein marchnad, ac ar gyfer Yandex.Market ei hun.

Ar ôl hynny, chwe mis yn ôl, trosglwyddais i dîm arall o fewn yr un Farchnad. Rydym yn gwneud dadansoddeg ar gyfer partneriaid busnes. Rydyn ni yn y platfform dadansoddol, mae yna dri ohonom ni ar y backend, felly mae gen i gyfran fawr iawn o ddylanwad ar y prosiect. Mae'n ddiddorol iawn, mewn gwirionedd. Hynny yw, rydym mewn gwirionedd yn darparu data ar y farchnad - beth yw gwerthiannau, ym mha gategorïau, ym mha fodelau, ar gyfer partneriaid busnes, cwmnïau adnabyddus mawr. A dim ond tri ohonom sydd, rydyn ni'n ysgrifennu'r cod hwn, ac mae'n cŵl iawn.

Diolch! Dolenni defnyddiol:
- "Java 8. Canllaw i Ddechreuwyr".
- Strwythurau Data.
- SQLZOO.
- Normaleiddio Cronfa Ddata.
- Patrymau Dylunio.
- Patrymau Dylunio.
- Cod Glân.
- Java effeithiol.

Ffynhonnell: hab.com

Ychwanegu sylw