Ngano nga magkat-on sa Java ug kung giunsa kini mahimo nga epektibo. Yandex report

Unsa ang kalainan sa Java sa ubang mga sikat nga lengguwahe? Ngano nga ang Java ang una nga sinultian nga makat-unan? Maghimo ta og plano nga makatabang nimo sa pagkat-on sa Java gikan sa wala ug pinaagi sa paggamit sa mga kahanas sa programming sa ubang mga pinulongan. Atong ilista ang mga kalainan tali sa paghimo sa production code sa Java ug sa pagpalambo sa ubang mga pinulongan. Gibasa ni Mikhail Zatepyakin kini nga taho sa usa ka miting alang sa umaabot nga mga partisipante mga internship Yandex ug uban pang nagsugod nga mga developer - Java Junior meetup.


— Kumusta sa tanan, ang akong ngalan mao si Misha. Usa ako ka developer gikan sa Yandex.Market, ug karon isulti ko kanimo kung ngano nga magkat-on ka sa Java ug kung giunsa kini buhaton nga epektibo. Mahimong mangutana ka usa ka makatarunganon nga pangutana: ngano nga isulti ko kini nga istorya, ug dili usa ka kusgan nga developer nga adunay daghang tuig nga kasinatian? Ang tinuod mao nga ako mismo nagtuon sa Java bag-o lang, mga usa ug tunga ka tuig na ang milabay, mao nga nahinumdom gihapon ko kung unsa kini ug unsa ang mga lit-ag.

Usa ka tuig ang milabay nakakuha ako usa ka internship sa Yandex.Market. Gipalambo nako ang backend alang sa Beru, alang sa Market mismo, tingali gigamit nimo kini. Karon nagpadayon ko sa pagtrabaho didto, sa laing team. Naghimo kami usa ka analitikal nga plataporma alang sa Yandex.Market alang sa mga kauban sa negosyo.

Ngano nga magkat-on sa Java ug kung giunsa kini mahimo nga epektibo. Yandex report

Magsugod na ta. Ngano nga magkat-on sa Java gikan sa praktikal nga punto sa panglantaw? Ang tinuod mao nga ang Java usa ka sikat kaayo nga programming language. Kini adunay dako kaayo nga komunidad.

Pananglitan, adunay ingon nga TIOBE index, usa ka popular nga indeks sa pagkapopular sa mga programming language, ug ang Java nag-una didto. Usab, sa mga site sa trabaho, tingali makamatikod ka nga kadaghanan sa mga bakante mahitungod sa Java, nga mao, pinaagi sa pagpalambo sa Java, kanunay ka makakita og trabaho.

Tungod kay dako kaayo ang komunidad, ang bisan unsang pangutana nga naa nimo makit-an ang tubag sa pipila nga Stack Overflow o ubang mga site. Ingon usab, kung nag-develop sa Java, nagsulat ka gyud sa code sa JVM, aron dali ka makabalhin sa Kotlin, Scala ug uban pang mga sinultian nga naggamit sa JVM.

Ngano nga magkat-on sa Java ug kung giunsa kini mahimo nga epektibo. Yandex report

Unsa ang maayo bahin sa Java gikan sa usa ka punto sa panglantaw? Adunay lain-laing mga programming language. Gisulbad nila ang lainlaing mga problema, nahibal-an nimo kana. Pananglitan, ang Python maayo alang sa pagsulat sa usa ka linya nga mga script aron masulbad ang dali nga mga problema.

Sa dugang nga bahin, mahimo nimong hingpit nga makontrol ang executable code. Pananglitan, kami adunay mga sakyanan, Yandex driverless nga mga sakyanan, ang ilang code gisulat sa mga plus. Ngano man? Ang Java adunay ingon nga butang - Garbage Collector. Gilimpyohan niini ang RAM sa wala kinahanglana nga mga butang. Kini nga butang nagsugod sa spontaneously ug mohunong-sa-kalibutan, nga mao, kini mohunong sa uban nga mga programa ug moadto sa pag-ihap sa mga butang, tin-aw nga panumduman sa mga butang. Kung ang ingon nga butang molihok sa usa ka drone, dili kini cool. Ang imong drone magmaneho nga diretso, niining higayona limpyohan ang panumduman niini ug dili na tan-awon ang dalan. Busa, ang drone gisulat sa mga pros.

