Għaliex titgħallem Java u kif tagħmel dan b'mod effettiv. Rapport Yandex

Kif huwa Java differenti minn lingwi popolari oħra? Għaliex Java għandu jkun l-ewwel lingwa li titgħallem? Ejja noħolqu pjan li jgħinek titgħallem Java kemm mill-bidu kif ukoll billi tapplika ħiliet ta' programmar f'lingwi oħra. Ejja elenka d-differenzi bejn il-ħolqien ta 'kodiċi ta' produzzjoni f'Java u l-iżvilupp f'lingwi oħra. Mikhail Zatepyakin qara dan ir-rapport waqt laqgħa għall-parteċipanti futuri apprendistati Yandex u żviluppaturi oħra tal-bidu - Laqgħa Java Junior.


— Hello kulħadd, jien jisimni Misha. Jiena żviluppatur minn Yandex.Market, u llum se ngħidlek għaliex titgħallem Java u kif tagħmel dan b'mod effettiv. Tista' tistaqsi mistoqsija raġonevoli: għaliex se nkun qed ngħid din l-istorja, u mhux xi żviluppatur b'saħħtu b'ħafna snin ta' esperjenza? Il-fatt hu li jien stess studjajt Java reċentement, madwar sena u nofs ilu, għalhekk għadni niftakar kif kienet u x'iżvantaġġi hemm.

Sena ilu sibt apprendistat f'Yandex.Market. Żviluppajt il-backend għal Beru, għas-Suq innifsu, probabilment użajtu. Issa nkompli naħdem hemm, f’tim differenti. Aħna noħolqu pjattaforma analitika għal Yandex.Market għall-imsieħba kummerċjali.

Għaliex titgħallem Java u kif tagħmel dan b'mod effettiv. Rapport Yandex

Ejja nibdew. Għaliex titgħallem Java mil-lat prattiku? Il-fatt hu li Java hija lingwa ta 'programmar famuża ħafna. Għandha komunità kbira ħafna.

Per eżempju, hemm tali indiċi TIOBE, indiċi popolari tal-popolarità tal-lingwi ta 'programmar, u Java jikklassifika l-ewwel hemmhekk. Ukoll, fuq is-siti tax-xogħol, probabilment tinnota li ħafna mill-postijiet battala huma dwar Java, jiġifieri, billi tiżviluppa f'Java, dejjem tista 'ssib impjieg.

Peress li l-komunità hija kbira ħafna, kwalunkwe mistoqsija li għandek issib tweġiba fuq xi Stack Overflow jew siti oħra. Ukoll, meta tiżviluppa f'Java, fil-fatt tkun qed tikteb kodiċi fuq il-JVM, sabiex tkun tista 'faċilment taqleb għal Kotlin, Scala u lingwi oħra li jużaw il-JVM.

Għaliex titgħallem Java u kif tagħmel dan b'mod effettiv. Rapport Yandex

X'inhu tajjeb dwar Java mil-lat ideoloġiku? Hemm lingwi ta' programmar differenti. Huma jsolvu problemi differenti, inti taf li. Pereżempju, Python huwa tajjeb ħafna biex tikteb skripts ta 'linja waħda biex issolvi problemi ta' malajr.

Fuq in-naħa pożittiva, tista 'tikkontrolla bis-sħiħ il-kodiċi eżekutibbli. Pereżempju, għandna karozzi, karozzi mingħajr sewwieq Yandex, il-kodiċi tagħhom huwa miktub f'pluses. Għaliex? Java għandu tali ħaġa - Garbage Collector. Tneħħi r-RAM minn oġġetti mhux meħtieġa. Din il-ħaġa tibda spontanjament u tagħmel stop-the-world, jiġifieri, twaqqaf il-bqija tal-programm u tmur tgħodd l-oġġetti, memorja ċara ta 'oġġetti. Jekk ħaġa bħal din taħdem f'drone, mhix friska. Id-drone tiegħek se jsuq dritt, f'dan il-mument ineħħi l-memorja tiegħu u ma jħares lejn it-triq xejn. Għalhekk, id-drone huwa miktub fuq il-vantaġġi.

Għaliex titgħallem Java u kif tagħmel dan b'mod effettiv. Rapport Yandex

