Poukisa aprann Java ak kijan pou fè li efektivman. rapò Yandex

Ki jan Java diferan de lòt lang popilè? Poukisa Java ta dwe premye lang pou aprann? Ann kreye yon plan ki pral ede w aprann Java tou de nan grafouyen ak nan aplike ladrès pwogramasyon nan lòt lang. Ann fè lis diferans ki genyen ant kreye kòd pwodiksyon an Java ak devlope nan lòt lang. Mikhail Zatepyakin li rapò sa a nan yon reyinyon pou pwochen patisipan yo estaj Yandex ak lòt devlopè kòmansman - rankont Java Junior.


— Bonjou tout moun, mwen rele Misha. Mwen se yon pwomotè nan Yandex.Market, e jodi a mwen pral di w poukisa yo aprann Java ak ki jan fè li efektivman. Ou ka mande yon kesyon rezonab: poukisa mwen pral rakonte istwa sa a, epi yo pa kèk pwomotè fò ak anpil ane eksperyans? Reyalite a se ke mwen menm mwen te etidye Java dènyèman, apeprè yon ane ak yon mwatye de sa, kidonk mwen toujou sonje ki sa li te tankou ak ki pyèj ki genyen.

Yon ane de sa mwen te resevwa yon estaj nan Yandex.Market. Mwen devlope backend la pou Beru, pou mache a li menm, pwobableman ou te itilize li. Kounye a mwen kontinye travay la, nan yon ekip diferan. Nou kreye yon platfòm analyse pou Yandex.Market pou patnè biznis.

Poukisa aprann Java ak kijan pou fè li efektivman. rapò Yandex

An n kòmanse. Poukisa aprann Java nan yon pwen de vi pratik? Reyalite a se ke Java se yon lang pwogramasyon trè popilè. Li gen yon kominote trè gwo.

Pou egzanp, gen yon endèks TIOBE konsa, yon endèks popilè nan popilarite nan lang pwogramasyon, ak Java ran premye la. Epitou, sou sit travay, ou pral pwobableman remake ke pi fò nan pòs ki vid yo se sou Java, se sa ki, pa devlope nan Java, ou ka toujou jwenn yon travay.

Piske kominote a gwo anpil, nenpòt kesyon ou genyen ap jwenn yon repons sou kèk Stack Overflow oswa lòt sit. Epitou, lè w ap devlope nan Java, ou aktyèlman ekri kòd sou JVM a, kidonk ou ka fasilman chanje nan Kotlin, Scala ak lòt lang ki sèvi ak JVM la.

Poukisa aprann Java ak kijan pou fè li efektivman. rapò Yandex

Ki sa ki bon sou Java nan yon pwen de vi ideolojik? Gen diferan langaj pwogramasyon. Yo rezoud pwoblèm diferan, ou konnen sa. Pou egzanp, Python se gwo pou ekri script yon sèl liy pou rezoud pwoblèm rapid.

Sou bò a plis, ou ka konplètman kontwole kòd la ègzèkutabl. Pou egzanp, nou gen machin, Yandex machin san chofè, kòd yo ekri nan plus. Poukisa? Java gen yon bagay konsa - Pèseptè fatra. Li efase RAM nan objè ki pa nesesè yo. Bagay sa a kòmanse espontaneman ak fè stop-the-mond, se sa ki, li sispann rès la nan pwogram nan epi li ale nan konte objè, klè memwa nan objè yo. Si yon bagay konsa travay nan yon abèy, li pa fre. Abèy ou a pral kondwi tou dwat, nan moman sa a efase memwa li epi li pa gade wout la ditou. Se poutèt sa, abèy la ekri sou avantaj yo.

Poukisa aprann Java ak kijan pou fè li efektivman. rapò Yandex

Ki pwoblèm Java rezoud? Li se prensipalman yon lang pou devlope gwo pwogram ki ekri sou plizyè ane, pa plizyè douzèn oswa dè santèn de moun. An patikilye, yon anpil nan backend nan Yandex.Market ekri nan Java. Nou gen yon ekip distribye nan plizyè vil, dis moun nan chak. Ak kòd la fasil pou kenbe, li te sipòte pou dis ane oswa plis, ak an menm tan an nouvo moun antre epi konprann kòd sa a.