Ngano nga magkat-on sa Java ug kung giunsa kini mahimo nga epektibo. Yandex report

Unsang mga problema ang gisulbad sa Java? Kini sa panguna usa ka pinulongan alang sa pagpalambo sa dagkong mga programa nga gisulat sulod sa mga katuigan, sa dosena o gatusan ka mga tawo. Sa partikular, daghan sa backend sa Yandex.Market gisulat sa Java. Kami adunay usa ka gipang-apod-apod nga grupo sa daghang mga lungsod, napulo ka mga tawo sa matag usa. Ug ang code sayon ​​​​nga mapadayon, kini gisuportahan sulod sa napulo ka tuig o labaw pa, ug sa samang higayon ang mga bag-ong tawo mosulod ug makasabut niini nga code.

Unsa nga mga kinaiya ang kinahanglan nga adunay usa ka lengguwahe aron ang kodigo niini dali nga masuportahan ug aron kini dali nga maugmad sa dagkong mga grupo. Una sa tanan, kini kinahanglan nga mabasa nga code, ug kini kinahanglan nga sayon ​​sa pagpatuman sa komplikado nga mga solusyon sa arkitektura. Nga mao, kini kinahanglan nga sayon ​​sa pagsulat sa taas nga lebel abstractions, ug uban pa. Tanan kini mao ang Java naghatag kanato uban sa. Kini usa ka object-oriented nga pinulongan. Sayon ra kaayo ang pagpatuman sa taas nga lebel nga abstraction ug komplikado nga mga arkitektura.

Adunay usab daghang mga frameworks ug librarya alang sa Java, tungod kay ang pinulongan labaw pa sa 15 ka tuig ang edad. Niining panahona, ang tanan nga mahimong isulat gisulat niini, mao nga adunay daghang mga librarya alang sa tanan nga kinahanglan nimo.

Ngano nga magkat-on sa Java ug kung giunsa kini mahimo nga epektibo. Yandex report

Unsang mga batakang kahanas, sa akong opinyon, ang kinahanglan adunay usa ka magdudula nga JA? Una sa tanan, kini mao ang kahibalo sa Java core nga pinulongan. Sunod mao ang usa ka matang sa Dependency Injection framework. Ang sunod nga mamumulong, si Kirill, maghisgot bahin niini nga mas bug-os. Dili ko lalim. Sunod mao ang arkitektura ug disenyo nga mga sumbanan. Kinahanglan nga makahimo kami sa pagsulat sa matahum nga code sa arkitektura aron makasulat sa daghang mga aplikasyon. Ug kini usa ka matang sa SQL o ORM alang sa mga buluhaton sa pagtrabaho kauban ang database. Ug kini mas magamit sa backend.

Ngano nga magkat-on sa Java ug kung giunsa kini mahimo nga epektibo. Yandex report

Lakaw! Java core. Dili gyud nako madiskobrehan ang America dinhi-kinahanglan nimo mahibal-an ang pinulongan mismo. Ang angay nimong hatagan ug pagtagad. Una, ang Java nagpagawas sa daghang mga bersyon sa bag-ohay nga mga tuig, nga mao, sa 2014-2015 ang ikapito nga gipagawas, unya ang ikawalo, ikasiyam, ikanapulo, daghang mga bag-ong bersyon, ug daghang bag-ong cool nga mga butang ang gipaila kanila. , pananglitan, ang Java Stream API , lambda, ug uban pa. Nindot kaayo, presko, bugnaw nga mga butang nga gigamit sa production code, unsay ilang gipangutana sa mga interbyu ug nga kinahanglan nimong masayran. Busa, dili ka kinahanglan nga magkuha usa ka libro gikan sa estante sa librarya sa Java-4 ug tun-i kini. Kini ang among plano: nakakat-on kami sa Java-8 o mas taas pa.

