Nima uchun Java-ni o'rganish va uni qanday samarali qilish kerak. Yandex hisoboti

Java boshqa mashhur tillardan nimasi bilan farq qiladi? Nima uchun Java birinchi o'rganiladigan til bo'lishi kerak? Keling, Java-ni noldan boshlab va boshqa tillarda dasturlash ko'nikmalarini qo'llash orqali o'rganishingizga yordam beradigan reja tuzaylik. Keling, Java-da ishlab chiqarish kodini yaratish va boshqa tillarda ishlab chiqish o'rtasidagi farqlarni sanab o'tamiz. Mixail Zatepyakin ushbu hisobotni bo'lajak ishtirokchilar uchun yig'ilishda o'qib chiqdi stajirovkalar Yandex va boshqa boshlang'ich ishlab chiquvchilar - Java Junior uchrashuvi.


- Hammaga salom, mening ismim Misha. Men Yandex.Market ishlab chiqaruvchisiman va bugun men sizga nima uchun Java-ni o'rganish kerakligini va uni qanday qilib samarali bajarish kerakligini aytib beraman. Siz o'rtacha savol berishingiz mumkin: nega men bu voqeani ko'p yillik tajribaga ega kuchli ishlab chiquvchi emas, balki aytib beraman? Gap shundaki, men o'zim Java-ni yaqinda, taxminan bir yarim yil oldin o'rganganman, shuning uchun u qanday bo'lganini va qanday tuzoqlar borligini hali ham eslayman.

Bir yil oldin men Yandex.Marketda amaliyot oldim. Men Beru uchun, Marketning o'zi uchun backend ishlab chiqdim, ehtimol siz undan foydalangansiz. Endi men u yerda, boshqa jamoada ishlashda davom etaman. Biz biznes hamkorlar uchun Yandex.Market uchun tahliliy platforma yaratamiz.

Nima uchun Java-ni o'rganish va uni qanday samarali qilish kerak. Yandex hisoboti

Qani boshladik. Nega Java tilini amaliy nuqtai nazardan o'rganish kerak? Gap shundaki, Java juda mashhur dasturlash tilidir. U juda katta jamoaga ega.

Masalan, dasturlash tillari mashhurligining mashhur indeksi bo'lgan TIOBE indeksi mavjud va Java u erda birinchi o'rinda turadi. Bundan tashqari, ish saytlarida, ehtimol, bo'sh ish o'rinlarining aksariyati Java haqida ekanligini, ya'ni Java-da ishlab chiqish orqali siz doimo ish topishingiz mumkin.

Hamjamiyat juda katta bo'lgani uchun sizda bo'lgan har qanday savol ba'zi Stack Overflow yoki boshqa saytlarda javob topadi. Bundan tashqari, Java-da ishlab chiqayotganda, siz aslida JVM-da kod yozasiz, shuning uchun siz Kotlin, Scala va JVM-dan foydalanadigan boshqa tillarga osongina o'tishingiz mumkin.

Nima uchun Java-ni o'rganish va uni qanday samarali qilish kerak. Yandex hisoboti

Mafkuraviy nuqtai nazardan Java haqida nima yaxshi? Turli xil dasturlash tillari mavjud. Ular turli muammolarni hal qilishadi, buni bilasiz. Misol uchun, Python tez muammolarni hal qilish uchun bir qatorli skriptlarni yozish uchun juda yaxshi.

Ijobiy tomoni shundaki, siz bajariladigan kodni to'liq boshqarishingiz mumkin. Misol uchun, bizda avtomashinalar bor, Yandex haydovchisiz mashinalar, ularning kodi plyuslarda yozilgan. Nega? Java-da shunday narsa bor - Garbage Collector. RAMni keraksiz narsalardan tozalaydi. Bu narsa o'z-o'zidan boshlanadi va dunyoni to'xtatadi, ya'ni dasturning qolgan qismini to'xtatadi va ob'ektlarni sanashga o'tadi, ob'ektlar xotirasini tozalaydi. Agar bunday narsa dronda ishlasa, bu ajoyib emas. Sizning droningiz to'g'ridan-to'g'ri harakat qiladi, hozir xotirasini tozalaydi va yo'lga umuman qaramaydi. Shuning uchun, dron professionallarga yozilgan.

Nima uchun Java-ni o'rganish va uni qanday samarali qilish kerak. Yandex hisoboti