Liema problemi jsolvi Java? Hija primarjament lingwa għall-iżvilupp ta' programmi kbar li jinkitbu matul is-snin, minn għexieren jew mijiet ta' nies. B'mod partikolari, ħafna mill-backend f'Yandex.Market huwa miktub f'Java. Għandna tim imqassam f'diversi bliet, għaxar persuni f'kull waħda. U l-kodiċi huwa faċli biex jinżamm, ġie appoġġjat għal għaxar snin jew aktar, u fl-istess ħin nies ġodda jidħlu u jifhmu dan il-kodiċi.

X'karatteristiċi għandu jkollha lingwa biex il-kodiċi fiha jkun sostnut faċilment u biex ikun jista' jiġi żviluppat faċilment f'timijiet kbar. L-ewwelnett, għandu jkun kodiċi li jinqara, u għandu jkun faċli li jiġu implimentati soluzzjonijiet arkitettoniċi kumplessi. Jiġifieri, għandu jkun faċli li tikteb astrazzjonijiet ta 'livell għoli, eċċ Dan kollu huwa dak li jipprovdina Java. Din hija lingwa orjentata lejn l-oġġetti. Huwa verament faċli li timplimenta astrazzjonijiet ta 'livell għoli u arkitetturi kumplessi.

Hemm ukoll ħafna oqfsa u libreriji għal Java, minħabba li l-lingwa għandha aktar minn 15-il sena. Matul dan iż-żmien, dak kollu li jista 'jinkiteb kien miktub fuqha, għalhekk hemm tunnellati ta' libreriji għal dak kollu li jista 'jkollok bżonn.

Għaliex titgħallem Java u kif tagħmel dan b'mod effettiv. Rapport Yandex

X'ħiliet bażiċi, fl-opinjoni tiegħi, għandu jkollu plejer tal-JA li jibda? L-ewwelnett, dan huwa għarfien tal-lingwa ewlenija Java. Li jmiss huwa xi tip ta 'qafas ta' Injezzjoni tad-Dipendenza. Il-kelliem li jmiss, Kirill, se jitkellem dwar dan aktar bis-sħiħ. Mhux se nidħol wisq fil-fond. Li jmiss huwa l-arkitettura u l-mudelli tad-disinn. Irridu nkunu kapaċi niktbu kodiċi arkitettonalment sabiħ sabiex niktbu applikazzjonijiet kbar. U dan huwa xi tip ta 'SQL jew ORM għal kompiti ta' ħidma mad-database. U dan japplika aktar għall-backend.

Għaliex titgħallem Java u kif tagħmel dan b'mod effettiv. Rapport Yandex

Mur! qalba Java. Mhux se niskopri l-Amerika hawn—jeħtieġ li tkun taf il-lingwa nnifisha. Dak li għandek tagħti attenzjoni. L-ewwelnett, Java ħarġet ħafna verżjonijiet f'dawn l-aħħar snin, jiġifieri, fl-2014-2015 is-seba 'kien rilaxxat, imbagħad it-tmien, id-disa', l-għaxar, ħafna verżjonijiet ġodda, u ħafna affarijiet friski ġodda ġew introdotti fihom , pereżempju, il-Java Stream API , lambda, eċċ. Affarijiet friski ħafna, friski, friski li jintużaw fil-kodiċi tal-produzzjoni, dak li jistaqsu dwaru fl-intervisti u li trid tkun taf. Għalhekk, m'għandekx tieħu ktieb mill-ixkaffa fil-librerija Java-4 u tmur titgħallmuh. Dan huwa l-pjan tagħna: nitgħallmu Java-8 jew ogħla.

Aħna nagħtu attenzjoni kbira lill-innovazzjonijiet bħal Stream API, var, eċċ. Huma mitluba waqt intervisti u huma kontinwament użati fil-produzzjoni. Jiġifieri, l-API Stream huwa ħafna aktar frisk minn loops, b'mod ġenerali, ħaġa friska ħafna. Kun żgur li tagħti attenzjoni.

U hemm kull xorta ta 'affarijiet bħal iteraturi, Eċċezzjonijiet u l-bqija. Affarijiet li jidhru mhux importanti għalik sakemm tikteb xi kodiċi żgħir lilek innifsek. M'għandekx bżonn dawn l-Eċċezzjonijiet, min għandu bżonnhom xorta waħda? Iżda żgur li se jintalbu waqt intervisti, żgur li se jkunu utli għalik fil-produzzjoni. B'mod ġenerali, għandek tagħti attenzjoni lill-Eċċezzjonijiet, iteraturi u affarijiet oħra.

