No ke aha e aʻo ai iā Java a pehea e hana pono ai. Hōʻike ʻo Yandex

Pehea ka ʻokoʻa o Java mai nā ʻōlelo kaulana ʻē aʻe? No ke aha ʻo Java ka ʻōlelo mua e aʻo ai? E hana mākou i hoʻolālā e kōkua iā ʻoe e aʻo iā Java mai ka wā ʻōpala a me ka hoʻohana ʻana i nā mākau hoʻolālā ma nā ʻōlelo ʻē aʻe. E papa inoa i nā ʻokoʻa ma waena o ka hana ʻana i ka code production ma Java a me ka hoʻomohala ʻana i nā ʻōlelo ʻē aʻe. Heluhelu ʻo Mikhail Zatepyakin i kēia hōʻike ma kahi hālāwai no nā poʻe e hiki mai ana nā hana hana ʻO Yandex a me nā mea hoʻomohala hoʻomaka - Java Junior meetup.


— Aloha kākou, ʻo Misha koʻu inoa. He mea hoʻomohala wau mai Yandex.Market, a i kēia lā e haʻi wau iā ʻoe i ke kumu e aʻo ai iā Java a pehea e hana pono ai. Hiki paha iā ʻoe ke nīnau i kahi nīnau kūpono: no ke aha wau e haʻi ai i kēia moʻolelo, ʻaʻole kekahi mea hoʻomohala ikaika me nā makahiki he nui o ka ʻike? ʻO ka mea ʻoiaʻiʻo, ua aʻo wau iā Java i kēia manawa, ma kahi o hoʻokahi makahiki a me ka hapa i hala aku nei, no laila ke hoʻomanaʻo mau nei au i ke ʻano o ia mea a me nā pōʻino.

I hoʻokahi makahiki i hala aku nei ua loaʻa iaʻu kahi internship ma Yandex.Market. Ua hoʻomohala au i ka hope no Beru, no ka Market ponoʻī, ua hoʻohana paha ʻoe. I kēia manawa hoʻomau wau i ka hana ma laila, ma kahi hui ʻokoʻa. Hoʻokumu mākou i kahi kahua analytical no Yandex.Market no nā hoa ʻoihana.

No ke aha e aʻo ai iā Java a pehea e hana pono ai. Hōʻike ʻo Yandex

E hoʻomaka kākou. No ke aha e aʻo ai iā Java mai kahi manaʻo kūpono? ʻO ka ʻoiaʻiʻo ʻo Java kahi ʻōlelo papahana kaulana loa. He kaiāulu nui loa kona.

Eia kekahi laʻana, aia kahi kuhikuhi TIOBE, kahi kuhikuhi kaulana o ka kaulana o nā ʻōlelo hoʻolālā, a ʻo Java ke kūlana mua ma laila. Eia kekahi, ma nā kahua hana, e ʻike paha ʻoe i ka hapa nui o nā hakahaka e pili ana iā Java, ʻo ia hoʻi, ma ka hoʻomohala ʻana ma Java, hiki iā ʻoe ke loaʻa i kahi hana.

No ka mea he nui loa ke kaiāulu, e loaʻa i nā nīnau āu e loaʻa ai kahi pane ma kekahi Stack Overflow a i ʻole nā ​​pūnaewele ʻē aʻe. Eia kekahi, i ka hoʻomohala ʻana i Java, ke kākau maoli nei ʻoe i ka code ma ka JVM, no laila hiki iā ʻoe ke hoʻololi maʻalahi iā Kotlin, Scala a me nā ʻōlelo ʻē aʻe e hoʻohana ana i ka JVM.

No ke aha e aʻo ai iā Java a pehea e hana pono ai. Hōʻike ʻo Yandex

He aha ka maikaʻi e pili ana iā Java mai kahi manaʻo ideological? Aia nā ʻōlelo papahana like ʻole. Hoʻoponopono lākou i nā pilikia like ʻole, ʻike ʻoe. No ka laʻana, maikaʻi ʻo Python no ke kākau ʻana i nā palapala laina hoʻokahi e hoʻoponopono i nā pilikia wikiwiki.