Java qanday muammolarni hal qiladi? Bu, birinchi navbatda, yillar davomida, o'nlab yoki yuzlab odamlar tomonidan yozilgan yirik dasturlarni ishlab chiqish uchun tildir. Xususan, Yandex.Market-dagi ko'plab backend Java-da yozilgan. Har birida o'n kishidan iborat bir nechta shaharlarda taqsimlangan jamoamiz bor. Va kodni saqlash oson, u o'n yil yoki undan ko'proq vaqt davomida qo'llab-quvvatlanadi va shu bilan birga yangi odamlar kirib, ushbu kodni tushunishadi.

Til qanday xususiyatlarga ega bo'lishi kerakki, undagi kod osongina qo'llab-quvvatlanishi va uni katta jamoalarda osongina ishlab chiqishi mumkin. Avvalo, u o'qilishi mumkin bo'lgan kod bo'lishi kerak va murakkab arxitektura echimlarini amalga oshirish oson bo'lishi kerak. Ya'ni, yuqori darajadagi abstraksiyalarni yozish oson bo'lishi kerak va hokazo. Bularning barchasi Java bizga taqdim etadi. Bu ob'ektga yo'naltirilgan til. Yuqori darajadagi abstraktsiyalar va murakkab arxitekturalarni amalga oshirish juda oson.

Java uchun juda ko'p ramkalar va kutubxonalar ham mavjud, chunki til 15 yildan ortiq. Bu vaqt ichida yozilishi mumkin bo'lgan hamma narsa unga yozilgan, shuning uchun sizga kerak bo'lishi mumkin bo'lgan hamma narsa uchun tonnalab kutubxonalar mavjud.

Nima uchun Java-ni o'rganish va uni qanday samarali qilish kerak. Yandex hisoboti

Menimcha, boshlang'ich JA o'yinchisi qanday asosiy ko'nikmalarga ega bo'lishi kerak? Birinchidan, bu Java asosiy tilini bilishdir. Keyingi bir turdagi bog'liqlik in'ektsiya ramkasi. Keyingi ma'ruzachi Kirill bu haqda to'liqroq gapiradi. Men juda chuqur kirmayman. Keyingi arxitektura va dizayn naqshlari. Katta hajmdagi ilovalarni yozish uchun biz arxitektura jihatdan chiroyli kod yozishimiz kerak. Va bu ma'lumotlar bazasi bilan ishlash vazifalari uchun SQL yoki ORMning bir turi. Va bu ko'proq backend uchun amal qiladi.

Nima uchun Java-ni o'rganish va uni qanday samarali qilish kerak. Yandex hisoboti

Bor! Java yadrosi. Men bu erda Amerikani aniqlay olmayman - siz tilning o'zini bilishingiz kerak. Nimaga e'tibor berish kerak. Birinchidan, Java so'nggi yillarda juda ko'p versiyalarni chiqardi, ya'ni 2014-2015 yillarda ettinchi, keyin sakkizinchi, to'qqizinchi, o'ninchi, juda ko'p yangi versiyalar chiqdi va ularda juda ko'p yangi ajoyib narsalar kiritildi. , masalan, Java Stream API , lambda va boshqalar. Ishlab chiqarish kodida ishlatiladigan juda ajoyib, yangi, ajoyib narsalar, ular intervyularda nima haqida so'rashadi va siz bilishingiz kerak bo'lgan narsalar. Shuning uchun, siz Java-4 kutubxonasidagi javondan kitob olib, uni o'rganishingiz kerak emas. Bu bizning rejamiz: biz Java-8 yoki undan yuqori versiyasini o'rganamiz.

Biz Stream API, var va boshqalar kabi innovatsiyalarga katta e'tibor beramiz. Ular intervyu paytida so'raladi va ishlab chiqarishda doimiy ravishda qo'llaniladi. Ya'ni, Stream API looplarga qaraganda ancha sovuqroq, umuman olganda, juda ajoyib narsa. E'tibor berishga ishonch hosil qiling.

Va iteratorlar, istisnolar va boshqalar kabi har xil narsalar mavjud. O'zingiz kichik kod yozsangiz, siz uchun ahamiyatsiz bo'lib tuyuladigan narsalar. Sizga bu istisnolar kerak emas, baribir ular kimga kerak? Lekin ular, albatta, intervyularda so'raladi, ular ishlab chiqarishda sizga albatta foydali bo'ladi. Umuman olganda, siz istisnolar, iteratorlar va boshqa narsalarga e'tibor berishingiz kerak.