Gihatagan namon pag-ayo ang mga inobasyon sama sa Stream API, var, ug uban pa. Gipangutana sila sa mga interbyu ug kanunay nga gigamit sa produksiyon. Kana mao, ang Stream API labi ka bugnaw kaysa mga loop, sa kinatibuk-an, usa ka cool nga butang. Siguroha ang pagtagad.

Ug adunay tanan nga mga matang sa mga butang sama sa iterators, Exceptions ug uban pa. Mga butang nga daw dili importante kanimo basta ikaw mismo ang magsulat ug gamay nga code. Dili nimo kinahanglan kini nga mga Eksepsiyon, kinsa pa ang nanginahanglan niini? Apan pangutan-on gyud sila sa mga interbyu, siguradong mapuslanon kini kanimo sa produksiyon. Sa kinatibuk-an, kinahanglan nimong hatagan ug pagtagad ang mga Exceptions, iterators ug uban pang mga butang.

Ngano nga magkat-on sa Java ug kung giunsa kini mahimo nga epektibo. Yandex report

Mga istruktura sa datos. Dili ka makaadto nga wala’y mga istruktura, apan kini maayo kung dili nimo nahibal-an nga adunay mga set, diksyonaryo, ug mga sheet. Ug lainlain usab nga pagpatuman sa mga istruktura. Pananglitan, ang parehas nga diksyonaryo sa Java adunay daghang mga pagpatuman, lakip ang HashMap ug TreeMap. Sila adunay lain-laing mga asymptotics, sila gambalay lahi sa sulod. Kinahanglan nimo mahibal-an kung giunsa kini magkalainlain ug kanus-a gamiton kung hain.

Mahimo usab kini nga cool kung nahibal-an nimo kung giunsa kini nga mga istruktura sa datos nagtrabaho sa sulod. Kana mao, dili sayon ​​​​nga mahibal-an ang ilang mga asymptotics - kung unsa kadaghan ang pusta, kung unsa kadugay ang pagpasa, apan kung giunsa ang istruktura sa sulod - pananglitan, kung unsa ang usa ka balde sa HashMap.

Angayan usab nga hatagan pagtagad ang mga kahoy ug mga graph. Kini ang mga butang nga dili kaayo kasagaran sa code sa produksiyon, apan kini popular sa mga interbyu. Tungod niini, kinahanglan nimo nga makatabok sa mga kahoy, mga graph sa gilapdon ug giladmon. Kining tanan yano nga mga algorithm.

Sa diha nga magsugod ka sa pagsulat sa bisan unsang dako nga code, komplikado, gamit ang mga librarya, multi-class nga code, imong maamgohan nga kini lisud alang kanimo nga walay mga sistema sa pagtukod ug pagsulbad sa mga dependency. Kini ang panguna nga Maven ug Gradle. Gitugotan ka nila sa pag-import sa mga librarya sa imong proyekto sa usa ka linya. Kana mao, nagsulat ka usa ka linya nga xml ug nag-import sa mga librarya sa proyekto. Nindot nga mga sistema. Parehas ra sila, gamita ang usa - Maven o Gradle.

Sunod - usa ka matang sa sistema sa pagkontrol sa bersyon. Girekomenda ko ang Git tungod kay sikat kini ug adunay daghang mga tutorial. Hapit tanan naggamit sa Git, kini usa ka cool nga butang, dili ka mabuhi kung wala kini.

Ug usa ka matang sa kalamboan nga palibot. Girekomenda ko ang IntelliJ Idea. Gipadali niini pag-ayo ang proseso sa pag-uswag, nakatabang kaayo kanimo, nagsulat sa tanan nga boilerplate code alang kanimo, sa kinatibuk-an, kini cool.