Ma ka ʻaoʻao hoʻohui, hiki iā ʻoe ke hoʻomalu piha i ka code executable. No ka laʻana, loaʻa iā mākou nā kaʻa, nā kaʻa kaʻa ʻole ʻo Yandex, ua kākau ʻia kā lākou code i nā hoʻohui. No ke aha mai? Loaʻa iā Java kekahi mea - ʻOhi ʻōpala. Hoʻomaʻemaʻe ia i ka RAM o nā mea pono ʻole. Hoʻomaka koke kēia mea a hoʻopau i ka honua, ʻo ia hoʻi, hoʻopau i ke koena o ka papahana a hele e helu i nā mea, hoʻomanaʻo maopopo i nā mea. Inā hana kēlā mea i kahi drone, ʻaʻole maikaʻi. E holo pololei kāu drone, i kēia manawa e hoʻomaʻemaʻe i kona hoʻomanaʻo a ʻaʻole e nānā i ke alanui. No laila, ua kākau ʻia ka drone ma luna o nā mea maikaʻi.

No ke aha e aʻo ai iā Java a pehea e hana pono ai. Hōʻike ʻo Yandex

He aha nā pilikia e hoʻoponopono ai ʻo Java? He ʻōlelo mua ia no ka hoʻomohala ʻana i nā papahana nui i kākau ʻia i nā makahiki, e nā kakini a i ʻole nā ​​haneli o nā kānaka. ʻO ka mea nui, ua kākau ʻia ka nui o ka backend ma Yandex.Market ma Java. He hui kā mākou i māhele ʻia ma kekahi mau kūlanakauhale, he ʻumi kānaka i kēlā me kēia. A maʻalahi ka mālama ʻana i ke code, ua kākoʻo ʻia no nā makahiki he ʻumi a ʻoi aku paha, a i ka manawa like e komo mai nā poʻe hou a hoʻomaopopo i kēia code.

He aha nā hiʻohiʻona e loaʻa i ka ʻōlelo i kākoʻo maʻalahi ʻia ke code i loko a hiki ke maʻalahi i ka hoʻomohala ʻana i nā hui nui. ʻO ka mea mua, he code hiki ke heluhelu ʻia, a maʻalahi hoʻi e hoʻokō i nā hoʻonā hale kūkulu paʻakikī. ʻO ia hoʻi, pono e maʻalahi ke kākau i nā abstractions kiʻekiʻe, a pēlā aku. ʻO kēia ka mea a Java e hāʻawi ai iā mākou. He ʻōlelo pili kēia. He mea maʻalahi loa ka hoʻokō ʻana i nā abstractions kiʻekiʻe a me nā hale hana paʻakikī.

Nui nō hoʻi nā papa hana a me nā hale waihona puke no Java, no ka mea, ʻoi aku ka ʻōlelo ma mua o 15 mau makahiki. I loko o kēia manawa, ua kākau ʻia nā mea a pau i hiki ke kākau ʻia ma luna, no laila he nui nā hale waihona puke no nā mea āpau āu e pono ai.

No ke aha e aʻo ai iā Java a pehea e hana pono ai. Hōʻike ʻo Yandex

He aha nā mākau kumu, i koʻu manaʻo, pono e loaʻa i kahi mea pāʻani JA hoʻomaka? ʻO ka mea mua, ʻo kēia ka ʻike o ka ʻōlelo kumu Java. ʻO ka hope aʻe kekahi ʻano o ka Dependency Injection framework. ʻO ka mea haʻi'ōlelo aʻe, ʻo Kirill, e kamaʻilio hou e pili ana i kēia. ʻAʻole au e hele hohonu. ʻO ka mea aʻe ka hoʻolālā a me nā ʻano hoʻolālā. Pono mākou e kākau i ka code architecturally nani i mea e kākau ai i nā noi nui. A ʻo kēia kekahi ʻano SQL a i ʻole ORM no nā hana o ka hana ʻana me ka waihona. A pili kēia i ka hope hope.

No ke aha e aʻo ai iā Java a pehea e hana pono ai. Hōʻike ʻo Yandex