Ki karakteristik yon lang ta dwe genyen pou kòd ki nan li a fasil sipòte epi pou li ka fasil devlope nan gwo ekip. Premye a tout, li ta dwe kòd lizib, epi li ta dwe fasil aplike solisyon konplèks achitekti. Sa vle di, li ta dwe fasil pou ekri abstraksyon wo nivo, elatriye. Tout bagay sa yo se sa Java bay nou. Sa a se yon lang ki oryante objè. Li vrèman fasil pou aplike abstraksyon wo nivo ak achitekti konplèks.

Genyen tou yon anpil nan kad ak bibliyotèk pou Java, paske lang nan gen plis pase 15 ane fin vye granmoun. Pandan tan sa a, tout bagay ki ta ka ekri yo te ekri sou li, kidonk gen tòn bibliyotèk pou tout bagay ou ta ka bezwen.

Poukisa aprann Java ak kijan pou fè li efektivman. rapò Yandex

Ki ladrès debaz, nan opinyon mwen, ta dwe yon kòmansman jwè JA genyen? Premye a tout, sa a se konesans nan lang debaz Java a. Next se kèk kalite fondasyon Piki Depandans. Pwochen oratè a, Kirill, pral pale sou sa a pi byen. Mwen pa pral twò fon. Next se achitekti yo ak modèl konsepsyon. Nou bezwen pou kapab ekri architectural bèl kòd pou kapab ekri gwo aplikasyon. Ak sa a se kèk kalite SQL oswa ORM pou travay nan travay ak baz done a. Ak sa a aplike plis nan backend la.

Poukisa aprann Java ak kijan pou fè li efektivman. rapò Yandex

Ale! Nwayo Java. Mwen pa pral reyèlman dekouvri Amerik isit la-ou bezwen konnen lang nan tèt li. Ki sa ou ta dwe peye atansyon a. Premyèman, Java te lage yon anpil nan vèsyon nan dènye ane yo, se sa ki, nan 2014-2015 setyèm lan te lage, Lè sa a, wityèm lan, nevyèm, dizyèm, yon anpil nan nouvo vèsyon, ak yon anpil nan nouvo bagay fre yo te prezante nan yo. , pa egzanp, Java Stream API , lambda, elatriye. Trè fre, fre, bagay fre ke yo itilize nan kòd pwodiksyon an, sa yo mande sou nan entèvyou ak ki ou bezwen konnen. Se poutèt sa, ou pa ta dwe pran yon liv nan etajè a nan bibliyotèk Java-4 la epi ale aprann li. Sa a se plan nou an: nou aprann Java-8 oswa pi wo.

Nou peye anpil atansyon sou inovasyon tankou Stream API, var, elatriye Yo mande yo pandan entèvyou epi yo toujou ap itilize nan pwodiksyon an. Sa vle di, Stream API a pi fre pase bouk, an jeneral, yon bagay trè fre. Asire w ou peye atansyon.

Epi gen tout kalite bagay tankou iteratè, Eksepsyon ak sou sa. Bagay ki sanble pa enpòtan pou ou toutotan ou ekri kèk ti kòd ou menm. Ou pa bezwen eksepsyon sa yo, ki moun ki bezwen yo de tout fason? Men, yo pral definitivman mande nan entèvyou, yo pral definitivman itil ou nan pwodiksyon an. An jeneral, ou ta dwe peye atansyon sou Eksepsyon, iteratè ak lòt bagay.

Poukisa aprann Java ak kijan pou fè li efektivman. rapò Yandex

Estrikti done yo. Ou pa ka ale san estrikti, men li pral gwo si ou pa jis konnen ke gen seri, diksyonè, ak fèy papye. Epi tou diferan aplikasyon nan estrikti. Pou egzanp, menm diksyonè a nan Java gen anpil aplikasyon, tankou HashMap ak TreeMap. Yo gen asymptotics diferan, yo estriktire yon fason diferan andedan. Ou bezwen konnen ki jan yo diferan ak ki lè yo sèvi ak ki youn.

Li pral trè fre tou si ou konnen ki jan estrikti done sa yo travay intern. Sa vle di, li pa fasil pou konnen asymptotics yo - konbyen parye a ap travay, konbyen tan pas la ap travay, men ki jan estrikti a ap travay andedan - pou egzanp, ki sa ki yon bokit nan HashMap.

Li se tou vo peye atansyon sou pye bwa ak graf. Sa yo se bagay ki pa trè komen nan kòd pwodiksyon, men yo popilè nan entèvyou. An konsekans, ou bezwen kapab travèse pye bwa, graf nan lajè ak pwofondè. Sa yo se tout algorithm senp.