Ngano nga magkat-on sa Java ug kung giunsa kini mahimo nga epektibo. Yandex report

Mga link gikan sa slide: SQLZOO, habrapost

SQL. Usa ka gamay bahin sa mga backenders. Adunay tinuod nga usa ka kataw-anan nga kaso dinhi. Duha ka adlaw sa wala pa ang akong ikaduhang internship nga interbyu, usa ka HR nga babaye ang mitawag kanako ug miingon nga sa duha ka adlaw sila mangutana kanako mahitungod sa SQL ug HTTP, kinahanglan nako nga makat-on niini. Ug halos wala koy nahibal-an bahin sa SQL o HTTP. Ug nakit-an nako kining cool nga site - SQLZOO. Nakat-on ko sa SQL niini sulod sa 12 ka oras, akong gipasabot, SQL syntax, unsaon pagsulat SELECT query, JOIN, ug uban pa. Nindot kaayo nga site, girekomendar nako kini. Sa tinuud, sa 12 ka oras nahibal-an nako ang 90% sa akong nahibal-an karon.

Ug maayo usab nga mahibal-an ang arkitektura sa database. Kini ang tanan nga mga matang sa mga yawe, indeks, normalisasyon. Adunay usa ka serye sa mga post bahin niini sa Habré.

Ngano nga magkat-on sa Java ug kung giunsa kini mahimo nga epektibo. Yandex report

Sa Java, dugang sa SQL, adunay tanan nga mga matang sa Object-relational mapping system sama sa JPA. Adunay usa ka code. Sa unang pamaagi adunay pipila ka SQL code - SELECT id name FROM info.users WHERE id IN userIds. Gikan sa database sa mga tiggamit, gikan sa lamesa, nakuha ang ilang mga ID ug ngalan.

Sunod, adunay usa ka piho nga mapper nga naghimo sa usa ka butang gikan sa base ngadto sa usa ka butang sa Java. Ug adunay usa ka ikatulo nga pamaagi sa ubos nga aktwal nga nagpatuman niini nga code. Kining tanan mahimong mapulihan gamit ang JPA sa usa ka linya, nga nasulat sa ubos. Gihimo niini ang parehas nga butang - pangitaa ang Tanan nga ByIdIn. Kana mao, base sa ngalan sa pamaagi, nagmugna kini usa ka pangutana sa SQL alang kanimo.

Nindot kaayo nga butang. Ako mismo, sa wala pa ko kahibalo sa SQL, migamit ug JPA. Sa kinatibuk-an, pagtagad. Kung tapolan ka kaayo sa pagkat-on sa SQL, kini usa ka katalagman. Ug, sa kinatibuk-an, kalayo!

Ngano nga magkat-on sa Java ug kung giunsa kini mahimo nga epektibo. Yandex report

Tingpamulak. Kinsa ang nakadungog sa usa ka butang sama sa Spring framework? Nakita ba nimo kung pila nimo? Dili sa walay rason. Ang tingpamulak gilakip sa mga kinahanglanon sa matag ikaduha nga bakante sa backend sa Java. Kung wala kini, wala gyud sa usa ka dako nga kalamboan. Unsa ang Spring? Una sa tanan, kini usa ka balangkas sa Dependency Injection. Mahitungod usab niini mosulti sunod nga mamumulong. Apan sa laktud, kini usa ka butang nga nagtugot kanimo nga mapadali ang pag-import sa mga dependency sa pipila nga mga klase ngadto sa uban. Sa ato pa, ang kahibalo sa mga dependency gipasimple.

Ang Spring Boot usa ka piraso sa Spring nga nagtugot kanimo sa pagpadagan sa imong aplikasyon sa server gamit ang usa ka buton. Moadto ka sa THID, pindota ang pipila ka mga buton, ug karon naa na nimo ang imong aplikasyon sa server ug nagdagan sa localhost 8080. Kana mao, wala ka pa makasulat og usa ka linya sa code, apan kini nagtrabaho na. Nindot kaayo nga butang. Kung nagsulat ka sa imong kaugalingon, sunog!