Hele! Iawa kumu. ʻAʻole au e ʻike maoli iā ʻAmelika ma aneʻi—pono ʻoe e ʻike i ka ʻōlelo ponoʻī. He aha kāu e hoʻolohe ai. ʻO ka mea mua, ua hoʻokuʻu ʻo Java i nā mana he nui i nā makahiki i hala iho nei, ʻo ia hoʻi, i ka makahiki 2014-2015 ua hoʻokuʻu ʻia ka hiku, a laila ʻo ka ʻewalu, ʻeiwa, ʻumi, he nui nā mana hou, a he nui nā mea hou i hoʻokomo ʻia i loko o lākou. , no ka laʻana, ka Java Stream API , lambda, etc. ʻO nā mea ʻoluʻolu loa, hou, ʻoluʻolu i hoʻohana ʻia i ka code production, nā mea a lākou e nīnau ai i nā nīnauele a pono ʻoe e ʻike. No laila, ʻaʻole pono ʻoe e lawe i kahi puke mai ka papa ma ka waihona Java-4 a hele e aʻo. ʻO kā mākou papahana kēia: aʻo mākou iā Java-8 a i ʻole.

Ke nānā pono nei mākou i nā mea hou e like me Stream API, var, etc. Ua nīnau ʻia lākou i ka wā ninaninau a hoʻohana mau ʻia i ka hana. ʻO ia hoʻi, ʻoi aku ka maʻalili o ka Stream API ma mua o nā puka lou, ma ka laulā, he mea ʻoluʻolu loa. E mālama pono.

A aia nā ʻano mea like ʻole e like me iterators, Exceptions a pēlā aku. He mea nui ʻole iā ʻoe ke kākau ʻoe i kekahi code liʻiliʻi iā ʻoe iho. ʻAʻole pono ʻoe i kēia mau ʻokoʻa, ʻo wai ka mea e pono ai? Akā, e nīnau ʻia lākou ma nā nīnauele, pono lākou e pono iā ʻoe i ka hana. Ma keʻano laulā, pono ʻoe e hoʻolohe i nā Exceptions, iterators a me nā mea ʻē aʻe.

No ke aha e aʻo ai iā Java a pehea e hana pono ai. Hōʻike ʻo Yandex

Nā hale ʻikepili. ʻAʻole hiki iā ʻoe ke hele me ka ʻole o nā hale, akā maikaʻi ia inā ʻaʻole ʻoe ʻike wale aia aia nā sets, nā puke wehewehe ʻōlelo, a me nā pepa. A me nā hoʻokō like ʻole o nā hale. No ka laʻana, ʻo ka puke wehewehe ʻōlelo like ma Java he nui nā hoʻokō, me HashMap a me TreeMap. Loaʻa iā lākou nā asymptotics ʻokoʻa, ua hoʻonohonoho ʻokoʻa lākou i loko. Pono ʻoe e ʻike i ka ʻokoʻa a me ka wā e hoʻohana ai i kahi.

E ʻoluʻolu loa inā ʻike ʻoe i ka hana ʻana o kēia mau ʻikepili i loko. ʻO ia hoʻi, ʻaʻole maʻalahi ka ʻike i kā lākou asymptotics - pehea ka hana o ka bet, pehea ka lōʻihi o ka hana ʻana o ka pass, akā pehea ka hana o ka hale i loko - no ka laʻana, he aha ka bakeke ma HashMap.

Pono nō hoʻi e nānā i nā lāʻau a me nā kiʻi. He mau mea maʻamau ʻole kēia i ka code production, akā kaulana lākou i nā nīnauele. No laila, pono ʻoe e hele i nā lāʻau, nā kiʻi i ka laulā a me ka hohonu. He mau algorithms maʻalahi kēia.

Ke hoʻomaka nei ʻoe e kākau i kekahi code nui, paʻakikī, me ka hoʻohana ʻana i nā hale waihona puke, multi-class code, e ʻike ʻoe he paʻakikī iā ʻoe me ka ʻole o ke kūkulu ʻana i nā ʻōnaehana a hoʻoholo i nā hilinaʻi. ʻO kēia ka Maven a me Gradle. Hāʻawi lākou iā ʻoe e hoʻokomo i nā hale waihona puke i kāu papahana ma ka laina hoʻokahi. ʻO ia, kākau ʻoe i kahi xml laina hoʻokahi a hoʻokomo i nā hale waihona puke i loko o ka papahana. Pūnaehana nui. Ua like like lākou, e hoʻohana i hoʻokahi - Maven a i ʻole Gradle.

Aʻe - kekahi ʻano ʻōnaehana mana mana. Manaʻo wau iā Git no ka mea kaulana ia a he nui nā kumu aʻo. Aneane e hoʻohana nā kānaka a pau iā Git, he mea ʻoluʻolu, ʻaʻole hiki iā ʻoe ke ola me ka ʻole.