Nima uchun Java-ni o'rganish va uni qanday samarali qilish kerak. Yandex hisoboti

Ma'lumotlar tuzilmalari. Siz tuzilmalarsiz yurolmaysiz, lekin agar siz shunchaki to'plamlar, lug'atlar va varaqlar mavjudligini bilmasangiz, bu juda yaxshi bo'ladi. Shuningdek, tuzilmalarning turli xil amalga oshirilishi. Misol uchun, Java-dagi bir xil lug'atda HashMap va TreeMap kabi ko'plab ilovalar mavjud. Ular turli xil asimptotiklarga ega, ular ichida turlicha tuzilgan. Ular qanday farq qilishini va qaysi birini ishlatishni bilishingiz kerak.

Agar siz ushbu ma'lumotlar tuzilmalari qanday ishlashini bilsangiz, bu juda ajoyib bo'ladi. Ya'ni, ularning asimptotiklarini bilish oson emas - garov qancha ishlaydi, o'tish qancha vaqt ishlaydi, lekin strukturaning ichida qanday ishlaydi - masalan, HashMap-da chelak nima.

Bundan tashqari, daraxtlar va grafiklarga e'tibor berishga arziydi. Bu ishlab chiqarish kodida juda keng tarqalgan bo'lmagan narsalar, lekin ular intervyularda mashhur. Shunga ko'ra, siz daraxtlarni, kenglik va chuqurlikdagi grafiklarni kesib o'ta olishingiz kerak. Bularning barchasi oddiy algoritmlar.

Har qanday katta kodni, kompleksni, kutubxonalardan, ko'p toifali kodlarni yozishni boshlaganingizdan so'ng, tizimni qurmasdan va bog'liqliklarni hal qilmasdan siz uchun qiyin ekanligini tushunasiz. Bular birinchi navbatda Maven va Gradle. Ular sizning loyihangizga kutubxonalarni bir qatorda import qilish imkonini beradi. Ya'ni, siz bir qatorli xml yozasiz va loyihaga kutubxonalarni import qilasiz. Ajoyib tizimlar. Ular taxminan bir xil, bittadan foydalaning - Maven yoki Gradle.

Keyingi - versiyani boshqarish tizimi. Men Git-ni tavsiya qilaman, chunki u mashhur va ko'plab darsliklar mavjud. Deyarli hamma Git-dan foydalanadi, bu ajoyib narsa, siz usiz yashay olmaysiz.

Va qandaydir rivojlanish muhiti. Men IntelliJ Ide-ni tavsiya qilaman. Bu rivojlanish jarayonini sezilarli darajada tezlashtiradi, sizga juda ko'p yordam beradi, siz uchun barcha qozon kodini yozadi, umuman olganda, bu ajoyib.

Nima uchun Java-ni o'rganish va uni qanday samarali qilish kerak. Yandex hisoboti

Slayddan havolalar: SQLZOO, habrapost

SQL. Qo'llab-quvvatlovchilar haqida bir oz. Bu erda haqiqatan ham kulgili voqea bo'lgan. Ikkinchi amaliyot suhbatimdan ikki kun oldin HR qiz menga qo'ng'iroq qildi va ikki kundan keyin ular mendan SQL va HTTP haqida so'rashlarini aytdi, men buni o'rganishim kerakligini aytdi. Va men SQL yoki HTTP haqida deyarli hech narsa bilmasdim. Va men bu ajoyib saytni topdim - SQLZOO. Unda SQLni 12 soatda o'rgandim, demoqchimanki, SQL sintaksisi, SELECT so'rovlarini qanday yozish, JOIN va hokazo. Juda zo'r sayt, uni juda tavsiya qilaman. Darhaqiqat, 12 soat ichida men hozir bilganlarimning 90 foizini o'rgandim.

Bundan tashqari, ma'lumotlar bazasi arxitekturasini bilish juda yaxshi. Bu barcha turdagi kalitlar, indekslar, normalizatsiya. Habré-da bu haqda bir qator postlar mavjud.

Nima uchun Java-ni o'rganish va uni qanday samarali qilish kerak. Yandex hisoboti