Ang tingpamulak usa ka dako kaayo nga balangkas. Dili lamang kini mokuha sa imong aplikasyon sa server ug masulbad ang Dependency Injection. Gitugotan ka niini nga buhaton ang daghang mga butang, lakip ang paghimo sa mga pamaagi sa REST API. Kana mao, gisulat nimo ang pipila ka pamaagi ug gilakip ang Get mapping annotation niini. Ug karon aduna ka nay pamaagi sa localhost nga nagsulat Hello world kanimo. Duha ka linya sa code ug kini molihok. Cool nga butang.

Gipadali usab sa tingpamulak ang mga pagsulay sa pagsulat. Walay paagi nga walay pagsulay sa dako nga kalamboan. Kinahanglang sulayan ang code. Alang niini nga katuyoan, ang Java adunay usa ka cool nga librarya JUnit 5. Ug JUnit sa kinatibuk-an, apan ang pinakabag-o nga bersyon mao ang ikalima. Adunay tanan alang sa pagsulay, tanan nga mga matang sa pagpahayag ug uban pang mga butang.

Ug adunay usa ka makalilisang nga balangkas sa Mockito. Hunahunaa nga ikaw adunay pipila ka gamit nga gusto nimong sulayan. Ang pag-andar naghimo sa daghang mga butang, lakip na, sa usa ka dapit sa tunga-tunga, kini nag-log in sa VKontakte gamit ang imong ID, pananglitan, ug nakadawat sa una ug apelyido sa VKontakte user gikan sa ID. Tingali dili nimo iapil ang VKontakte sa mga pagsulay, kana katingad-an. Apan kinahanglan nimo nga sulayan ang pagpaandar, mao nga imong gihimo kini nga klase, gamit ang Mockito, mok kini, gisundog kini.

Imong isulti nga kung ang usa ka hangyo moabut sa kini nga klase nga adunay usa ka ID nga ingon ug ingon niana, ibalik ang pila ka apelyido, pananglitan, Vasya Pupkin. Ug kini molihok. Kana mao, imong sulayan ang tanan nga gamit para sa mok sa usa ka klase. Nindot kaayo nga butang.

Ngano nga magkat-on sa Java ug kung giunsa kini mahimo nga epektibo. Yandex report

Link gikan sa slide

Mga sumbanan sa disenyo. Unsa ni? Kini ang mga templates alang sa pagsulbad sa kasagarang mga problema nga motumaw sa kalamboan. Sa pag-uswag, ang parehas o parehas nga mga problema kanunay nga motumaw nga maayo nga sulbaron sa usa ka paagi nga maayo. Busa, ang mga tawo miabut uban sa labing maayo nga mga buhat, pipila ka mga templates, sa unsa nga paagi sa pagsulbad niini nga mga problema.

Adunay usa ka website nga adunay labing inila nga mga sumbanan - refactoring.guru, mahimo nimong basahon kini, hibal-i kung unsang mga sumbanan ang naa, basaha ang usa ka hugpong sa teorya. Ang problema kay halos walay pulos. Sa pagkatinuod, ang mga sumbanan nga walay praktis dili ilabinang mapuslanon.

Makadungog ka bahin sa pipila ka mga pattern sama sa Singletone o Builder. Kinsa ang nakadungog niini nga mga pulong? Daghang tawo. Adunay ingon ka yano nga mga sumbanan nga mahimo nimong ipatuman sa imong kaugalingon. Apan kadaghanan sa mga sumbanan: estratehiya, pabrika, facade - dili klaro kung asa kini ipadapat.