A me kekahi ʻano hoʻomohala hoʻomohala. Manaʻo wau iā IntelliJ Idea. Hoʻoikaika nui ia i ke kaʻina hana hoʻomohala, kōkua nui iā ʻoe, kākau i nā code boilerplate āpau no ʻoe, ma ke ʻano nui, ʻoluʻolu.

No ke aha e aʻo ai iā Java a pehea e hana pono ai. Hōʻike ʻo Yandex

Nā loulou mai ka paheʻe: SQLZOO, habrapost

SQL. He mea liʻiliʻi e pili ana i nā backenders. He hihia ʻakaʻaka maoli nō ma ʻaneʻi. ʻElua lā ma mua o kaʻu nīnauele lua, ua kāhea mai kekahi kaikamahine HR iaʻu a ʻōlelo mai i loko o ʻelua mau lā e nīnau mai lākou iaʻu e pili ana i SQL a me HTTP, pono wau e aʻo. A ʻaneʻane ʻike ʻole wau i ka SQL a i ʻole HTTP. A loaʻa iaʻu kēia pūnaewele maikaʻi - SQLZOO. Ua aʻo au iā SQL i loko o nā hola 12, ʻo wau hoʻi, SQL syntax, pehea e kākau ai i nā nīnau SELECT, JOIN, etc. Loaʻa maikaʻi kahi kahua, mahalo nui wau. ʻOiaʻiʻo, i loko o 12 hola ua aʻo au i ka 90% o kaʻu mea i ʻike i kēia manawa.

A he mea maikaʻi nō hoʻi ka ʻike ʻana i ka hale waihona waihona. ʻO kēia nā ʻano kī āpau, indexes, normalization. Aia kekahi mau pou e pili ana i kēia ma Habré.

No ke aha e aʻo ai iā Java a pehea e hana pono ai. Hōʻike ʻo Yandex

Ma Java, ma waho aʻe o SQL, aia nā ʻano ʻōnaehana mapping Object-relational e like me JPA. Aia kekahi code. Ma ke ala mua aia kekahi SQL code - SELECT id name FROM info.users WHERE id IN userIds. Mai ka waihona mea hoʻohana, mai ka papaʻaina, loaʻa kā lākou mau ID a me nā inoa.

A laila, aia kekahi palapala palapala e hoʻohuli i kahi mea mai ke kumu i mea Java. A aia kahi ala ʻekolu ma lalo e hoʻokō maoli i kēia code. Hiki ke hoʻololi i kēia mau mea a pau me ka JPA me hoʻokahi laina, i kākau ʻia ma lalo nei. Hana like ia - loaʻa All ByIdIn. ʻO ia, ma muli o ka inoa o ke ʻano, hana ia i kahi nīnau SQL no ʻoe.

Mea ʻoluʻolu loa. ʻO wau iho, i ka wā ʻaʻole wau i ʻike iā SQL, hoʻohana iā JPA. Ma keʻano laulā, e hoʻolohe. Inā moloā ʻoe e aʻo i ka SQL, he pōʻino. A, ma ka laulā, ke ahi!

No ke aha e aʻo ai iā Java a pehea e hana pono ai. Hōʻike ʻo Yandex

Puna. ʻO wai ka mea i lohe i kekahi mea e like me ka Spring framework? ʻIke ʻoe i ka nui o ʻoukou? ʻAʻole me ke kumu ʻole. Hoʻokomo ʻia ka pūnāwai i nā koi o kēlā me kēia hakahaka Java backend lua. Me ka ʻole, ʻaʻohe wahi i kahi hoʻomohala nui. He aha ka puna? ʻO ka mea mua, he hoʻolālā Dependency Injection kēia. E pili ana i keia e haʻi aku haiolelo hope. Akā i ka pōkole, he mea kēia e hiki ai iā ʻoe ke maʻalahi i ka lawe ʻana i nā hilinaʻi o kekahi mau papa ma luna o nā mea ʻē aʻe. ʻO ia hoʻi, ua maʻalahi ka ʻike o nā hilinaʻi.

ʻO Spring Boot kahi ʻāpana o Spring e hiki ai iā ʻoe ke holo i kāu polokalamu kikowaena me hoʻokahi pihi. Hele ʻoe i THID, kaomi i nā pihi ʻelua, a i kēia manawa ua hoʻokumu ʻia kāu noi kikowaena a holo ma localhost 8080. ʻO ia hoʻi, ʻaʻole ʻoe i kākau i hoʻokahi laina code i kēia manawa, akā ke hana nei. Mea ʻoluʻolu loa. Inā kākau ʻoe i kāu mea ponoʻī, ahi!