Java-da, SQL-ga qo'shimcha ravishda, JPA kabi barcha turdagi ob'ektlar bilan bog'liq xaritalash tizimlari mavjud. Ba'zi kod bor. Birinchi usulda ba'zi SQL kodi mavjud - identifikator nomini SELECT FROM info.users WHERE ID IN userIds. Foydalanuvchilar ma'lumotlar bazasidan, jadvaldan ularning identifikatorlari va nomlari olinadi.

Keyinchalik, ob'ektni bazadan Java ob'ektiga aylantiradigan ma'lum bir xaritachi mavjud. Va quyida ushbu kodni amalda bajaradigan uchinchi usul mavjud. Bularning barchasi JPA yordamida quyida yozilgan bitta satr bilan almashtirilishi mumkin. Xuddi shu narsani bajaradi - All ByIdIn ni toping. Ya'ni, usul nomidan kelib chiqib, u siz uchun SQL so'rovini yaratadi.

Juda zo'r narsa. Men o'zim SQLni bilmaganimda JPA dan foydalanardim. Umuman olganda, e'tibor bering. Agar siz SQLni o'rganishga dangasa bo'lsangiz, bu falokat. Va umuman olganda, olov!

Nima uchun Java-ni o'rganish va uni qanday samarali qilish kerak. Yandex hisoboti

Bahor. Bahor ramkasi kabi narsa haqida kim eshitgan? Ko'ryapsizmi, sizdan qancha odam bor? Sababsiz emas. Bahor Java-ning har ikkinchi bo'sh ish o'rinlari talablariga kiritilgan. Busiz, katta rivojlanishning hech bir joyi yo'q. Bahor nima? Birinchidan, bu Dependency Injection ramkasi. Bu haqida ham aytib beradi keyingi ma'ruzachi. Qisqasi, bu sizga ba'zi sinflarning bog'liqliklarini boshqalarga import qilishni osonlashtiradigan narsadir. Ya'ni, bog'liqliklar haqidagi bilim soddalashtirilgan.

Spring Boot - bu sizning server ilovangizni bitta tugma bilan ishga tushirish imkonini beruvchi Spring qismidir. Siz THID-ga o'tasiz, bir nechta tugmachani bosing va endi sizda server ilovangiz ishga tushirildi va localhost 8080 da ishlaydi. Ya'ni, siz hali bitta kod satrini yozmadingiz, lekin u allaqachon ishlamoqda. Juda zo'r narsa. O'zingizdan biror narsa yozsangiz, olov!

Bahor juda katta ramka hisoblanadi. U nafaqat server ilovangizni tanlabgina qolmay, balki Dependency Injection-ni hal qiladi. Bu sizga ko'p narsalarni, shu jumladan REST API usullarini yaratishga imkon beradi. Ya'ni, siz qandaydir usulni yozdingiz va unga Get mapping annotatsiyasini biriktirdingiz. Va endi sizda localhost-da sizga Salom dunyo yozish usuli mavjud. Ikki qatorli kod va u ishlaydi. Ajoyib narsalar.

Bahor ham yozish testlarini osonlashtiradi. Katta rivojlanishda sinovsiz yo'l yo'q. Kodni sinab ko'rish kerak. Shu maqsadda Java-da ajoyib kutubxona JUnit 5. Va umuman JUnit, lekin oxirgi versiya beshinchi hisoblanadi. Sinov uchun hamma narsa, har xil da'volar va boshqa narsalar mavjud.

Va ajoyib Mockito ramkasi mavjud. Tasavvur qiling-a, sizda sinab ko'rmoqchi bo'lgan ba'zi funksiyalar mavjud. Funktsionallik juda ko'p narsalarni amalga oshiradi, jumladan, o'rtada, masalan, sizning identifikatoringiz bilan VKontakte-ga kiradi va ID-dan VKontakte foydalanuvchisining ismi va familiyasini oladi. Ehtimol, siz VKontakte-ni testlarga kiritmaysiz, bu g'alati. Ammo siz funksionallikni sinab ko'rishingiz kerak, shuning uchun siz Mockito-dan foydalanib, ushbu sinfni yaratdingiz, uni taqlid qildingiz.

Siz shuni aytasizki, bu sinfga falon va shunga o'xshash ID bilan so'rov kelganda, u qandaydir familiyani qaytaradi, masalan, Vasya Pupkin. Va u ishlaydi. Ya'ni, siz mok bir sinf uchun barcha funktsiyalarni sinab ko'rasiz. Juda zo'r narsa.