Ug hangtod nga makita nimo sa praktis sa code sa ubang tawo ang usa ka lugar diin kini nga sumbanan gipadapat, dili nimo kini magamit sa imong kaugalingon. Busa, ang pagpraktis hinungdanon kaayo sa mga sumbanan. Ug ang pagbasa lang bahin kanila sa refactoring.guru dili kaayo makatabang, apan siguradong takus kini buhaton.

Ngano nga magkat-on sa Java ug kung giunsa kini mahimo nga epektibo. Yandex report

Nganong gikinahanglan ang mga sumbanan? Ingnon ta nga ikaw adunay usa ka klase sa Gumagamit. Kini adunay usa ka Id ug usa ka Ngalan. Ang matag Gumagamit kinahanglan adunay usa ka Id ug usa ka Ngalan. Ibabaw sa wala mao ang classroom.

Unsa ang mga paagi sa pagsugod sa User? Adunay duha ka kapilian - bisan usa ka tigtukod o usa ka setter. Unsa ang mga disbentaha sa duha nga mga pamaagi?

Magtutukod. bag-ong Gumagamit (7, "Bond"), okay. Karon ingnon ta nga wala kami usa ka klase sa Gumagamit, apan usa pa, nga adunay pito ka mga natad sa numero. Ikaw adunay usa ka constructor nga adunay pito ka sunod-sunod nga mga numero. Dili klaro kung unsa kini nga mga numero ug kung kinsa kanila ang nahisakop sa unsang kabtangan. Dili maayo ang tigdesinyo.

Ang ikaduha nga kapilian mao ang setter. Klaro nimong gisulat: setId(7), setName("Bond"). Nasabtan nimo kung unsang kabtangan ang nahisakop sa unsang natad. Pero naay problema ang setter. Una, mahimo nimong kalimtan ang pag-assign sa usa ka butang, ug ikaduha, ang imong butang mahimong mausab. Dili kini luwas nga hilo ug gamay ra ang pagkunhod sa pagkabasa sa code. Mao nga ang mga tawo adunay usa ka cool nga sumbanan - Magtutukod.

Ngano nga magkat-on sa Java ug kung giunsa kini mahimo nga epektibo. Yandex report

Mahitungod sa unsa kini? Atong sulayan ang paghiusa sa mga bentaha sa duha nga mga pamaagi-setter ug constructor-sa usa. Naghimo kami usa ka piho nga butang, Magtutukod, nga adunay usab mga natad sa Id ug Ngalan, nga mismo pagatukuron base sa setter, ug adunay usa ka pamaagi sa Pagtukod nga magbalik kanimo usa ka bag-ong Gumagamit sa tanan nga mga parameter. Nakakuha kami usa ka dili mausab nga butang ug usa ka setter. Bugnaw!

Unsa ang mga problema? Ania kami adunay klasiko nga Magtutukod. Ang problema kay makalimot gihapon ta sa pagsusi sa pipila ka field. Ug kung nakalimot kami sa pagbisita sa ID, sa kini nga kaso sa Builder kini gisugdan sa zero, tungod kay ang int type dili nullable. Ug kung atong himoon ang Ngalan nga “Bond” ug malimot sa pagbisita sa ID office, aduna kitay bag-ong User nga adunay id “0” ug ang ngalan nga “Bond”. Dili cool.

Atong sulayan nga awayon kini. Sa Builder usbon nato ang int ngadto sa int aron kini mahimong nullable. Karon ang tanan maayo na.

Ngano nga magkat-on sa Java ug kung giunsa kini mahimo nga epektibo. Yandex report

Kon kita mosulay sa paghimo sa usa ka User uban sa ngalan "Bond", nakalimot sa pagbutang sa iyang ID, kita makakuha og usa ka null pointer exception, tungod kay ang ID mao ang dili nullable, ug ang Builder adunay usa ka null, ilabi pointer exception.

Ngano nga magkat-on sa Java ug kung giunsa kini mahimo nga epektibo. Yandex report