Għaliex titgħallem Java u kif tagħmel dan b'mod effettiv. Rapport Yandex

Strutturi tad-data. Ma tistax tmur mingħajr strutturi, iżda jkun kbir jekk ma tkunx taf biss li hemm settijiet, dizzjunarji u folji. U wkoll implimentazzjonijiet differenti ta 'strutturi. Pereżempju, l-istess dizzjunarju f'Java għandu ħafna implimentazzjonijiet, inklużi HashMap u TreeMap. Għandhom asintotiċi differenti, huma strutturati b'mod differenti ġewwa. Trid tkun taf kif huma differenti u meta tuża liema waħda.

Ikun ukoll jibred ħafna jekk taf kif dawn l-istrutturi tad-dejta jaħdmu internament. Jiġifieri, mhux faċli li tkun taf l-asintotiċi tagħhom - kemm taħdem l-imħatra, kemm taħdem il-pass, iżda kif taħdem l-istruttura ġewwa - per eżempju, x'inhu barmil f'HashMap.

Ta’ min joqgħod attent ukoll għas-siġar u l-graffs. Dawn huma affarijiet li mhumiex komuni ħafna fil-kodiċi tal-produzzjoni, iżda huma popolari fl-intervisti. Għaldaqstant, jeħtieġ li tkun tista 'traversa siġar, graffs fil-wisa' u fil-fond. Dawn huma kollha algoritmi sempliċi.

Hekk kif tibda tikteb xi kodiċi kbir, kumpless, bl-użu ta 'libreriji, kodiċi multi-klassi, inti tirrealizza li huwa diffiċli għalik mingħajr sistemi jibnu u ssolvi dipendenzi. Dawn huma primarjament Maven u Gradle. Huma jippermettulek timporta libreriji fil-proġett tiegħek f'linja waħda. Jiġifieri, tikteb xml b'linja waħda u timporta libreriji fil-proġett. Sistemi kbar. Huma bejn wieħed u ieħor l-istess, uża jew wieħed - Maven jew Gradle.

Li jmiss - xi tip ta 'sistema ta' kontroll tal-verżjoni. Nirrakkomanda Git għaliex huwa popolari u hemm tunnellati ta 'tutorials. Kważi kulħadd juża Git, hija ħaġa friska, ma tistax tgħix mingħajrha.

U xi tip ta 'ambjent ta' żvilupp. Nirrakkomanda IntelliJ Idea. Tħaffef ħafna l-proċess ta 'żvilupp, jgħinek ħafna, jikteb il-kodiċi tal-boilerplate kollu għalik, b'mod ġenerali, huwa frisk.

Għaliex titgħallem Java u kif tagħmel dan b'mod effettiv. Rapport Yandex

Links mill-pjastra: SQLZOO, habrapost

SQL. Ftit dwar backenders. Fil-fatt kien hemm każ umoristiku hawn. Jumejn qabel it-tieni intervista tiegħi għall-apprendistat, tfajla HR ċempilli u qalet li f'jumejn kienu se jistaqsuni dwar SQL u HTTP, kelli bżonn nitgħallemha. U ma kont naf kważi xejn dwar SQL jew HTTP. U sibt dan is-sit frisk - SQLZOO. Tgħallimt SQL fuqha fi 12-il siegħa, jiġifieri, sintassi SQL, kif tikteb mistoqsijiet SELECT, JOIN, eċċ. Sit frisk ħafna, nirrakkomandah ħafna. Fil-fatt, fi 12-il siegħa tgħallimt 90% ta’ dak li naf issa.

U huwa tajjeb ukoll li tkun taf l-arkitettura tad-database. Dawn huma kull tip ta 'ċwievet, indiċi, normalizzazzjoni. Hemm sensiela ta’ posts dwar dan fuq Habré.

Għaliex titgħallem Java u kif tagħmel dan b'mod effettiv. Rapport Yandex