Le pli vit ke ou kòmanse ekri nenpòt kòd gwo, konplèks, lè l sèvi avèk bibliyotèk, kòd milti-klas, ou pral reyalize ke li difisil pou ou san yo pa bati sistèm ak rezoud depandans. Sa yo se sitou Maven ak Gradle. Yo pèmèt ou enpòte bibliyotèk nan pwojè ou a nan yon liy. Sa vle di, ou ekri yon xml yon sèl liy epi enpòte bibliyotèk nan pwojè a. Gwo sistèm. Yo se apeprè menm bagay la, sèvi ak swa yon sèl - Maven oswa Gradle.

Next - kèk kalite sistèm kontwòl vèsyon. Mwen rekòmande Git paske li popilè e gen anpil leson patikilye. Prèske tout moun sèvi ak Git, li se yon bagay fre, ou pa ka viv san li.

Ak kèk kalite anviwònman devlopman. Mwen rekòmande IntelliJ Idea. Li anpil akselere pwosesis devlopman, ede ou anpil, ekri tout kòd boilerplate pou ou, an jeneral, li fre.

Poukisa aprann Java ak kijan pou fè li efektivman. rapò Yandex

Lyen ki soti nan glisad la: SQLZOO, abrapost

SQL. Yon ti kras sou backenders. Te gen aktyèlman yon ka komik isit la. De jou anvan dezyèm entèvyou estaj mwen an, yon ti fi HR te rele m 'epi li te di ke nan de jou yo ta mande m' sou SQL ak HTTP, mwen te bezwen aprann li. Apre sa, mwen te konnen prèske anyen sou SQL oswa HTTP. Apre sa, mwen jwenn sit sa a fre - SQLZOO. Mwen te aprann SQL sou li nan 12 èdtan, mwen vle di, SQL sentaks, ki jan yo ekri SELECT requêtes, JOIN, elatriye sit trè fre, mwen trè rekòmande li. An reyalite, nan 12 èdtan mwen te aprann 90% nan sa mwen konnen kounye a.

Epi li la tou gwo konnen achitekti baz done. Sa yo se tout kalite kle, endèks, nòmalizasyon. Gen yon seri post sou sa sou Habré.

Poukisa aprann Java ak kijan pou fè li efektivman. rapò Yandex

Nan Java, anplis SQL, gen tout kalite sistèm kat objè-relasyonèl tankou JPA. Gen kèk kòd. Nan premye metòd la gen kèk kòd SQL - SELECT id name FROM info.users WHERE id IN userIds. Soti nan baz done itilizatè yo, nan tablo a, yo jwenn idantite yo ak non yo.

Apre sa, gen yon sèten mape ki vire yon objè ki soti nan baz la nan yon objè Java. Epi gen yon twazyèm metòd anba a ki aktyèlman egzekite kòd sa a. Tout bagay sa a ka ranplase lè l sèvi avèk JPA ak yon sèl liy, ki ekri anba a. Li fè menm bagay la - jwenn All ByIdIn. Sa vle di, ki baze sou non metòd la, li jenere yon rechèch SQL pou ou.

Bagay trè fre. Mwen menm, lè mwen pa t 'konnen SQL, te itilize JPA. An jeneral, peye atansyon. Si ou twò parese pou aprann SQL, se yon dezas. Epi, an jeneral, dife!

Poukisa aprann Java ak kijan pou fè li efektivman. rapò Yandex

Prentan. Ki moun ki te tande pale de yon bagay tankou fondasyon prentan an? Ou wè konbyen nan nou genyen? Pa san rezon. Prentan enkli nan egzijans chak dezyèm pòs vid Java backend. San li, gen vrèman okenn kote nan yon gwo devlopman. Ki sa ki Spring? Premye a tout, sa a se yon fondasyon Enjeksyon Depandans. Sou sa a tou pral di pwochen oratè. Men, nan ti bout tan, sa a se yon bagay ki pèmèt ou fè li pi fasil enpòte depandans yo nan kèk klas sou lòt moun. Sa vle di, konesans depandans senplifye.