Nima uchun Java-ni o'rganish va uni qanday samarali qilish kerak. Yandex hisoboti

Slayddan havola

Dizayn naqshlari. Bu nima? Bular rivojlanishda yuzaga keladigan tipik muammolarni hal qilish uchun shablonlardir. Rivojlanish jarayonida bir xil yoki shunga o'xshash muammolar ko'pincha paydo bo'ladi, ularni qandaydir tarzda hal qilish juda yaxshi bo'lardi. Shu sababli, odamlar ushbu muammolarni qanday hal qilish bo'yicha eng yaxshi amaliyotlar, ma'lum shablonlarni ishlab chiqdilar.

Eng mashhur naqshlarga ega veb-sayt mavjud - refactoring.guru, siz uni o'qishingiz, qanday naqshlar borligini bilib olishingiz, bir qator nazariyani o'qishingiz mumkin. Muammo shundaki, u deyarli foydasiz. Aslida, amaliyotsiz naqshlar ayniqsa foydali emas.

Singletone yoki Builder kabi ba'zi naqshlar haqida eshitasiz. Bu so'zlarni kim eshitgan? Ko'p odamlar. O'zingizni amalga oshirishingiz mumkin bo'lgan oddiy naqshlar mavjud. Lekin naqshlarning aksariyati: strategiya, zavod, jabha - ularni qaerga qo'llash aniq emas.

Va amalda boshqa shaxsning kodida ushbu naqsh qo'llaniladigan joyni ko'rmaguningizcha, uni o'zingiz qo'llay olmaysiz. Shuning uchun, amaliyot naqshlar bilan juda muhimdir. Va faqat refactoring.guru saytida ular haqida o'qish juda foydali emas, lekin buni qilishga arziydi.

Nima uchun Java-ni o'rganish va uni qanday samarali qilish kerak. Yandex hisoboti

Shakllar nima uchun kerak? Aytaylik, sizda ma'lum bir foydalanuvchi sinfi bor. Uning identifikatori va nomi bor. Har bir foydalanuvchi ham Id, ham Ismga ega bo'lishi kerak. Yuqori chap tomonda sinf joylashgan.

Foydalanuvchini ishga tushirish usullari qanday? Ikkita variant mavjud - konstruktor yoki sozlashchi. Ikkala yondashuvning kamchiliklari qanday?

Konstruktor. yangi foydalanuvchi (7, "Bond"), yaxshi. Aytaylik, bizda User klassi yo'q, lekin yetti raqamli maydonga ega bo'lgan boshqa sinf mavjud. Sizda ketma-ket yetti raqamdan iborat konstruktor bo'ladi. Bu raqamlar nima ekanligi va ularning qaysi biri qaysi mulkka tegishli ekanligi aniq emas. Dizayner zo'r emas.

Ikkinchi variant - sozlagich. Siz aniq yozasiz: setId (7), setName ("Bond"). Qaysi mulk qaysi sohaga tegishli ekanligini tushunasiz. Ammo setterda muammo bor. Birinchidan, siz biror narsani belgilashni unutishingiz mumkin, ikkinchidan, ob'ektingiz o'zgaruvchan bo'lib chiqadi. Bu ish zarrachalari xavfsiz emas va kodning o'qilishini biroz pasaytiradi. Shuning uchun odamlar ajoyib naqshni o'ylab topishdi - Quruvchi.

Nima uchun Java-ni o'rganish va uni qanday samarali qilish kerak. Yandex hisoboti

Bu nima haqida? Keling, ikkala yondashuvning - sozlash va konstruktorning afzalliklarini bittasida birlashtirishga harakat qilaylik. Biz ma'lum bir ob'ektni - Builderni yaratamiz, unda Id va Name maydonlari ham bo'ladi, uning o'zi sozlagich asosida quriladi va barcha parametrlarga ega yangi Foydalanuvchini qaytaradigan Build usuliga ega bo'ladi. Biz o'zgarmas ob'ekt va setterni olamiz. Ajoyib!

Qanday muammolar bor? Mana bizda klassik quruvchi bor. Muammo shundaki, biz hali ham ba'zi sohalarda tekshirishni unutishimiz mumkin. Va agar biz identifikatorga tashrif buyurishni unutgan bo'lsak, bu holda Builder-da u nolga tenglashtiriladi, chunki int turi null bo'lmaydi. Va agar biz "Bond" nomini qo'ysak va ID ofisiga tashrif buyurishni unutsak, bizda "0" identifikatori va "Bond" nomi bilan yangi foydalanuvchi paydo bo'ladi. Salqin emas.