He anga nui loa ka puna. ʻAʻole ia e ʻohi wale i kāu noi kikowaena a hoʻoholo i ka Dependency Injection. Hiki iā ʻoe ke hana i nā mea he nui, me ka hoʻokumu ʻana i nā ala REST API. ʻO ia hoʻi, ua kākau ʻoe i kekahi ʻano hana a hoʻopili i ka Get mapping annotation iā ia. A i kēia manawa ua loaʻa iā ʻoe kekahi ala ma localhost e kākau iā Hello world iā ʻoe. ʻElua laina code a hana. Mea ʻoluʻolu.

Hoʻomaʻamaʻa maʻalahi ka pūnāwai i nā hoʻokolohua kākau. ʻAʻohe ala me ka ʻole o ka hoʻāʻo ʻana i ka hoʻomohala nui. Pono e hoʻāʻo ʻia ke code. No kēia kumu, loaʻa iā Java kahi hale waihona puke ʻoluʻolu ʻo JUnit 5. A ʻo JUnit ma ke ʻano laulā, akā ʻo ka mea hou loa ka lima. Aia nā mea āpau no ka hoʻāʻo ʻana, nā ʻano ʻōlelo a me nā mea ʻē aʻe.

A aia kahi hoʻolālā Mockito weliweli. E noʻonoʻo ʻoe aia kekahi mau hana āu e makemake ai e hoʻāʻo. He nui nā mea e hana ai ka hana, e like me, ma kahi o ka waena, hoʻopaʻa ʻo ia i VKontakte me kāu ID, no ka laʻana, a loaʻa iā ia ka inoa mua a me ka inoa hope o ka mea hoʻohana VKontakte mai ka ID. ʻAʻole paha ʻoe e hoʻokomo iā VKontakte i nā hoʻokolohua, he mea ʻē. Akā, pono ʻoe e hoʻāʻo i ka hana, no laila ua hana ʻoe i kēia papa, me ka hoʻohana ʻana iā Mockito, mok, hoʻohālike.

E ʻōlelo ʻoe inā hiki mai kahi noi i kēia papa me kahi ID penei a me ia, e hoʻihoʻi i kekahi inoa hope, no ka laʻana, ʻo Vasya Pupkin. A e hana ia. ʻO ia hoʻi, e hoʻāʻo ʻoe i nā hana āpau no ka mok hoʻokahi papa. Mea ʻoluʻolu loa.

No ke aha e aʻo ai iā Java a pehea e hana pono ai. Hōʻike ʻo Yandex

loulou mai ka paheʻe

Nā hiʻohiʻona hoʻolālā. He aha ia? ʻO kēia nā hiʻohiʻona no ka hoʻoponopono ʻana i nā pilikia maʻamau i kū mai i ka hoʻomohala ʻana. I ka hoʻomohala ʻana, ʻike pinepine ʻia nā pilikia like a i ʻole nā ​​​​pilikia like ʻole he mea maikaʻi loa ia e hoʻoponopono maikaʻi. No laila, ua hele mai nā kānaka me nā hana maikaʻi loa, kekahi mau laʻana, pehea e hoʻoponopono ai i kēia mau pilikia.

Aia kahi pūnaewele me nā hiʻohiʻona kaulana loa - refactoring.guru, hiki iā ʻoe ke heluhelu iā ia, e ʻike i ke ʻano o nā hiʻohiʻona, heluhelu i kahi hui o ke kumumanaʻo. ʻO ka pilikia, ʻaʻole pono. ʻO kaʻoiaʻiʻo, ʻaʻole maikaʻi loa nā mamana me ka hana ʻole.

E lohe ʻoe e pili ana i kekahi mau hiʻohiʻona e like me Singletone a i ʻole Builder. ʻO wai ka mea i lohe i kēia mau ʻōlelo? Nui nā kānaka. Aia nā hiʻohiʻona maʻalahi e hiki iā ʻoe ke hoʻokō iā ʻoe iho. Akā ʻo ka hapa nui o nā hiʻohiʻona: hoʻolālā, hale hana, facade - ʻaʻole maopopo kahi e hoʻopili ai.