F'Java, minbarra l-SQL, hemm kull xorta ta 'sistemi ta' mapping Relazzjonali Oġġett bħal JPA. Hemm xi kodiċi. Fl-ewwel metodu hemm xi kodiċi SQL - SELECT id name FROM info.users WHERE id IN userIds. Mid-database tal-utenti, mit-tabella, jinkisbu l-IDs u l-ismijiet tagħhom.

Sussegwentement, hemm ċertu mapper li jibdel oġġett mill-bażi f'oġġett Java. U hemm it-tielet metodu hawn taħt li fil-fatt jesegwixxi dan il-kodiċi. Dan kollu jista 'jiġi sostitwit bl-użu ta' JPA b'linja waħda, li hija miktuba hawn taħt. Jagħmel l-istess ħaġa - issib Kollha ByIdIn. Jiġifieri, ibbażat fuq l-isem tal-metodu, jiġġenera mistoqsija SQL għalik.

Ħaġa friska ħafna. Jien stess, meta ma kontx naf l-SQL, użajt JPA. B'mod ġenerali, agħti attenzjoni. Jekk int għażżien wisq biex titgħallem SQL, huwa diżastru. U, b'mod ġenerali, nar!

Għaliex titgħallem Java u kif tagħmel dan b'mod effettiv. Rapport Yandex

Rebbiegħa. Min sema' b'xi ħaġa bħall-qafas tar-Rebbiegħa? Tara kemm hemm minnkom? Mhux bla raġuni. Ir-rebbiegħa hija inkluża fir-rekwiżiti ta' kull tieni post vakanti Java backend. Mingħajrha, m'hemm verament imkien fi żvilupp kbir. X'inhi r-Rebbiegħa? L-ewwelnett, dan huwa qafas ta 'Injezzjoni ta' Dipendenza. Dwar dan ukoll se tgħid kelliem li jmiss. Iżda fil-qosor, din hija ħaġa li tippermettilek tagħmilha aktar faċli li timporta d-dipendenzi ta 'xi klassijiet fuq oħrajn. Jiġifieri, l-għarfien tad-dipendenzi huwa ssimplifikat.

Spring Boot hija biċċa tar-Rebbiegħa li tippermettilek tmexxi l-applikazzjoni tas-server tiegħek b'buttuna waħda. Inti tmur THID, agħfas ftit buttuni, u issa għandek l-applikazzjoni tas-server tiegħek taħdem u taħdem fuq localhost 8080. Jiġifieri, għadek ma ktibtx linja waħda ta 'kodiċi, iżda diġà qed taħdem. Ħaġa friska ħafna. Jekk tikteb xi ħaġa tiegħek, nar!

Ir-rebbiegħa hija qafas kbir ħafna. Mhux biss jiġbor l-applikazzjoni tas-server tiegħek u ssolvi l-Injezzjoni tad-Dipendenza. Jippermettilek tagħmel mazz ta 'affarijiet, inkluż il-ħolqien ta' metodi REST API. Jiġifieri, ktibt xi metodu u mehmuż miegħu l-annotazzjoni tal-mapping Get. U issa diġà għandek xi metodu fuq localhost li jikteb Hello world lilek. Żewġ linji ta 'kodiċi u taħdem. Jiksaħ għalf.

Ir-rebbiegħa wkoll tagħmel it-testijiet tal-kitba aktar faċli. M'hemm l-ebda mod mingħajr ittestjar fl-iżvilupp kbir. Il-kodiċi jeħtieġ li jiġi ttestjat. Għal dan il-għan, Java għandha librerija friska JUnit 5. U JUnit b'mod ġenerali, iżda l-aħħar verżjoni hija l-ħames. Hemm kollox għall-ittestjar, kull xorta ta 'affermazzjonijiet u affarijiet oħra.

U hemm qafas tal-biża 'Mockito. Immaġina li għandek xi funzjonalità li trid tittestja. Il-funzjonalità tagħmel ħafna affarijiet, inkluż, x'imkien fin-nofs, tidħol f'VKontakte bl-ID tiegħek, pereżempju, u tirċievi l-isem u l-kunjom tal-utent VKontakte mill-ID. Probabbilment mhux se tinkludi VKontakte fit-testijiet, din hija stramba. Imma trid tittestja l-funzjonalità, għalhekk għamilt din il-klassi, billi tuża Mockito, mok it, imitaha.