Spring Boot se yon moso nan Spring ki pèmèt ou kouri aplikasyon sèvè ou a ak yon sèl bouton. Ou ale nan THID, peze yon koup nan bouton, epi kounye a ou gen aplikasyon sèvè ou a kanpe ak kouri sou localhost 8080. Sa vle di, ou poko ekri yon sèl liy kòd, men li deja ap travay. Bagay trè fre. Si ou ekri yon bagay pou kont ou, dife!

Prentan se yon fondasyon trè gwo. Li pa sèlman ranmase aplikasyon sèvè w la epi li rezoud Enjeksyon Depandans. Li pèmèt ou fè yon pakèt bagay, tankou kreye metòd REST API. Sa vle di, ou te ekri kèk metòd epi tache jwenn annotasyon kat kat la. Epi kounye a ou deja gen kèk metòd sou localhost ki ekri Hello world pou ou. De liy kòd epi li travay. Cool bagay.

Spring tou fè tès ekri pi fasil. Pa gen okenn fason san tès nan devlopman gwo. Kòd la bezwen teste. Pou rezon sa a, Java gen yon bibliyotèk fre JUnit 5. Ak JUnit an jeneral, men vèsyon an dènye se senkyèm lan. Gen tout bagay pou fè tès, tout kalite afimasyon ak lòt bagay.

Epi gen yon fondasyon Mockito awizom. Imajine ke ou gen kèk fonksyonalite ke ou vle teste. Fonksyonalite a fè anpil bagay, ki gen ladan, yon kote nan mitan an, li konekte nan VKontakte ak ID ou, pou egzanp, epi li resevwa premye ak siyati itilizatè VKontakte nan ID la. Ou pwobableman pa pral enkli VKontakte nan tès yo, sa se etranj. Men, ou bezwen teste fonksyonalite a, kidonk ou te fè klas sa a, lè l sèvi avèk Mockito, mok li, imitasyon li.

Ou pral di ke lè yon demann vini nan klas sa a ak yon ID tankou ak sa yo, li retounen kèk non siyati, pou egzanp, Vasya Pupkin. Epi li pral travay. Sa vle di, ou pral teste tout fonksyonalite a pou mok yon sèl klas. Bagay trè fre.

Poukisa aprann Java ak kijan pou fè li efektivman. rapò Yandex

Link soti nan glise

Modèl konsepsyon. Ki sa li ye? Sa yo se modèl pou rezoud pwoblèm tipik ki parèt nan devlopman. Nan devlopman, pwoblèm ki idantik oswa ki sanble souvan rive ke li ta bon pou rezoud yon jan kanmenm byen. Se poutèt sa, moun te vini ak pi bon pratik, sèten modèl, sou kòman yo rezoud pwoblèm sa yo.

Gen yon sit entènèt ak modèl yo ki pi popilè - refactoring.guru, ou ka li li, chèche konnen ki modèl ki genyen, li yon pakèt moun sou teyori. Pwoblèm lan se ke li nan pratikman initil. An reyalite, modèl san pratik yo pa patikilyèman itil.

Ou pral tande sou kèk modèl tankou Singletone oswa Builder. Ki moun ki tande pawòl sa yo? Anpil moun. Gen modèl sa yo senp ke ou ka aplike tèt ou. Men, pi fò nan modèl yo: estrateji, faktori, fasad - li pa klè ki kote yo aplike yo.

Epi jiskaske ou wè an pratik nan kòd kèk lòt moun yon kote yo aplike modèl sa a, ou pa yo pral kapab aplike li tèt ou. Se poutèt sa, pratik trè enpòtan ak modèl. Ak jis lekti sou yo sou refactoring.guru se pa super itil, men li la definitivman vo fè.

Poukisa aprann Java ak kijan pou fè li efektivman. rapò Yandex

Poukisa yo bezwen modèl? Ann di ou gen yon sèten klas Itilizatè. Li gen yon id ak yon non. Chak Itilizatè dwe gen tou de yon Id ak yon Non. Anwo goch la se salklas la.

Ki fason yo inisyalize itilizatè? Gen de opsyon - swa yon konstrukteur oswa yon setter. Ki dezavantaj tou de apwòch yo?

Konstriktè. Nouvo Itilizatè (7, "Bond"), oke. Koulye a, an n di ke nou pa gen yon klas Itilizatè, men kèk lòt yon sèl, ak sèt jaden nimerik. Ou pral gen yon konstrukteur ki gen sèt nimewo youn apre lòt. Li pa klè ki nimewo sa yo ak kilès nan yo ki fè pati ki pwopriyete. Designer a pa gwo.