Keling, bu bilan kurashishga harakat qilaylik. Builder'da biz int ni int ga o'zgartiramiz, shunda u null bo'ladi. Endi hammasi ajoyib.

Nima uchun Java-ni o'rganish va uni qanday samarali qilish kerak. Yandex hisoboti

Agar biz “Bond” nomi bilan foydalanuvchi yaratishga harakat qilsak, uning identifikatorini qo'yishni unutib qo'ysak, biz null ko'rsatkich istisnosiga ega bo'lamiz, chunki ID null bo'lmaydi va Builderda null, xususan ko'rsatgich istisnosi mavjud.

Nima uchun Java-ni o'rganish va uni qanday samarali qilish kerak. Yandex hisoboti

Lekin biz hali ham nom qo'yishni unutishimiz mumkin, shuning uchun biz ob'ektni takrorlashni nullga o'rnatdik. Endi biz Builder-dan ob'ektimizni qurganimizda, u maydonning null bo'lmasligini tekshiradi. Va bu hammasi emas.

Keling, oxirgi misolni ko'rib chiqaylik. Bunday holda, agar biz ID ish vaqtiga qandaydir tarzda null qo'ysak, buni qilganingizni darhol bilish juda yaxshi bo'lardi va hozir xatoga yo'l qo'yganingiz ma'qul emas.

Nima uchun Java-ni o'rganish va uni qanday samarali qilish kerak. Yandex hisoboti

Siz xatoni foydalanuvchi yaratish vaqtida emas, balki ID ga null o'rnatganingizda yuborishingiz kerak. Shuning uchun, Builderda biz Integer sozlagichini int ga o'zgartiramiz va u darhol ular nullni chiqarib tashlaganiga qasam ichadi.

Qisqasi, nima gap? Oddiy Builder naqshlari mavjud, ammo uni amalga oshirishda ham ba'zi nozikliklar mavjud, shuning uchun naqshlarning turli xil ilovalarini ko'rib chiqish juda zo'r. Har bir naqshda o'nlab ilovalar mavjud. Bularning barchasi juda qiziq.

Nima uchun Java-ni o'rganish va uni qanday samarali qilish kerak. Yandex hisoboti

Ishlab chiqarish kodida Builder ni qanday yozamiz? Mana bizning foydalanuvchimiz. Biz unga Lombok kutubxonasidan Builder aylanishini biriktiramiz va uning o'zi biz uchun Builderni yaratadi. Ya'ni, biz hech qanday kod yozmaymiz, lekin Java allaqachon bu sinf Builderga ega deb o'ylaydi va biz uni shunday deb atashimiz mumkin.

Men allaqachon Java-da deyarli hamma narsa uchun kutubxonalar borligini aytdim, jumladan, Lombok kutubxonasi, bu sizga qozonxona yozishdan qochish imkonini beradi. Quruvchi, GET.

Nima uchun Java-ni o'rganish va uni qanday samarali qilish kerak. Yandex hisoboti

Naqshlar me'moriy bo'lishi mumkin - nafaqat bitta sinfga, balki butun tizimga tegishli. Tizim dizaynida shunday ajoyib tamoyil mavjud: Yagona javobgarlik printsipi. U nima haqida gapiryapti? Har bir sinf o'zining ba'zi funktsiyalari uchun javobgar bo'lishi kerakligi. Bunday holda, bizda foydalanuvchilar, JSON ob'ektlari bilan aloqa qiladigan Controller mavjud. JSON obyektlarini keyinchalik Java ilovasi ishlaydigan modellarga aylantiradigan Fasad mavjud. Ushbu modellar bilan ishlaydigan murakkab mantiqqa ega bo'lgan Xizmat mavjud. Ushbu modellarni ma'lumotlar bazasiga joylashtiradigan va ularni ma'lumotlar bazasidan oladigan Ma'lumotlarga kirish ob'ekti mavjud. Va ma'lumotlar bazasining o'zi mavjud. Boshqacha qilib aytadigan bo'lsak, hammasi bitta sinfda emas, lekin biz besh xil sinf yaratamiz va bu boshqa naqsh.