Apan makalimot gihapon kita sa pagbutang og ngalan, mao nga atong gibutang ang object replay sa null. Karon, kung atong tukuron ang atong butang gikan sa Builder, kini nagsusi nga ang field dili nullable. Ug dili lang kana.

Atong tan-awon ang kataposang pananglitan. Sa kini nga kaso, kung sa usa ka paagi gibutang namon ang null sa ID runtime, maayo nga mahibal-an dayon nga gibuhat nimo kini ug dili maayo nga nasayop ka karon.

Ngano nga magkat-on sa Java ug kung giunsa kini mahimo nga epektibo. Yandex report

Kinahanglan nimo nga ihulog ang usa ka sayup dili sa higayon sa paghimo sa Gumagamit, apan kung imong gibutang ang null sa ID. Busa, sa Builder atong usbon ang setter Integer ngadto sa int, ug siya diha-diha dayon manumpa nga ilang gilabay null.

Sa laktod, unsa ang punto? Adunay usa ka yano nga sumbanan sa Magtutukod, apan bisan ang pagpatuman niini adunay pipila ka mga subtleties, mao nga cool kaayo tan-awon ang lainlaing mga pagpatuman sa mga sumbanan. Ang matag sumbanan adunay daghang mga pagpatuman. Kining tanan makaiikag kaayo.

Ngano nga magkat-on sa Java ug kung giunsa kini mahimo nga epektibo. Yandex report

Giunsa naton pagsulat ang Magtutukod sa code sa produksiyon? Ania ang among Gumagamit. Gilakip namo ang rotation sa Builder gikan sa library sa Lombok ngadto niini, ug kini mismo ang nagmugna og Builder para kanamo. Kana mao, wala kami magsulat sa bisan unsa nga code, apan ang Java naghunahuna na nga kini nga klase adunay usa ka Magtutukod, ug mahimo natong tawgon kini nga ingon niini.

Nakaingon na ko nga ang Java adunay mga librarya sa halos tanan, lakip ang Lombok, usa ka cool nga librarya nga nagtugot kanimo sa paglikay sa pagsulat sa boilerplate. Magtutukod, GET.

Ngano nga magkat-on sa Java ug kung giunsa kini mahimo nga epektibo. Yandex report

Ang mga sumbanan mahimong arkitektura - nga may kalabutan dili lamang sa usa ka klase, apan sa sistema sa kinatibuk-an. Adunay usa ka cool nga prinsipyo sa disenyo sa sistema: Usa ka Prinsipyo sa Responsibilidad. Unsa ang iyang gisulti? Ang kamatuoran nga ang matag klase kinahanglan nga responsable sa pipila sa ilang kaugalingon nga pagpaandar. Sa kini nga kaso, kami adunay usa ka Controller nga nakigsulti sa mga tiggamit, mga butang nga JSON. Adunay Facade, nga nag-convert sa mga butang sa JSON ngadto sa mga modelo nga magamit sa Java nga aplikasyon. Adunay usa ka Serbisyo nga adunay komplikado nga lohika nga magamit sa kini nga mga modelo. Adunay usa ka Data Access Object nga nagbutang niini nga mga modelo sa database ug gikuha kini gikan sa database. Ug anaa ang database mismo. Sa laing pagkasulti, dili kini tanan sa usa ka klase, apan naghimo kami og lima ka lain-laing mga klase, ug kana ang lain nga sumbanan.

Ngano nga magkat-on sa Java ug kung giunsa kini mahimo nga epektibo. Yandex report

Sa higayon nga daghan ka na o dili kaayo nakakat-on sa Java, maayo ang pagsulat sa imong kaugalingon nga proyekto nga adunay database, pagtrabaho sa ubang mga API, ug ibutyag ang imong aplikasyon sa server sa mga kliyente sa REST API. Kini usa ka maayong butang nga idugang sa imong resume, kini usa ka cool nga katapusan sa imong edukasyon. Uban niini mahimo kang moadto ug makakuha og trabaho.