Dezyèm opsyon an se setter. Ou ekri klèman: setId(7), setName(“Bond”). Ou konprann ki pwopriyete ki fè pati ki jaden. Men setter gen yon pwoblèm. Premyèman, ou ka bliye bay yon bagay, epi dezyèmman, objè ou vire soti yo dwe mutab. Sa a se pa fil an sekirite ak yon ti kras diminye lizibilite nan kòd la. Se poutèt sa moun te vini ak yon modèl fre - Builder.

Poukisa aprann Java ak kijan pou fè li efektivman. rapò Yandex

Kisa sa ye? Ann eseye konbine avantaj ki genyen nan tou de apwòch-setter ak konstrukteur-nan yon sèl. Nou fè yon sèten objè, Builder, ki pral gen tou Id ak non jaden, ki li menm yo pral bati ki baze sou setter la, epi ki pral gen yon metòd Bati ki retounen ou yon nouvo Itilizatè ak tout paramèt yo. Nou jwenn yon objè imuiabl ak yon setter. Cool!

Ki pwoblèm yo ye? Isit la nou gen klasik Builder la. Pwoblèm lan se ke nou ka toujou bliye tcheke nan kèk jaden. Men, si nou bliye vizite ID a, nan ka sa a nan Builder li se inisyalize a zewo, paske kalite a int se pa nullable. Men, si nou fè Non "Bond" epi bliye vizite biwo ID la, nou pral gen yon nouvo itilizatè ki gen id "0" ak non "Bond". Pa fre.

Ann eseye konbat sa. Nan Builder nou pral chanje int an int konsa ke li se nullable. Koulye a, tout bagay se gwo.

Poukisa aprann Java ak kijan pou fè li efektivman. rapò Yandex

Si nou eseye kreye yon itilizatè ki gen non "Bond", bliye mete ID li, nou pral jwenn yon eksepsyon pointer nil, paske ID la pa nullable, ak Builder la gen yon eksepsyon nil, espesyalman pointer.

Poukisa aprann Java ak kijan pou fè li efektivman. rapò Yandex

Men, nou ka toujou bliye mete yon non, kidonk nou mete repaksyon objè a nil. Koulye a, lè nou bati objè nou an soti nan Builder, li tcheke ke jaden an pa nullable. Epi sa se pa tout.

Ann gade nan dènye egzanp lan. Nan ka sa a, si nou yon jan kanmenm mete nil nan ègzekutabl ID a, li ta bon pou imedyatman konnen ke ou te fè li epi li pa fre ke w ap fè yon erè kounye a.

Poukisa aprann Java ak kijan pou fè li efektivman. rapò Yandex

Ou bezwen voye yon erè pa nan moman kreyasyon itilizatè a, men lè ou mete nil nan ID la. Se poutèt sa, nan Builder nou pral chanje Setter Integer a int, epi li pral imedyatman fè sèman ke yo jete deyò nil.

Nan ti bout tan, ki pwen an? Gen yon modèl Builder ki senp, men menm aplikasyon li gen kèk sibtilite, kidonk li trè fre yo gade nan aplikasyon diferan nan modèl. Chak modèl gen plizyè douzèn aplikasyon. Tout bagay sa yo trè enteresan.

Poukisa aprann Java ak kijan pou fè li efektivman. rapò Yandex

Ki jan nou ekri Builder nan kòd pwodiksyon an? Isit la se itilizatè nou an. Nou tache yon wotasyon Builder nan bibliyotèk Lombok la ak li, epi li menm li jenere yon Builder pou nou. Sa vle di, nou pa ekri okenn kòd, men Java deja panse ke klas sa a gen yon Builder, epi nou ka rele li konsa.

Mwen te deja di ke Java gen bibliyotèk pou prèske tout bagay, enkli Lombok, yon bibliyotèk fre ki pèmèt ou evite ekri boilerplate. Builder, GET.

Poukisa aprann Java ak kijan pou fè li efektivman. rapò Yandex