Tgħid li meta talba tasal f'din il-klassi b'ID bħal din, tirritorna xi kunjom, pereżempju, Vasya Pupkin. U se taħdem. Jiġifieri, se tittestja l-funzjonalità kollha għal mok klassi waħda. Ħaġa friska ħafna.

Għaliex titgħallem Java u kif tagħmel dan b'mod effettiv. Rapport Yandex

Link minn slide

Mudelli tad-disinn. X'inhu? Dawn huma mudelli biex isolvu problemi tipiċi li jinqalgħu fl-iżvilupp. Fl-iżvilupp, ħafna drabi jinqalgħu problemi identiċi jew simili li jkun tajjeb li ssolvi b'xi mod tajjeb. Għalhekk, in-nies ħarġu bl-aħjar prattiki, ċerti mudelli, dwar kif issolvi dawn il-problemi.

Hemm websajt bl-aktar mudelli popolari - refactoring.guru, tista 'taqrah, issir taf liema mudelli hemm, aqra mazz ta' teorija. Il-problema hija li huwa prattikament inutli. Fil-fatt, mudelli mingħajr prattika mhumiex partikolarment utli.

Se tisma 'dwar xi mudelli bħal Singletone jew Builder. Min sema dan il-kliem? Ħafna nies. Hemm mudelli sempliċi bħal dawn li tista 'timplimenta lilek innifsek. Iżda ħafna mill-mudelli: strateġija, fabbrika, faċċata - mhuwiex ċar fejn japplikawhom.

U sakemm tara fil-prattika fil-kodiċi ta 'xi persuna oħra post li għalih jiġi applikat dan il-mudell, ma tkunx tista' tapplikaha lilek innifsek. Għalhekk, il-prattika hija importanti ħafna bil-mudelli. U sempliċement taqra dwarhom fuq refactoring.guru mhix ta 'għajnuna kbira, iżda definittivament ta' min tagħmel.

Għaliex titgħallem Java u kif tagħmel dan b'mod effettiv. Rapport Yandex

Għaliex huma meħtieġa mudelli? Ejja ngħidu li għandek ċerta klassi tal-Utent. Għandu Id u Isem. Kull Utent għandu jkollu kemm Id kif ukoll Isem. Fuq ix-xellug hemm il-klassi.

X'inhuma l-modi biex inizjalizza l-Utent? Hemm żewġ għażliet - jew kostruttur jew setter. X'inhuma l-iżvantaġġi taż-żewġ approċċi?

Kostruttur. Utent ġdid (7, "Bond"), okay. Issa ejja ngħidu li m'għandniex klassi User, iżda xi waħda oħra, b'seba' oqsma numeriċi. Ikollok kostruttur li jkun fih seba' numri konsekuttivi. Mhux ċar x’inhuma dawn in-numri u liema minnhom jappartjeni għal liema proprjetà. Id-disinjatur mhuwiex kbir.

It-tieni għażla hija setter. Tikteb b'mod ċar: setId(7), setName ("Bond"). Inti tifhem liema proprjetà tappartjeni għal liema qasam. Iżda setter għandu problema. L-ewwelnett, tista 'tinsa tassenja xi ħaġa, u t-tieni, l-oġġett tiegħek jirriżulta li jista' jinbidel. Dan mhuwiex ħajt sikur u jnaqqas xi ftit il-leġibbiltà tal-kodiċi. Huwa għalhekk li n-nies ħarġu bi mudell frisk - Bennej.

Għaliex titgħallem Java u kif tagħmel dan b'mod effettiv. Rapport Yandex

X'inhu dan dwar? Ejja nippruvaw ngħaqqdu l-vantaġġi taż-żewġ approċċi—setter u kostruttur—f'wieħed. Nagħmlu ċertu oġġett, Bennej, li jkollu wkoll oqsma Id u Isem, li hu stess se jinbena abbażi tas-setter, u li jkollu metodu Ibni li jirritorna Utent ġdid bil-parametri kollha. Ikollna oġġett immutabbli u setter. Kessaħ!