Nima uchun Java-ni o'rganish va uni qanday samarali qilish kerak. Yandex hisoboti

Java-ni ko'proq yoki kamroq o'rganganingizdan so'ng, ma'lumotlar bazasiga ega bo'lgan, boshqa APIlar bilan ishlaydigan va server ilovangizni REST API mijozlariga taqdim etadigan o'z loyihangizni yozish juda yaxshi. Bu sizning rezyumeingizga qo'shish uchun ajoyib narsa bo'lardi, bu sizning ta'limingiz uchun ajoyib yakun bo'ladi. Shu bilan siz borib ish topishingiz mumkin.

Nima uchun Java-ni o'rganish va uni qanday samarali qilish kerak. Yandex hisoboti

Mana mening server ilovamning namunasi. Ikkinchi kursda men yigitlar bilan kurs ishini yozdim. Ular tadbirlarni tashkil qilish uchun mobil ilova yozayotgan edi. U erda foydalanuvchilar VKontakte orqali tizimga kirishlari, xaritada nuqtalarni joylashtirishlari, tadbirlar yaratishlari, do'stlarini ularga taklif qilishlari, voqealar tasvirlarini saqlashlari va h.k.

Loyihada nima qildim? Spring Boot-da SQL-dan foydalanmasdan server dasturini yozgan. Men uni tanimadim, men JPA dan foydalanardim. Bu nima qilishi mumkin edi? OAuth-2 orqali VK-ga kiring. Foydalanuvchining tokenini oling, u bilan VK-ga o'ting, uning haqiqiy foydalanuvchi ekanligini tekshiring. VKontakte orqali foydalanuvchilar haqida ma'lumot oling. U JPA orqali ma'lumotlarni ma'lumotlar bazasida saqlashga muvaffaq bo'ldi. Rasmlar va boshqa fayllarni kompyuter xotirasiga mohirlik bilan saqlash va ularga havolalarni maʼlumotlar bazasida saqlash. O'sha paytda ma'lumotlar bazasida CLOB ob'ektlari borligini bilmasdim, shuning uchun men buni shunday qildim. Foydalanuvchilar, mijoz ilovalari uchun REST API mavjud edi. Va asosiy funksionallik uchun birlik testlari mavjud edi.

[…] Java tilini muvaffaqiyatli o'rganishimning kichik misoli. Universitetdagi birinchi kursimda menga C# tilidan dars berishdi va OOP dasturlash haqida tushuncha berishdi – sinflar, interfeyslar, abstraksiya nima va ular nima uchun kerak. Bu menga juda yordam berdi. Busiz Java-ni o'rganish juda qiyin, nima uchun darslar kerakligi aniq emas.

Nima uchun Java-ni o'rganish va uni qanday samarali qilish kerak. Yandex hisoboti

Universitetdagi ikkinchi kursimda ular yana Java yadrosini o'rgatdilar, lekin men bu bilan to'xtamadim, men o'zim Bahorni o'rganishga bordim va yuqorida aytib o'tganim o'z loyihamni yozdim. Va bularning barchasi bilan men Yandeksda amaliyotga bordim, suhbatdan o'tdim va Yandex.Marketga kirdim. U erda men Beru uchun backend yozdim, bu bizning bozorimiz va Yandex.Marketning o'zi.

Shundan so'ng, olti oy oldin men o'sha Marketdagi boshqa jamoaga o'tdim. Biz biznes hamkorlar uchun tahlil qilamiz. Biz analitik platformadamiz, orqa tomonda uchtamiz bor, shuning uchun men loyihaga juda katta ta'sir o'tkazaman. Bu juda qiziq, aslida. Ya'ni, biz aslida bozordagi ma'lumotlarni taqdim etamiz - savdolar qanday, qanday toifalarda, qanday modellarda, biznes sheriklari, yirik taniqli kompaniyalar uchun. Va biz faqat uchtamiz, biz bu kodni yozamiz va bu juda zo'r.

Rahmat! Foydali havolalar:
- "Java 8. Yangi boshlanuvchilar uchun qo'llanma".
- Ma'lumotlar tuzilmalari.
- SQLZOO.
- Ma'lumotlar bazasini normallashtirish.
- Dizayn naqshlari.
- Dizayn shablonlari.
- Toza kod.
- Samarali Java.

Manba: www.habr.com

a Izoh qo'shish