KÄpÄc mÄcÄ«ties Java un kÄ to izdarÄ«t efektÄ«vi. Yandex pÄrskats
KÄ Java atŔķiras no citÄm populÄrÄm valodÄm? KÄpÄc Javai vajadzÄtu bÅ«t pirmajai valodai, kas jÄapgÅ«st? Izveidosim plÄnu, kas palÄ«dzÄs apgÅ«t Java gan no nulles, gan pielietojot programmÄÅ”anas prasmes citÄs valodÄs. UzskaitÄ«sim atŔķirÄ«bas starp ražoÅ”anas koda izveidi Java un izstrÄdi citÄs valodÄs. Mihails Zatepjakins nolasÄ«ja Å”o ziÅojumu nÄkamo dalÄ«bnieku sanÄksmÄ prakses Yandex un citi iesÄcÄji izstrÄdÄtÄji - Java Junior meetup.
- Sveiki visiem, mani sauc MiÅ”a. Es esmu Yandex.Market izstrÄdÄtÄjs, un Å”odien es jums pastÄstÄ«Å”u, kÄpÄc mÄcÄ«ties Java un kÄ to izdarÄ«t efektÄ«vi. JÅ«s varat uzdot saprÄtÄ«gu jautÄjumu: kÄpÄc es stÄstÄ«Å”u Å”o stÄstu, nevis kÄds spÄcÄ«gs izstrÄdÄtÄjs ar daudzu gadu pieredzi? Fakts ir tÄds, ka es pats nesen, apmÄram pirms pusotra gada, studÄju Java, tÄpÄc es joprojÄm atceros, kÄ tas bija un kÄdas ir tÄs nepilnÄ«bas.
Pirms gada es stažÄjos Yandex.Market. IzstrÄdÄju aizmuguri priekÅ” Beru, paÅ”am tirgum, tu droÅ”i vien izmantoji. Tagad turpinu tur strÄdÄt, citÄ komandÄ. MÄs izveidojam analÄ«tisko platformu Yandex.Market biznesa partneriem.
SÄksim. KÄpÄc mÄcÄ«ties Java no praktiskÄ viedokļa? Fakts ir tÄds, ka Java ir ļoti slavena programmÄÅ”anas valoda. TajÄ ir ļoti liela kopiena.
PiemÄram, ir tÄds TIOBE indekss, populÄrs programmÄÅ”anas valodu popularitÄtes indekss, un Java tur ieÅem pirmo vietu. TÄpat darba vietnÄs, iespÄjams, pamanÄ«sit, ka lielÄkÄ daļa vakanÄu ir par Java, proti, attÄ«stoties Java, vienmÄr var atrast darbu.
TÄ kÄ kopiena ir ļoti liela, uz jebkuru jÅ«su jautÄjumu atbildi atradÄ«siet dažÄs Stack Overflow vai citÄs vietnÄs. TurklÄt, izstrÄdÄjot Java, jÅ«s faktiski rakstÄt kodu JVM, lai jÅ«s varÄtu viegli pÄrslÄgties uz Kotlin, Scala un citÄm valodÄm, kurÄs tiek izmantots JVM.
Kas ir labs Java no ideoloÄ£iskÄ viedokļa? Ir dažÄdas programmÄÅ”anas valodas. ViÅi atrisina dažÄdas problÄmas, jÅ«s to zinÄt. PiemÄram, Python ir lieliski piemÄrots vienas rindas skriptu rakstÄ«Å”anai, lai atrisinÄtu Ätras problÄmas.
PozitÄ«vi ir tas, ka varat pilnÄ«bÄ kontrolÄt izpildÄmo kodu. PiemÄram, mums ir automaŔīnas, Yandex bezvadÄ«tÄja automaŔīnas, to kods ir rakstÄ«ts plusos. KÄpÄc? Javai ir tÄda lieta - Garbage Collector. Tas attÄ«ra RAM no nevajadzÄ«giem objektiem. Å Ä« lieta sÄkas spontÄni un aptur pasauli, tas ir, tÄ aptur pÄrÄjo programmu un dodas uz objektu skaitÄ«Å”anu, notÄ«rot objektu atmiÅu. Ja tÄda lieta darbojas dronÄ, tas nav forÅ”i. JÅ«su drons brauks taisni, Å”ajÄ brÄ«dÄ« iztÄ«rÄ«s atmiÅu un vispÄr neskatÄ«sies uz ceļu. TÄpÄc drons ir rakstÄ«ts uz plusiem.
KÄdas problÄmas risina Java? TÄ galvenokÄrt ir valoda lielu programmu izstrÄdei, kuras ir rakstÄ«juÅ”i gadu gaitÄ desmitiem vai simtiem cilvÄku. Jo Ä«paÅ”i liela daļa Yandex.Market aizmugursistÄmas ir rakstÄ«ta Java valodÄ. Mums ir sadalÄ«ta komanda vairÄkÄs pilsÄtÄs, katrÄ pa desmit cilvÄkiem. Un kodu ir viegli uzturÄt, tas tiek atbalstÄ«ts desmit vai vairÄk gadus, un tajÄ paÅ”Ä laikÄ ienÄk jauni cilvÄki un saprot Å”o kodu.
KÄdÄm Ä«paŔībÄm vajadzÄtu bÅ«t valodai, lai tajÄ esoÅ”ais kods bÅ«tu viegli atbalstÄ«ts un lai to varÄtu viegli izstrÄdÄt lielÄs komandÄs. PirmkÄrt, tam ir jÄbÅ«t salasÄmam kodam, un tajÄ jÄbÅ«t viegli Ä«stenojamiem sarežģītiem arhitektÅ«ras risinÄjumiem. Tas nozÄ«mÄ, ka jÄbÅ«t viegli rakstÄ«t augsta lÄ«meÅa abstrakcijas utt. Tas viss ir tas, ko Java mums sniedz. Å Ä« ir uz objektu orientÄta valoda. Ir patieÅ”Äm viegli ieviest augsta lÄ«meÅa abstrakcijas un sarežģītas arhitektÅ«ras.
Javai ir arÄ« daudz ietvaru un bibliotÄku, jo valodai ir vairÄk nekÄ 15 gadu. Å ajÄ laikÄ tajÄ tika uzrakstÄ«ts viss, ko varÄja uzrakstÄ«t, tÄpÄc ir daudz bibliotÄku visam, kas jums varÄtu bÅ«t nepiecieÅ”ams.
KÄdÄm pamatprasmÄm, manuprÄt, vajadzÄtu bÅ«t iesÄcÄjam JA spÄlÄtÄjam? PirmkÄrt, tÄs ir Java pamatvalodas zinÄÅ”anas. NÄkamais ir sava veida atkarÄ«bas injekcijas ietvars. NÄkamais runÄtÄjs Kirils par to runÄs pilnÄ«gÄk. Es neiedziļinÄÅ”os. NÄkamais ir arhitektÅ«ras un dizaina modeļi. Mums ir jÄspÄj uzrakstÄ«t arhitektoniski skaistu kodu, lai rakstÄ«tu lielas lietojumprogrammas. Un tas ir sava veida SQL vai ORM uzdevumiem darbam ar datu bÄzi. Un tas vairÄk attiecas uz aizmuguri.
Aiziet! Java kodols. Ameriku es Å”eit Ä«sti neatklÄÅ”u ā jums ir jÄzina pati valoda. Kam vajadzÄtu pievÄrst uzmanÄ«bu. PirmkÄrt, Java pÄdÄjos gados ir izlaidusi daudz versiju, tas ir, 2014.-2015. gadÄ tika izlaista septÄ«tÄ, pÄc tam astotÄ, devÄ«tÄ, desmitÄ, tajÄs tika ieviests daudz jaunu versiju un daudz jaunu forÅ”u lietu. , piemÄram, Java Stream API , lambda utt. Ä»oti forÅ”as, svaigas, forÅ”as lietas, kas tiek izmantotas ražoÅ”anas kodÄ, par ko viÅi jautÄ intervijÄs un kas jums jÄzina. TÄpÄc nevajadzÄtu Åemt grÄmatu no plaukta Java-4 bibliotÄkÄ un doties mÄcÄ«ties. Å is ir mÅ«su plÄns: mÄs apgÅ«stam Java-8 vai jaunÄku versiju.
MÄs pievÄrÅ”am lielu uzmanÄ«bu jauninÄjumiem, piemÄram, Stream API, var uc Tie tiek jautÄti interviju laikÄ un tiek pastÄvÄ«gi izmantoti ražoÅ”anÄ. Tas ir, Stream API ir daudz forÅ”Äka nekÄ cilpas, kopumÄ Ä¼oti forÅ”a lieta. Noteikti pievÄrsiet uzmanÄ«bu.
Un ir visÄdas lietas, piemÄram, iteratori, izÅÄmumi un tÄ tÄlÄk. Lietas, kas jums Ŕķiet nesvarÄ«gas, ja vien jÅ«s pats uzrakstÄt nelielu kodu. Jums Å”ie izÅÄmumi nav vajadzÄ«gi, kam tie vispÄr ir vajadzÄ«gi? Bet viÅi noteikti tiks jautÄti intervijÄs, viÅi noteikti jums noderÄs ražoÅ”anÄ. KopumÄ jums vajadzÄtu pievÄrst uzmanÄ«bu izÅÄmumiem, iteratoriem un citÄm lietÄm.
Datu struktÅ«ras. JÅ«s nevarat iztikt bez struktÅ«rÄm, taÄu tas bÅ«s lieliski, ja nezinÄt, ka ir komplekti, vÄrdnÄ«cas un lapas. Un arÄ« dažÄdas konstrukciju realizÄcijas. PiemÄram, tai paÅ”ai Java vÄrdnÄ«cai ir daudz implementÄciju, tostarp HashMap un TreeMap. ViÅiem ir atŔķirÄ«ga asimptotika, tie ir atŔķirÄ«gi strukturÄti iekÅ”pusÄ. Jums jÄzina, kÄ tie atŔķiras un kad kuru izmantot.
BÅ«s arÄ« ļoti forÅ”i, ja zinÄt, kÄ Å”Ä«s datu struktÅ«ras darbojas iekÅ”Äji. Tas ir, nav viegli zinÄt viÅu asimptotiku - cik daudz derÄ«bas darbojas, cik ilgi darbojas caurlaide, bet gan to, kÄ darbojas struktÅ«ra iekÅ”pusÄ - piemÄram, kas ir spainis programmÄ HashMap.
Ir vÄrts pievÄrst uzmanÄ«bu arÄ« kokiem un grafikiem. TÄs ir lietas, kas ražoÅ”anas kodÄ nav Ä«paÅ”i izplatÄ«tas, taÄu tÄs ir populÄras intervijÄs. AttiecÄ«gi jums ir jÄspÄj ŔķÄrsot kokus, grafikus platumÄ un dziļumÄ. Tie visi ir vienkÄrÅ”i algoritmi.
TiklÄ«dz jÅ«s sÄkat rakstÄ«t lielu kodu, sarežģītu, izmantojot bibliotÄkas, vairÄku klaÅ”u kodu, jÅ«s sapratÄ«sit, ka jums ir grÅ«ti bez sistÄmu veidoÅ”anas un atkarÄ«bu novÄrÅ”anas. Tie galvenokÄrt ir Maven un Gradle. Tie ļauj vienÄ rindÄ importÄt bibliotÄkas savÄ projektÄ. Tas nozÄ«mÄ, ka jÅ«s rakstÄt vienas rindas xml un importÄjat bibliotÄkas projektÄ. Lieliskas sistÄmas. Tie ir aptuveni vienÄdi, izmantojiet vienu - Maven vai Gradle.
NÄkamais - kaut kÄda versiju kontroles sistÄma. Es iesaku Git, jo tas ir populÄrs un ir daudz pamÄcÄ«bu. GandrÄ«z visi izmanto Git, tÄ ir lieliska lieta, bez tÄ nevar dzÄ«vot.
Un kaut kÄda attÄ«stÄ«bas vide. Es iesaku IntelliJ Idea. Tas ievÄrojami paÄtrina izstrÄdes procesu, ļoti palÄ«dz, uzraksta visu standarta kodu, kopumÄ tas ir forÅ”i.
SQL. Mazliet par backenderiem. PatiesÄ«bÄ Å”eit bija smieklÄ«gs gadÄ«jums. Divas dienas pirms manas otrÄs intervijas prakses laikÄ man piezvanÄ«ja HR meitene un teica, ka pÄc divÄm dienÄm man jautÄs par SQL un HTTP, man tas jÄiemÄcÄs. Un es gandrÄ«z neko nezinÄju par SQL vai HTTP. Un es atradu Å”o forÅ”o vietni - SQLZOO. Es uzzinÄju SQL 12 stundÄs, proti, SQL sintaksi, kÄ rakstÄ«t SELECT vaicÄjumus, JOIN utt. Ä»oti forÅ”a vietne, ļoti iesaku. PatiesÄ«bÄ 12 stundu laikÄ es uzzinÄju 90% no tÄ, ko zinu tagad.
Java valodÄ papildus SQL ir arÄ« visa veida objektu relÄciju kartÄÅ”anas sistÄmas, piemÄram, JPA. Ir kÄds kods. PirmajÄ metodÄ ir kÄds SQL kods - SELECT id name FROM info.users WHERE id IN userIds. No lietotÄju datu bÄzes, no tabulas tiek iegÅ«ti viÅu ID un vÄrdi.
TÄlÄk ir noteikts kartÄtÄjs, kas objektu no bÄzes pÄrvÄrÅ” par Java objektu. Un tÄlÄk ir treÅ”Ä metode, kas faktiski izpilda Å”o kodu. To visu, izmantojot JPA, var aizstÄt ar vienu rindiÅu, kas rakstÄ«ta zemÄk. Tas dara to paÅ”u ā atrodiet All ByIdIn. Tas ir, pamatojoties uz metodes nosaukumu, tÄ Ä£enerÄ jums SQL vaicÄjumu.
Ä»oti forÅ”a lieta. Es pats, kad nezinÄju SQL, izmantoju JPA. KopumÄ pievÄrsiet uzmanÄ«bu. Ja esat pÄrÄk slinks, lai apgÅ«tu SQL, tÄ ir katastrofa. Un vispÄr ā uguns!
Pavasaris. KurÅ” ir dzirdÄjis par tÄdu lietu kÄ pavasara karkass? Vai jÅ«s redzat, cik daudz jÅ«su ir? Ne velti. Pavasaris ir iekļauts katras otrÄs Java aizmugursistÄmas vakances prasÄ«bÄs. Bez tÄ nav Ä«sti nekur lielas attÄ«stÄ«bas. Kas ir pavasaris? PirmkÄrt, Ŕī ir atkarÄ«bas injekcijas sistÄma. ArÄ« par Å”o pateiks nÄkamais runÄtÄjs. Bet Ä«si sakot, Ŕī ir lieta, kas ļauj vieglÄk importÄt dažu klaÅ”u atkarÄ«bas uz citÄm. Tas ir, zinÄÅ”anas par atkarÄ«bÄm ir vienkÄrÅ”otas.
Spring Boot ir Spring daļa, kas ļauj palaist servera lietojumprogrammu ar vienu pogu. JÅ«s atverat THID, nospiežat pÄris pogas, un tagad jÅ«su servera lietojumprogramma ir izveidota un darbojas uz localhost 8080. Tas ir, jÅ«s vÄl neesat uzrakstÄ«jis nevienu koda rindiÅu, bet tas jau darbojas. Ä»oti forÅ”a lieta. Ja raksti kaut ko savu, uguns!
Pavasaris ir ļoti liels ietvars. Tas ne tikai uztver jÅ«su servera lietojumprogrammu un atrisina atkarÄ«bas injekciju. Tas ļauj veikt vairÄkas darbÄ«bas, tostarp izveidot REST API metodes. Tas ir, jÅ«s uzrakstÄ«jÄt kÄdu metodi un pievienojÄt tai anotÄciju IegÅ«t kartÄÅ”anu. Un tagad jums jau ir kÄda metode vietnÄ localhost, kas jums raksta Hello world. Divas koda rindas un tas darbojas. ForÅ”as lietas.
Pavasaris atvieglo arÄ« kontroldarbu rakstÄ«Å”anu. Nav izejas bez testÄÅ”anas lielajÄ attÄ«stÄ«bÄ. Kods ir jÄpÄrbauda. Å im nolÅ«kam Java ir forÅ”a bibliotÄka JUnit 5. Un JUnit vispÄr, bet jaunÄkÄ versija ir piektÄ. Ir viss testÄÅ”anai, visÄdi apgalvojumi un citas lietas.
Un ir lieliska Mockito sistÄma. IedomÄjieties, ka jums ir kÄda funkcionalitÄte, kuru vÄlaties pÄrbaudÄ«t. FunkcionalitÄte veic daudzas lietas, tostarp, kaut kur pa vidu, tÄ, piemÄram, piesakÄs VKontakte ar jÅ«su ID, un no ID saÅem VKontakte lietotÄja vÄrdu un uzvÄrdu. JÅ«s, iespÄjams, neiekļausit VKontakte testos, tas ir dÄ«vaini. Bet jums ir jÄpÄrbauda funkcionalitÄte, tÄpÄc jÅ«s izveidojÄt Å”o klasi, izmantojot Mockito, mok it, imitÄjot to.
JÅ«s teiksiet, kad uz Å”o klasi atnÄk pieprasÄ«jums ar tÄdu un tÄdu ID, tas atgriež kÄdu uzvÄrdu, piemÄram, Vasja Pupkina. Un tas darbosies. Tas ir, jÅ«s pÄrbaudÄ«sit visu mok vienas klases funkcionalitÄti. Ä»oti forÅ”a lieta.
Dizaina modeļi. Kas tas ir? Å Ä«s ir veidnes tipisku problÄmu risinÄÅ”anai, kas rodas izstrÄdes procesÄ. IzstrÄdÄ bieži rodas identiskas vai lÄ«dzÄ«gas problÄmas, kuras bÅ«tu lieliski atrisinÄt kaut kÄ labi. TÄpÄc cilvÄki nÄca klajÄ ar labÄko praksi, noteiktas veidnes, kÄ Å”Ä«s problÄmas atrisinÄt.
Ir vietne ar populÄrÄkajiem modeļiem - refaktoring.guru, to var palasÄ«t, uzzinÄt, kÄdi modeļi ir, palasÄ«t teoriju gÅ«zmu. ProblÄma ir tÄ, ka tas ir praktiski bezjÄdzÄ«gi. PatiesÄ«bÄ modeļi bez prakses nav Ä«paÅ”i noderÄ«gi.
JÅ«s dzirdÄsit par dažiem modeļiem, piemÄram, Singletone vai Builder. KurÅ” dzirdÄja Å”os vÄrdus? Daudz cilvÄku. Ir tik vienkÄrÅ”i modeļi, kurus varat Ä«stenot pats. Bet lielÄkÄ daļa modeļu: stratÄÄ£ija, rÅ«pnÄ«ca, fasÄde - nav skaidrs, kur tos piemÄrot.
Un, kamÄr praksÄ neredzat citas personas kodÄ vietu, kurai tiek piemÄrots Å”is modelis, jÅ«s pats nevarÄsit to lietot. TÄpÄc prakse ir ļoti svarÄ«ga ar modeļiem. Un tikai lasÄ«Å”ana par tÄm vietnÄ refaktoring.guru nav Ä«paÅ”i noderÄ«ga, taÄu to noteikti ir vÄrts darÄ«t.
KÄpÄc ir nepiecieÅ”ami modeļi? PieÅemsim, ka jums ir noteikta lietotÄju klase. Tam ir ID un nosaukums. Katram lietotÄjam ir jÄbÅ«t gan ID, gan vÄrdam. AugÅ”ÄjÄ kreisajÄ stÅ«rÄ« ir klase.
KÄdi ir lietotÄja inicializÄcijas veidi? Ir divas iespÄjas ā vai nu konstruktors, vai noteicÄjs. KÄdi ir abu pieeju trÅ«kumi?
Konstruktors. jauns lietotÄjs (7, "Bond"), labi. Tagad pieÅemsim, ka mums nav LietotÄju klase, bet kÄda cita, ar septiÅiem ciparu laukiem. Jums bÅ«s konstruktors, kas satur septiÅus secÄ«gus skaitļus. KÄdi ir Å”ie skaitļi un kurÅ” no tiem kuram Ä«paÅ”umam pieder, nav skaidrs. Dizaineris nav izcils.
OtrÄ iespÄja ir iestatÄ«tÄjs. JÅ«s skaidri rakstÄt: setId(7), setName(āBondā). JÅ«s saprotat, kurÅ” Ä«paÅ”ums kuram laukam pieder. Bet seterim ir problÄma. PirmkÄrt, jÅ«s varat aizmirst kaut ko pieŔķirt, un, otrkÄrt, jÅ«su objekts izrÄdÄs mainÄ«gs. Tas nav pavedienam droÅ”s un nedaudz samazina koda lasÄmÄ«bu. TÄpÄc cilvÄki izdomÄja forÅ”u modeli ā Builder.
Par ko ir runa? MÄÄ£inÄsim apvienot abu pieeju ā iestatÄ«tÄja un konstruktora ā priekÅ”rocÄ«bas vienÄ. MÄs izveidojam noteiktu objektu Builder, kuram bÅ«s arÄ« lauki Id un Name, kas pats tiks izveidots, pamatojoties uz iestatÄ«tÄju, un kuram bÅ«s Build metode, kas atgriež jums jaunu lietotÄju ar visiem parametriem. MÄs iegÅ«stam nemainÄ«gu objektu un seteru. ForÅ”i!
KÄdas ir problÄmas? Å eit mums ir klasiskais Builder. ProblÄma ir tÄ, ka mÄs joprojÄm varam aizmirst pÄrbaudÄ«t kÄdÄ laukÄ. Un, ja mÄs aizmirsÄm apmeklÄt ID, Å”ajÄ gadÄ«jumÄ Builder tas tiek inicializÄts uz nulli, jo int tips nav nullÄjams. Un, ja mÄs izveidosim VÄrdu āBondā un aizmirsÄ«sim apmeklÄt ID biroju, mums bÅ«s jauns LietotÄjs ar ID ā0ā un vÄrdu āBondā. Nav forÅ”i.
MÄÄ£inÄsim ar to cÄ«nÄ«ties. ProgrammÄ Builder mÄs mainÄ«sim int uz int, lai tas bÅ«tu nullÄjams. Tagad viss ir lieliski.
Ja mÄÄ£inÄsim izveidot LietotÄju ar vÄrdu āBondā, aizmirstot ievietot viÅa ID, mÄs saÅemsim nulles rÄdÄ«tÄja izÅÄmumu, jo ID nav nullÄjams, un Builder ir nulles, konkrÄti pointera izÅÄmums.
Bet mÄs joprojÄm varam aizmirst ievietot nosaukumu, tÄpÄc objekta atkÄrtoÅ”anu iestatÄ«jÄm uz nulli. Tagad, kad mÄs veidojam objektu no Builder, tas pÄrbauda, āāvai lauks nav nullÄjams. Un tas vÄl nav viss.
ApskatÄ«sim pÄdÄjo piemÄru. Å ajÄ gadÄ«jumÄ, ja ID izpildlaikÄ kaut kÄdÄ veidÄ ievietotu nulli, bÅ«tu lieliski uzreiz uzzinÄt, ka jÅ«s to izdarÄ«jÄt, un nav forÅ”i, ka tagad pieļaujat kļūdu.
Kļūda jÄmet nevis LietotÄja izveides brÄ«dÄ«, bet gan tad, kad ID iestatÄt nulli. TÄpÄc programmÄ Builder mÄs nomainÄ«sim iestatÄ«tÄju Integer uz int, un viÅÅ” nekavÄjoties zvÄr, ka viÅi izmeta nulli.
ÄŖsÄk sakot, kÄda jÄga? Ir vienkÄrÅ”s Builder modelis, taÄu pat tÄ ievieÅ”anai ir daži smalkumi, tÄpÄc ir ļoti forÅ”i aplÅ«kot dažÄdus modeļu ievieÅ”anas veidus. Katram modelim ir desmitiem ievieÅ”anu. Tas viss ir ļoti interesanti.
KÄ mÄs ierakstÄm Builder ražoÅ”anas kodÄ? Å eit ir mÅ«su lietotÄjs. MÄs tam pievienojam Builder rotÄciju no Lombok bibliotÄkas, un tas pats mums Ä£enerÄ Builder. Tas ir, mÄs nerakstÄm nekÄdu kodu, bet Java jau domÄ, ka Å”ai klasei ir Builder, un mÄs to varam saukt Å”Ädi.
Es jau teicu, ka Java ir bibliotÄkas gandrÄ«z visam, ieskaitot Lombok ā forÅ”u bibliotÄku, kas ļauj izvairÄ«ties no teksta rakstÄ«Å”anas. Celtnieks, GET.
Raksti var bÅ«t arhitektoniski ā saistÄ«ti ne tikai ar vienu klasi, bet ar visu sistÄmu kopumÄ. SistÄmas projektÄÅ”anÄ ir tik forÅ”s princips: vienotas atbildÄ«bas princips. par ko viÅÅ” runÄ? Fakts, ka katrai klasei ir jÄatbild par savu funkcionalitÄti. Å ajÄ gadÄ«jumÄ mums ir kontrolieris, kas sazinÄs ar lietotÄjiem, JSON objektiem. Ir FasÄde, kas pÄrveido JSON objektus modeļos, ar kuriem tad darbosies Java lietojumprogramma. Ir pakalpojums, kuram ir sarežģīta loÄ£ika, kas darbojas ar Å”iem modeļiem. Ir datu piekļuves objekts, kas Å”os modeļus ievieto datu bÄzÄ un izgÅ«st no datu bÄzes. Un tur ir pati datubÄze. Citiem vÄrdiem sakot, tas viss nav vienÄ klasÄ, bet mÄs veidojam piecas dažÄdas klases, un tas ir cits modelis.
Kad esat vairÄk vai mazÄk apguvis Java, ir lieliski uzrakstÄ«t savu projektu, kuram bÅ«s datu bÄze, darbs ar citiem API un pakļauts jÅ«su servera lietojumprogrammai REST API klientiem. Tas bÅ«tu lieliski, ko pievienot savam CV, tas bÅ«tu forÅ”s beigas jÅ«su izglÄ«tÄ«bai. Ar to jÅ«s varat doties un iegÅ«t darbu.
Å eit ir mana servera lietojumprogrammas piemÄrs. OtrajÄ kursÄ kopÄ ar puiÅ”iem rakstÄ«ju kursa darbu. ViÅi rakstÄ«ja mobilo aplikÄciju pasÄkumu organizÄÅ”anai. Tur lietotÄji varÄja pieteikties, izmantojot VKontakte, izvietot punktus kartÄ, izveidot pasÄkumus, uzaicinÄt uz tiem savus draugus, saglabÄt notikumu attÄlus utt.
Ko es darÄ«ju projektÄ? UzrakstÄ«ja servera lietojumprogrammu Spring Boot, neizmantojot SQL. Es viÅu nepazinu, izmantoju JPA. Ko tas varÄtu darÄ«t? Piesakieties VK, izmantojot OAuth-2. PaÅemiet lietotÄja marÄ·ieri, dodieties uz VK ar to, pÄrbaudiet, vai tas ir Ä«sts lietotÄjs. SaÅemiet informÄciju par lietotÄjiem, izmantojot VKontakte. TÄ varÄja saglabÄt informÄciju datu bÄzÄ, arÄ« ar APA starpniecÄ«bu. PrasmÄ«gi saglabÄjiet attÄlus un citus failus datora atmiÅÄ un saglabÄjiet saites uz tiem datu bÄzÄ. Toreiz es nezinÄju, ka datu bÄzÄ ir CLOB objekti, tÄpÄc es to darÄ«ju Å”Ädi. Bija REST API lietotÄjiem, klientu lietojumprogrammÄm. Un bija vienÄ«bu testi pamata funkcionalitÄtei.
[ā¦] Neliels piemÄrs manai veiksmÄ«gai Java apguvei. PirmajÄ universitÄtes gadÄ man mÄcÄ«ja C# un deva izpratni par OOP programmÄÅ”anu ā kas ir klases, saskarnes, abstrakcija un kÄpÄc tÄs ir vajadzÄ«gas. Tas man ļoti palÄ«dzÄja. Bez tÄ Java apguve ir diezgan sarežģīta; nav skaidrs, kÄpÄc ir vajadzÄ«gas nodarbÄ«bas.
ManÄ otrajÄ kursÄ universitÄtÄ viÅi atkal mÄcÄ«ja Java kodolu, bet es neapstÄjos ar to, es pats devos studÄt pavasari un uzrakstÄ«ju kursa darbu, savu projektu, par kuru es minÄju iepriekÅ”. Un ar visu to es devos uz praksi Yandex, nokÄrtoju interviju un iekļuvu Yandex.Market. Tur es uzrakstÄ«ju aizmugurprogrammu Beru, tas ir mÅ«su tirgus, un paÅ”am Yandex.Market.
PÄc tam pirms seÅ”iem mÄneÅ”iem es pÄrgÄju uz citu komandu tajÄ paÅ”Ä tirgÅ«. MÄs veicam analÄ«zi biznesa partneriem. MÄs atrodamies analÄ«tiskajÄ platformÄ, aizmugurÄ esam trÄ«s, tÄpÄc man ir ļoti liela ietekme uz projektu. Tas ir ļoti interesanti, patiesÄ«bÄ. Tas ir, mÄs faktiski sniedzam datus par tirgu ā kÄdi ir pÄrdoÅ”anas apjomi, kÄdÄs kategorijÄs, kÄdos modeļos, biznesa partneriem, lieliem pazÄ«stamiem uzÅÄmumiem. Un mÄs esam tikai trÄ«s, mÄs rakstÄm Å”o kodu, un tas ir ļoti forÅ”i.