X'inhuma l-problemi? Hawnhekk għandna l-bennej klassiku. Il-problema hija li xorta nistgħu ninsew li niċċekkjaw f'xi qasam. U jekk insew li nżuru l-ID, f'dan il-każ f'Builder huwa inizjalizzat għal żero, minħabba li t-tip int mhuwiex nullable. U jekk nagħmlu l-Isem "Bond" u ninsew inżuru l-uffiċċju tal-ID, ikollna Utent ġdid b'id "0" u l-isem "Bond". Mhux jibred.

Ejja nippruvaw niġġieldu dan. Fil-bennej se nbiddlu int għal int sabiex ikun nullable. Issa kollox huwa kbir.

Għaliex titgħallem Java u kif tagħmel dan b'mod effettiv. Rapport Yandex

Jekk nippruvaw noħolqu Utent bl-isem "Bond", u ninsew li npoġġu l-ID tiegħu, se nġibu eċċezzjoni tal-pointer null, minħabba li l-ID mhix nullable, u l-Bennej għandu eċċezzjoni nulla, speċifikament tal-pointer.

Għaliex titgħallem Java u kif tagħmel dan b'mod effettiv. Rapport Yandex

Imma xorta nistgħu ninsew li npoġġu isem, għalhekk nissettjaw ir-replay tal-oġġett għal null. Issa, meta nibnu l-oġġett tagħna minn Bennej, jiċċekkja li l-qasam ma jkunx nullable. U dan mhux kollox.

Ejja nħarsu lejn l-aħħar eżempju. F'dan il-każ, jekk b'xi mod inpoġġu null fir-runtime tal-ID, ikun tajjeb li tkun taf immedjatament li għamilt dan u mhux tajjeb li qed tagħmel żball issa.

Għaliex titgħallem Java u kif tagħmel dan b'mod effettiv. Rapport Yandex

Għandek bżonn tarmi żball mhux fil-mument tal-ħolqien tal-Utent, iżda meta tissettja null għall-ID. Għalhekk, fil-bennej aħna se jibdlu l-setter Integer għal int, u huwa immedjatament naħlef li huma threw barra null.

Fil-qosor, x'inhu l-punt? Hemm mudell Bennej sempliċi, iżda anke l-implimentazzjoni tiegħu għandha xi irqaq, għalhekk huwa tajjeb ħafna li tħares lejn implimentazzjonijiet differenti ta 'mudelli. Kull mudell għandu għexieren ta 'implimentazzjonijiet. Dan kollu huwa interessanti ħafna.

Għaliex titgħallem Java u kif tagħmel dan b'mod effettiv. Rapport Yandex

Kif niktbu Bennej fil-kodiċi tal-produzzjoni? Hawn l-Utent tagħna. Aħna nwaħħallu rotazzjoni tal-Bennej mil-librerija Lombok magħha, u hija stess tiġġenera Bennej għalina. Jiġifieri ma niktbu l-ebda kodiċi, iżda Java diġà taħseb li din il-klassi għandha Bennej, u nistgħu nsejħulha hekk.

Diġà għedt li Java għandha libreriji għal kważi kollox, inkluż Lombok, librerija friska li tippermettilek tevita li tikteb boilerplate. Bennej, IKOLLOK.

Għaliex titgħallem Java u kif tagħmel dan b'mod effettiv. Rapport Yandex

Il-mudelli jistgħu jkunu arkitettoniċi - relatati mhux biss ma 'klassi waħda, iżda mas-sistema kollha kemm hi. Hemm tali prinċipju jibred fid-disinn tas-sistema: Prinċipju ta 'Responsabbiltà Unika. Fuq xiex qed jitkellem? Il-fatt li kull klassi trid tkun responsabbli għal xi wħud mill-funzjonalità tagħha stess. F'dan il-każ, għandna Kontrollur li jikkomunika mal-utenti, oġġetti JSON. Hemm Facade, li tikkonverti oġġetti JSON f'mudelli li mbagħad taħdem magħhom l-applikazzjoni Java. Hemm Servizz li għandu loġika kumplessa li taħdem ma’ dawn il-mudelli. Hemm Data Access Object li jpoġġi dawn il-mudelli fid-database u jirkuprahom mid-database. U hemm id-database innifsu. Fi kliem ieħor, mhux kollu fi klassi waħda, iżda qed nagħmlu ħames klassijiet differenti, u dak huwa mudell ieħor.

Għaliex titgħallem Java u kif tagħmel dan b'mod effettiv. Rapport Yandex