A hiki i ka wā e ʻike ai ʻoe i ka hoʻomaʻamaʻa ʻana i kahi code a kekahi kanaka ʻē aʻe i kahi i hoʻopili ʻia ai kēia ʻano, ʻaʻole hiki iā ʻoe ke hoʻohana iā ʻoe iho. No laila, he mea nui ka hoʻomaʻamaʻa me nā mamana. A ʻo ka heluhelu wale ʻana e pili ana iā lākou ma refactoring.guru ʻaʻole kōkua nui, akā pono maoli ia e hana.

No ke aha e aʻo ai iā Java a pehea e hana pono ai. Hōʻike ʻo Yandex

No ke aha e pono ai nā mamana? E ʻōlelo mākou he papa Mea hoʻohana kāu. He Id a he Inoa kona. Pono e loaʻa i kēlā me kēia mea hoʻohana ka Id a me ka inoa. Aia ma ka hema ka lumi papa.

He aha nā ala e hoʻomaka ai i ka mea hoʻohana? ʻElua mau koho - he mea kūkulu hale a he mea hoʻonohonoho paha. He aha nā hemahema o nā ala ʻelua?

Mea kūkulu hale. mea hoʻohana hou (7, "Bond"), ʻae. I kēia manawa, e ʻōlelo kākou ʻaʻole kā mākou papa Mea hoʻohana, akā ʻo kekahi, me nā kahua helu ʻehiku. E loaʻa iā ʻoe kahi mea kūkulu hale me nā helu ʻehiku. ʻAʻole maopopo ke ʻano o kēia mau helu a ʻo wai o lākou no ka waiwai hea. ʻAʻole maikaʻi ka mea hoʻolālā.

ʻO ka koho ʻelua he mea hoʻonohonoho. Kākau maopopo ʻoe: setId(7), setName(“Bond”). Maopopo iā ʻoe ka waiwai o kēlā mahina ʻai. Akā he pilikia ka mea hoʻonohonoho. ʻO ka mea mua, hiki iā ʻoe ke poina i ka hāʻawi ʻana i kekahi mea, a ʻo ka lua, ua loli kāu mea. ʻAʻole palekana kēia pae a hōʻemi iki i ka heluhelu ʻana o ke code. ʻO ia ke kumu i hele mai ai ka poʻe me kahi hiʻohiʻona maikaʻi - Builder.

No ke aha e aʻo ai iā Java a pehea e hana pono ai. Hōʻike ʻo Yandex

He aha kēia e pili ana? E ho'āʻo kākou e hoʻohui i nā pono o nā ala ʻelua-setter a me constructor-i hoʻokahi. Hana mākou i kekahi mea, Builder, e loaʻa nō hoʻi nā kahua Id a me Name, kahi e kūkulu ʻia ma muli o ka mea hoʻonohonoho, a e loaʻa iā ia kahi ala kūkulu e hoʻihoʻi iā ʻoe i mea hoʻohana hou me nā ʻāpana āpau. Loaʻa iā mākou kahi mea hiki ʻole a me kahi mea hoʻonohonoho. Anu!

He aha nā pilikia? Eia iā mākou ka mea hana maʻamau. ʻO ka pilikia, hiki iā mākou ke poina e nānā i kekahi kahua. A inā poina mākou e kipa i ka ID, i kēia hihia ma Builder ua hoʻomaka ʻia i ka zero, no ka mea ʻaʻole hiki ke ʻano int. A inā mākou e hana i ka inoa "Bond" a poina e kipa i ke keʻena ID, e loaʻa iā mākou kahi mea hoʻohana hou me ka id "0" a me ka inoa "Bond". ʻAʻole ʻoluʻolu.

E ho'āʻo kākou e hakakā i kēia. Ma Builder e hoʻololi mākou i ka int i int i hiki ke nullable. I kēia manawa ua maikaʻi nā mea a pau.

No ke aha e aʻo ai iā Java a pehea e hana pono ai. Hōʻike ʻo Yandex

Inā mākou e ho'āʻo e hana i kahi mea hoʻohana me ka inoa "Bond", poina e kau i kāna ID, e loaʻa iā mākou kahi ʻokoʻa pointer null, no ka mea, ʻaʻole hiki ke hoʻokaʻawale ʻia ka ID, a ʻo ka mea hana he null, ʻokoʻa kikoʻī kikoʻī.

No ke aha e aʻo ai iā Java a pehea e hana pono ai. Hōʻike ʻo Yandex