Modèl yo ka achitekti - ki gen rapò pa sèlman nan yon klas, men ak sistèm nan kòm yon antye. Gen yon prensip fre nan konsepsyon sistèm: Prensip Responsablite sèl. De kisa l ap pale? Lefèt ke chak klas dwe responsab pou kèk nan fonksyonalite pwòp li yo. Nan ka sa a, nou gen yon Kontwolè ki kominike ak itilizatè yo, objè JSON. Gen fasad, ki konvèti objè JSON an modèl ke aplikasyon Java a pral travay avèk yo. Gen yon Sèvis ki gen lojik konplèks ki travay ak modèl sa yo. Gen yon Objè Aksè Done ki mete modèl sa yo nan baz done a epi rekipere yo nan baz done a. Epi gen baz done a li menm. Nan lòt mo, li pa tout nan yon klas, men nou ap fè senk klas diferan, e sa se yon lòt modèl.

Poukisa aprann Java ak kijan pou fè li efektivman. rapò Yandex

Yon fwa ou te plis oswa mwens aprann Java, li bon pou ekri pwòp pwojè ou a ki pral gen yon baz done, travay ak lòt APIs, epi ekspoze aplikasyon sèvè ou a kliyan REST API. Sa a ta yon gwo bagay pou ajoute nan rezime w la, li ta yon fen fre nan edikasyon ou. Avèk sa a ou ka ale epi jwenn yon travay.

Poukisa aprann Java ak kijan pou fè li efektivman. rapò Yandex

Isit la se yon egzanp aplikasyon sèvè mwen an. Nan dezyèm ane mwen an, mwen te ekri yon papye tèm ak mesye yo. Yo t ap ekri yon aplikasyon mobil pou òganize evènman yo. La, itilizatè yo ka konekte atravè VKontakte, mete pwen sou kat jeyografik la, kreye evènman, envite zanmi yo, sove imaj evènman yo, elatriye.

Kisa mwen te fè nan pwojè a? Ekri yon aplikasyon sèvè nan Spring Boot san w pa itilize SQL. Mwen pa t konnen l, mwen te itilize JPA. Kisa li ta ka fè? Konekte nan VK atravè OAuth-2. Pran siy itilizatè a, ale nan VK ak li, tcheke ke li se yon itilizatè reyèl. Resevwa enfòmasyon sou itilizatè yo atravè VKontakte. Li te kapab sove enfòmasyon nan yon baz done, tou atravè JPA. Abilman sove foto ak lòt dosye nan memwa òdinatè, epi sove lyen ki mennen nan yo nan baz done a. Lè sa a, mwen pa t 'konnen ke te gen objè CLOB nan baz done a, kidonk mwen te fè li nan fason sa a. Te gen yon API REST pou itilizatè yo, aplikasyon pou kliyan yo. E te gen tès inite pou fonksyonalite debaz yo.

[…] Yon ti egzanp sou siksè mwen aprann nan Java. Nan premye ane mwen nan inivèsite, mwen te anseye C# ak yon konpreyansyon sou pwogram OOP - ki klas, koòdone, abstraksyon yo ye, ak poukisa yo bezwen. Li te ede m anpil. San sa, aprann Java se byen difisil; li pa klè poukisa klas yo bezwen.

Poukisa aprann Java ak kijan pou fè li efektivman. rapò Yandex

Nan dezyèm ane mwen nan inivèsite a, yo ankò te anseye Java nwayo, men mwen pa t sispann la, mwen te ale nan etidye Spring tèt mwen epi mwen te ekri yon papye kou, pwojè mwen an, ke mwen mansyone pi wo a. Ak tout bagay sa yo, mwen te ale pou yon estaj nan Yandex, te pase yon entèvyou, ak antre nan Yandex.Market. Gen mwen te ekri backend la pou Beru, sa a se mache nou an, ak pou Yandex.Market tèt li.

Apre sa, sis mwa de sa, mwen te transfere nan yon lòt ekip nan menm mache a. Nou fè analiz pou patnè biznis yo. Nou se nan platfòm la analyse, gen twa nan nou sou backend la, kidonk mwen gen yon gwo pati nan enfliyans sou pwojè a. Li trè enteresan, aktyèlman. Sa vle di, nou aktyèlman bay done sou mache a - ki sa lavant yo, nan ki kategori, nan ki modèl, pou patnè biznis, gwo konpayi byen li te ye. Epi gen sèlman twa nan nou, nou ekri kòd sa a, epi li trè fre.

Mèsi! Lyen itil:
- "Java 8. Gid pou debutan".
- Estrikti done yo.
- SQLZOO.
- Nòmalizasyon baz done.
- Modèl Design.
- Modèl Design.
- Netwaye Kòd.
- Java efikas.

Sous: www.habr.com

Add nouvo kòmantè