Ngano nga magkat-on sa Java ug kung giunsa kini mahimo nga epektibo. Yandex report

Ania ang usa ka pananglitan sa akong aplikasyon sa server. Sa akong ikaduhang tuig, nagsulat ko og term paper kauban ang mga lalaki. Nagsulat sila usa ka mobile application alang sa pag-organisar sa mga panghitabo. Didto, ang mga tiggamit mahimong mag-log in pinaagi sa VKontakte, ibutang ang mga punto sa mapa, paghimo og mga panghitabo, pagdapit sa ilang mga higala ngadto kanila, pagluwas sa mga hulagway sa mga panghitabo, ug uban pa.

Unsa ang akong gibuhat sa proyekto? Nagsulat usa ka aplikasyon sa server sa Spring Boot nga wala gigamit ang SQL. Wala ko kaila niya, JPA akong gigamit. Unsa may mahimo niini? Log in sa VK pinaagi sa OAuth-2. Kuhaa ang token sa tiggamit, adto sa VK uban niini, susiha nga kini tinuod nga tiggamit. Pagdawat kasayuran bahin sa mga tiggamit pinaagi sa VKontakte. Nakatipig kini sa impormasyon sa usa ka database, pinaagi usab sa JPA. Hanas nga i-save ang mga litrato ug uban pang mga file sa memorya sa kompyuter, ug i-save ang mga link niini sa database. Niadtong panahona wala ko kabalo nga naay CLOB objects sa database, mao nga gibuhat nako ni nga paagi. Adunay usa ka REST API alang sa mga tiggamit, mga aplikasyon sa kliyente. Ug adunay mga pagsulay sa yunit alang sa sukaranan nga pagpaandar.

[…] Usa ka gamay nga ehemplo sa akong malampuson nga pagkat-on sa Java. Sa akong unang tuig sa unibersidad, gitudloan ko og C# ug gihatagan og pagsabot sa OOP programming - unsa nga mga klase, interface, abstraction, ug nganong gikinahanglan kini. Nakatabang ni kaayo nako. Kung wala kini, lisud ang pagkat-on sa Java; dili klaro kung ngano nga kinahanglan ang mga klase.

Ngano nga magkat-on sa Java ug kung giunsa kini mahimo nga epektibo. Yandex report

Sa akong ikaduhang tuig sa unibersidad, gitudloan na usab nila ang Java core, apan wala ako mohunong didto, miadto ako sa pagtuon sa Spring sa akong kaugalingon ug nagsulat sa usa ka kurso nga papel, ang akong proyekto, nga akong gihisgutan sa ibabaw. Ug uban niining tanan, miadto ako sa internship sa Yandex, nakapasar sa usa ka interbyu, ug misulod sa Yandex.Market. Didto akong gisulat ang backend alang sa Beru, kini ang among merkado, ug alang sa Yandex.Market mismo.

Human niadto, unom ka bulan ang milabay, mibalhin ko sa laing team sulod sa samang Market. Naghimo kami mga analytics alang sa mga kauban sa negosyo. Anaa kami sa analytical nga plataporma, tulo kami sa backend, mao nga ako adunay dako kaayo nga bahin sa impluwensya sa proyekto. Makapainteres kaayo, sa tinuod. Sa ato pa, naghatag gyud kami mga datos sa merkado - kung unsa ang mga baligya, sa unsang mga kategorya, sa unsang mga modelo, alang sa mga kauban sa negosyo, dagkong mga inila nga kompanya. Ug adunay tulo ra kanamo, among gisulat kini nga code, ug kini cool kaayo.

Salamat! Mapuslanon nga mga link:
- "Java 8. Giya sa Nagsugod".
- Mga Istruktura sa Data.
- SQLZOO.
- Pag-normalize sa database.
- Mga Sumbanan sa Disenyo.
- Mga Sumbanan sa Laraw.
- Limpyo nga Code.
- Epektibo nga Java.

Source: www.habr.com

Idugang sa usa ka comment