Akā hiki iā mākou ke hoʻopoina i ka waiho ʻana i kahi inoa, no laila hoʻonoho mākou i ka replay mea i ka null. I kēia manawa, ke kūkulu mākou i kā mākou mea mai Builder, ʻike ʻo ia ʻaʻole hiki ke hoʻopau ʻia ke kahua. A ʻaʻole ʻo ia wale nō.

E nānā kākou i ka laʻana hope loa. I kēia hihia, inā hoʻokomo mākou i ka null i ka wā holo ID, maikaʻi loa ke ʻike koke ua hana ʻoe a ʻaʻole maikaʻi ke hana hewa ʻoe i kēia manawa.

No ke aha e aʻo ai iā Java a pehea e hana pono ai. Hōʻike ʻo Yandex

Pono ʻoe e hoʻolei i kahi hewa ʻaʻole i ka manawa o ka mea hoʻohana, akā ke kau ʻoe i ka null i ka ID. No laila, ma Builder e hoʻololi mākou i ka Setter Integer i int, a hoʻohiki koke ʻo ia ua kiola lākou i waho.

I ka pōkole, he aha ka manaʻo? Aia kahi ʻano mea hana maʻalahi, akā ʻo kāna hoʻokō ʻana he mau subtleties, no laila he mea maikaʻi loa ke nānā aku i nā hoʻokō like ʻole o nā ʻano. Loaʻa i kēlā me kēia hiʻohiʻona nā hanana hoʻokō. He mea hoihoi loa keia.

No ke aha e aʻo ai iā Java a pehea e hana pono ai. Hōʻike ʻo Yandex

Pehea mākou e kākau ai iā Builder i ka code production? Eia kā mākou mea hoʻohana. Hoʻopili mākou i kahi Builder rotation mai ka hale waihona puke Lombok iā ia, a ʻo ia iho e hoʻopuka i kahi mea hana no mākou. ʻO ia hoʻi, ʻaʻole mākou e kākau i kekahi code, akā ua manaʻo ʻo Java ua loaʻa i kēia papa kahi mea hana, a hiki iā mākou ke kapa e like me kēia.

Ua ʻōlelo mua wau he hale waihona puke ʻo Java no nā mea āpau, me ka Lombok, kahi hale waihona puke e hiki ai iā ʻoe ke pale i ke kākau ʻana i ka boilerplate. Kakauhale, GET.

No ke aha e aʻo ai iā Java a pehea e hana pono ai. Hōʻike ʻo Yandex

Hiki i nā hiʻohiʻona ke hoʻolālā - pili i ka papa hoʻokahi wale nō, akā i ka ʻōnaehana holoʻokoʻa. Aia kekahi manaʻo maikaʻi i ka hoʻolālā ʻōnaehana: Single Responsibility Principle. He aha kāna e kamaʻilio nei? ʻO ka ʻoiaʻiʻo o kēlā me kēia papa ke kuleana no kekahi o kāna mau hana ponoʻī. I kēia hihia, loaʻa iā mākou kahi Controller e kamaʻilio me nā mea hoʻohana, nā mea JSON. Aia ʻo Facade, e hoʻohuli ana i nā mea JSON i mau hiʻohiʻona e hana pū ai ka polokalamu Java. Aia kahi lawelawe i loaʻa i ka loiloi paʻakikī e hana pū me kēia mau hiʻohiʻona. Aia kahi Data Access Object e hoʻokomo i kēia mau hiʻohiʻona i loko o ka waihona a hoʻihoʻi iā lākou mai ka waihona. A aia ka waihona ʻikepili ponoʻī. ʻO ia hoʻi, ʻaʻole ia i loko o ka papa hoʻokahi, akā ke hana nei mākou i ʻelima mau papa like ʻole, a ʻo ia kekahi kumu.

No ke aha e aʻo ai iā Java a pehea e hana pono ai. Hōʻike ʻo Yandex

Ke aʻo ʻia ʻoe i ka Java, maikaʻi ke kākau i kāu papahana ponoʻī e loaʻa kahi waihona, hana pū me nā API ʻē aʻe, a hōʻike i kāu noi kikowaena i nā mea kūʻai aku REST API. He mea maikaʻi kēia e hoʻohui i kāu resume, he hopena maikaʻi ia i kāu hoʻonaʻauao. Me kēia hiki iā ʻoe ke hele a loaʻa kahi hana.