Ladarba tkun tgħallimt xi ftit jew wisq Java, huwa tajjeb li tikteb il-proġett tiegħek stess li jkollu database, jaħdem ma' APIs oħra, u tesponi l-applikazzjoni tas-server tiegħek għall-klijenti REST API. Din tkun ħaġa kbira li żżid mal-jerġa tiegħek, ikun tmiem frisk għall-edukazzjoni tiegħek. B'dan tista' tmur u tikseb impjieg.

Għaliex titgħallem Java u kif tagħmel dan b'mod effettiv. Rapport Yandex

Hawnhekk huwa eżempju ta 'applikazzjoni server tiegħi. Fit-tieni sena tiegħi, ktibt karta tat-terminu mal-guys. Huma kienu qed jiktbu applikazzjoni mobbli biex jorganizzaw avvenimenti. Hemmhekk, l-utenti jistgħu jidħlu permezz ta 'VKontakte, iqiegħdu punti fuq il-mappa, joħolqu avvenimenti, jistiednu lill-ħbieb tagħhom għalihom, jiffrankaw immaġini ta' avvenimenti, eċċ.

X'għamilt fil-proġett? Kitbet applikazzjoni għal server fi Spring Boot mingħajr ma tuża SQL. Ma kontx naf lilu, użajt JPA. X'jista' jagħmel? Idħol f'VK permezz ta' OAuth-2. Ħu t-token tal-utent, mur VK magħha, iċċekkja li huwa utent reali. Irċievi informazzjoni dwar l-utenti permezz ta' VKontakte. Kien kapaċi jiffranka l-informazzjoni f'database, ukoll permezz tal-JPA. Skillfully issalva stampi u fajls oħra fil-memorja tal-kompjuter, u ħlief links għalihom fid-database. Dak iż-żmien ma kontx naf li kien hemm oġġetti CLOB fid-database, għalhekk għamilt dan il-mod. Kien hemm REST API għall-utenti, l-applikazzjonijiet tal-klijenti. U kien hemm testijiet ta 'unità għall-funzjonalità bażika.

[…] Eżempju żgħir tat-tagħlim b'suċċess tiegħi tal-Java. Fl-ewwel sena tiegħi fl-università, ġejt mgħallma C# u ngħatajt fehim tal-ipprogrammar OOP - x'inhuma klassijiet, interfaces, estrazzjoni, u għaliex huma meħtieġa. Għenni ħafna. Mingħajr dan, it-tagħlim tal-Java huwa pjuttost diffiċli; mhuwiex ċar għaliex il-klassijiet huma meħtieġa.

Għaliex titgħallem Java u kif tagħmel dan b'mod effettiv. Rapport Yandex

Fit-tieni sena tiegħi fl-università, reġgħu għallmu Java core, imma jien ma waqaftx hemm, mort nistudja r-Rebbiegħa jien stess u ktibt karta tal-kors, il-proġett tiegħi, li semmejt hawn fuq. U ma 'dan kollu, mort għal apprendistat f'Yandex, għadda intervista, u dħalt f'Yandex.Market. Hemmhekk ktibt il-backend għal Beru, dan huwa s-suq tagħna, u għal Yandex.Market innifsu.

Wara dan, sitt xhur ilu, ttrasferijt għal tim ieħor fi ħdan l-istess Suq. Nagħmlu analiżi għall-imsieħba fin-negozju. Aħna fil-pjattaforma analitika, hemm tlieta minna fuq il-backend, għalhekk għandi sehem kbir ħafna ta 'influwenza fuq il-proġett. Huwa interessanti ħafna, fil-fatt. Jiġifieri, fil-fatt nipprovdu dejta dwar is-suq - x'inhu l-bejgħ, f'liema kategoriji, f'liema mudelli, għal sħab fin-negozju, kumpaniji kbar magħrufa. U hemm tlieta minna biss, niktbu dan il-kodiċi, u huwa jibred ħafna.

Grazzi! Links utli:
- "Java 8. Gwida tal-Bidu".
- Strutturi tad-data.
- SQLZOO.
- Normalizzazzjoni tad-Database.
- Disinn Disinn.
- Disinji tad-Disinn.
- Kodiċi Nadif.
- Java effettiva.

Sors: www.habr.com

Żid kumment