No ke aha e aʻo ai iā Java a pehea e hana pono ai. Hōʻike ʻo Yandex

Eia kekahi laʻana o kaʻu noi kikowaena. I koʻu makahiki ʻelua, ua kākau au i ka pepa kauā me nā kāne. Ke kākau nei lākou i kahi polokalamu kelepona no ka hoʻonohonoho ʻana i nā hanana. Ma laila, hiki i nā mea hoʻohana ke komo ma VKontakte, kau i nā helu ma ka palapala ʻāina, hana i nā hanana, kono i kā lākou mau hoaaloha iā lākou, mālama i nā kiʻi o nā hanana, etc.

He aha kaʻu i hana ai ma ka papahana? Ua kākau i kahi noi kikowaena ma Spring Boot me ka hoʻohana ʻole ʻana iā SQL. ʻAʻole au i ʻike iā ia, ua hoʻohana au iā JPA. He aha ka mea hiki ke hana? E komo i VK ma o OAuth-2. E lawe i ka hōʻailona o ka mea hoʻohana, e hele i VK me ia, e nānā he mea hoʻohana maoli ia. Loaʻa ka ʻike e pili ana i nā mea hoʻohana ma o VKontakte. Hiki iā ia ke mālama i ka ʻike i loko o kahi waihona, ma o JPA pū kekahi. Mālama maikaʻi i nā kiʻi a me nā faila ʻē aʻe i ka hoʻomanaʻo kamepiula, a mālama i nā loulou iā lākou ma ka waihona. I kēlā manawa ʻaʻole wau i ʻike aia nā mea CLOB i ka waihona, no laila ua hana wau i kēia ala. Aia kahi API REST no nā mea hoʻohana, nā noi mea kūʻai aku. A he mau ho'āʻo ʻāpana no ka hana maʻamau.

[…] He laʻana liʻiliʻi o kaʻu aʻo ʻana i ka Java. I koʻu makahiki mua ma ke kulanui, ua aʻo ʻia iaʻu i ka C# a ua hāʻawi ʻia iaʻu i ka hoʻomaopopo ʻana i ka polokalamu OOP - he aha nā papa, nā pilina, abstraction, a me ke kumu e pono ai. Ua kōkua nui iaʻu. Me ka ʻole o kēia, paʻakikī loa ke aʻo ʻana iā Java; ʻaʻole maopopo ke kumu e pono ai nā papa.

No ke aha e aʻo ai iā Java a pehea e hana pono ai. Hōʻike ʻo Yandex

I koʻu makahiki ʻelua ma ke kulanui, ua aʻo hou lākou i ka Java core, akā ʻaʻole wau i hoʻōki ma laila, ua hele au e aʻo iā Spring iaʻu iho a kākau i kahi papa hana, kaʻu papahana, aʻu i ʻōlelo ai ma luna. A me kēia mau mea a pau, ua hele au i kahi internship ma Yandex, hele i kahi hālāwai ninaninau, a komo i Yandex.Market. Ma laila wau i kākau ai i ka hope no Beru, ʻo kā mākou mākeke kēia, a no Yandex.Market ponoʻī.

Ma hope o kēlā, ʻeono mahina i hala aku nei, ua neʻe au i kahi hui ʻē aʻe i loko o ka mākeke hoʻokahi. Hana mākou i nā loiloi no nā hoa ʻoihana. Aia mākou i loko o ka analytical platform, ʻekolu o mākou ma ke kua, no laila he nui kaʻu ʻāpana o ka mana ma ka papahana. He hoihoi loa, ʻoiaʻiʻo. ʻO ia hoʻi, hāʻawi maoli mākou i ka ʻikepili ma ka mākeke - he aha nā mea kūʻai aku, i nā ʻāpana, i nā hiʻohiʻona, no nā hoa ʻoihana, nā hui kaulana kaulana. A ʻekolu wale nō mākou, kākau mākou i kēia code, a ʻoluʻolu loa.

Mahalo iā ʻoe! Nā loulou pono:
- "Java 8. Ke alakaʻi o ka poʻe hoʻomaka".
- Nā Kūlana ʻikepili.
- SQLZOO.
- Hoʻoponopono ʻikepili.
- Nā Kiʻi Hoʻolālā.
- Nā Manaʻo Hoʻolālā.
- Aia maʻemaʻe.
- Java pono.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka