JavaRush /Java Blog /Random-TL /Magsimula tayo sa simula o 'Hello, Java World!'
articles
Antas

Magsimula tayo sa simula o 'Hello, Java World!'

Nai-publish sa grupo
Gusto kong simulan ang artikulong ito sa isang hindi pangkaraniwang, sa unang sulyap, digression. Mamaya ay magiging malinaw kung bakit eksakto.
Magsimula tayo sa simula o Hello, Java World!  - 1
Kaya, isipin natin ang isang tao. Gusto ng Isang taong ito na makabisado ang alpine skiing. At para dito ginagawa niya ang mga sumusunod na hakbang:
  • Mga tagapagturo, aklat-aralin, manwal, atbp. - lahat ito ay mula sa masama. Maaari kang matuto ng skiing sa iyong sarili. Bilang karagdagan, sa paaralan natutunan niyang mag-cross-country ski nang maayos. Alinsunod dito, binabalewala ang lahat ng payo mula sa mas may kaalaman.

  • Ang pinaka-cool na kagamitan ay pinili. Hindi mas mababa sa antas ng eksperto. Matigas na bota na masakit sa iyong mga paa. Ang mga hard ski na nangangailangan ng hindi kapani-paniwalang dami ng pagsisikap na yumuko, na higit na lampas sa antas ng physical fitness ng Somebody. Well, atbp.

  • Ang test track ay... well, sabihin natin, ang track na nagho-host ng World Cup giant slalom stage. Tama lang ito para sa pag-aaral.
  • Magpatuloy sa parehong diwa.
Kaya eto ang tanong. Anong itatawag mo dito Someone? Sa personal, bilang isang taong pamilyar sa alpine skiing sa loob ng halos 20 taon, tatawagan ko siya (at ito ay napaka banayad pa rin!) - walang pag-asa. Ito ay ganap na imposibleng matuto ng anuman sa ganitong paraan. Pero siguradong paraan para masaktan. At ang pinaka-siguradong bagay ay ang pag-abandona sa ideya ng skiing magpakailanman. Sa tingin ko ay sasang-ayon ka sa akin sa pagtatasa na ito. Sa anumang kaso, halos sigurado ako na ang Isang Tao na ito ay hindi aasahan ang anumang bagay na hindi kanais-nais na itutugon sa kanya. Ngayon isipin natin ang isa pang Tao. Hayaan siyang, sabihin, maging isang mag-aaral sa computer science. Siya ay may ilang kaalaman sa C++, C#, Pascal. Gusto niyang matuto ng Java. Ang kanyang mga aksyon:
  • Ang panitikan na tumutugma sa kanyang antas ng kaalaman (zero level, frankly speaking) ay winalis sa isang tabi. Batay sa isang bahagyang pamilyar sa nabanggit na teorya ng C++, C# at OOP.
  • Ang pinakamalakas na kapaligiran sa programming ay kinuha. Sabihin nating Eclipse o NetBeans. Ang isa na gumagawa ng lahat ng bagay mismo, pindutin lamang ang isang pindutan.
  • Bilang isang trial na application, pipiliin namin... well, sabihin nating chat. Isang application ng client-server, ang bahagi ng kliyente sa anyo ng isang applet, ang bahagi ng server - isang serbisyo sa web o, sa pinakamasama, mga servlet. Tamang tama para sa pag-aaral.
Tanong. Anong itatawag mo dito Someone? Alam mo ba kung ano ang kabalintunaan? Ang katotohanan ay na sa kasong ito ay magkakaroon ng makabuluhang mas kaunting walang kinikilingan na mga pagtatasa. Sa kabila ng katotohanan na ang mga sitwasyon ay magkapareho sa lahat ng aspeto. Maliban kung ang mga kahihinatnan para sa kalusugan at buhay sa pangalawang kaso ay hindi gaanong nakamamatay. Baka ito ang problema? Ang mga sitwasyon ay talagang magkatulad. Partikular kong inilarawan ang mga ito sa parehong estilo. At isang kakaibang bagay: kung ang kahangalan ng una ay halata, kung gayon ang pangalawang senaryo ay sinusundan ng isang nakababahala na bilang ng mga baguhan na developer. Ang pag-master ng Java ay nagsisimula sa pagsulat ng mga MIDlet, mga kliyente para sa mga database, mga chat, paggawa ng mga website batay sa mga servlet... Maaari kang magpatuloy sa mahabang panahon. Ngunit ang punto ay gayunpaman ay halata. Kasabay nito, ang panitikan sa antas ng panitikan ay isinantabi nang may paghamak. Basahin mo ito? sa akin? Oo, tatlong taon na akong nagsusulat sa C++! (Ang mga opsyon ay nasa Pascal, at maging sa visual basic.) At alam kong OOP! Well, sa pangkalahatan. Kaya, ano ang susunod? At pagkatapos ay ito:
  • Paano i-convert ang isang hanay ng 8 bytes sa mahaba?
  • Bakit ito nangyayari NoClassDefFoundError?
  • Bakit ko ilulunsad ang application sa Eclipse ( NetBeans/IDEA/JBuilder), at lahat ay maayos, ngunit kung wala ito ay nagta-type ako java HelloWorld.class, at mayroong isang error?
  • Bakit ito nag-crash ClassNotFoundException?
  • Bakit walang library? Nailagay ko na ito sa classes.zip, ngunit walang pakinabang ang lahat!
  • Bakit ako lumilikha ng isang hanay ng mga bagay, ngunit kapag sinubukan kong gumamit ng isang elemento ng array na nakukuha ko NullPointerException?
  • At bakit ...?
  • At bakit ...?
  • At bakit ...?
Bakit bakit bakit? Ngunit dahil ang Java ay hindi C++ o Pascal. At hindi si Perl. Ang kaalaman sa mga wikang ito ay hindi lamang madalas na hindi nakakatulong, ngunit nakakahadlang din. Kung dahil lamang sa ang mga wikang ito ay may ganap na magkakaibang mga ideolohiya. Ngunit ang panlabas na pagkakahawig ay nakaliligaw. Siyempre, lahat ng "bakit" at "paano" na ito ay may mga sagot sa mga libro. Sa panitikan ng pinakapangunahing antas. Ngunit ang pagbabasa nito ay tamad (mga pagpipilian: kahihiyan, walang oras, atbp.). Marami akong alam na stereotype na inilipat sa Java ng mga mahuhusay na espesyalista sa C++. Isang kamakailang halimbawa: hindi ka dapat magtapon ng exception sa isang constructor. Bakit? Oo, dahil sa C++ ang estado ng naturang bagay ay hindi tinukoy. Alinsunod dito, nangyayari ang pagtagas ng memorya. Sa Java, walang ganoong problema sa prinsipyo, dahil sa pagkakaroon ng isang kolektor ng basura. Gayunpaman, may mga taong nagsisikap na umiwas sa mga ganitong sitwasyon. Ayon lamang sa isang nakatanim na stereotype. At ang pinakamasama ay na bilang resulta ng mga pagsisikap na ito, ang code ay nagiging mas kumplikado. Ang syntax ay madaling matutunan. At ganap na hindi sapat. Ang ideolohiya ng wika ay higit na mahalaga. At para mas mabisang makabisado, dapat kang magsimula sa umpisa pa lang. Bakit eksakto at paano? At ito ay isa pang tanong. Kaya. Saan at paano magsisimula. Ito ay depende sa kung ano ang nais mong makamit. Kung gusto mong maging isang bihasang coding monkey, maaari kang magsimula sa halos kahit ano. Kung nais mong maging isang propesyonal, ang mga bagay ay medyo mas kumplikado. Ang aking karanasan ay nagbibigay sa akin ng dahilan upang sabihin ang mga sumusunod. Ang pagkakaiba sa pagitan ng isang propesyonal na developer at isang "coder" ay naiintindihan niya kung ano ang nangyayari. Siya ay higit pa sa pagpindot sa mga pindutan. Ang isang malakas na kapaligiran ay isang napakagandang tulong. Para sa mga kayang gawin nang wala ito. Ngunit kadalasan ito ang tanging kasangkapan ng mga nagsimula nito. At sa kawalan nito, ang halaga ng coding monkey ay zero. Dahil walang mga pindutan upang pindutin. Sa pangkalahatan, ang pagpindot sa pindutan ay maaaring magkaroon ng tunay na napakapangit na anyo. Ang isa sa aking mga kasamahan ay nakakita ng isang produkto na nakasulat sa Java. Ang mga tagubilin para sa pag-install nito ay nagsimula sa mga salitang: "I-install ang JBuilder mula sa disk..." Ngayon ITO ay nakamamatay na. Kung hindi magagawa ng mga developer na gumana ang produkto nang walang development environment, nanginginig akong isipin kung paano ito isinulat. Hindi bababa sa, ito ay isinulat ng mga amateurs. Ano ang ibig kong sabihin sa "naiintindihan kung ano ang nangyayari?" Nangangahulugan ito na dapat maunawaan ng isang tao ang mga sumusunod:
  • Ano ang isang virtual machine at bakit ito kinakailangan?
  • Ano ang isang klase mula sa punto ng view ng isang virtual machine.
  • Ano ang isang pakete?
  • Ano ang aklatan?
  • Paano naghahanap at naglo-load ng mga klase ang virtual machine; ano ang class loader at paano ito gumagana; ilan ang naroon bilang default; ano ang classpath.
atbp. at iba pa. Ang listahan ay nagpapatuloy. Pakitandaan na hindi ko isinama ang kaalamang partikular sa developer mismo. Ano ang isang thread, ano ang isang klase mula sa isang OOP na pananaw at paano ito naiiba sa isang bagay, kung paano gumagana ang mga tagapamahala ng layout - ANUMANG developer ay dapat malaman ang lahat ng ito. Ang lahat ng inilista ko ay higit pa sa isang teknikalidad. Ngunit napakadalas lumalabas na ang pag-alam sa kanila ay mahalaga sa pag-unawa kung ano ang mali. Isang halimbawa mula sa buhay. Mayroong isang library para sa pagtatrabaho sa XML na tinatawag na xalan. Naglalaman ito ng ilang javax.xml... packages - mga parser, transformer, atbp. Sikat na sikat ang library na ito. Ang problema ay ang parehong mga pakete ay naroroon sa J2SDK mula noong bersyon 1.4. Tanong. Aling klase ang ilo-load kapag ina-access ang klase ng javax.xml.transform.stream.StreamSource mula sa library, kung ang xalan ay naroroon din sa classpath - library o mula sa J2SDK? Upang masagot ang tanong na ito, kailangan mong malaman kung paano gumagana ang class loader. Minsan ay nakakita ako ng apat na araw na talakayan sa isa sa mga forum na sa huli ay bumaba sa isyung ito. Ang code ay hindi gumana nang wasto dahil hindi kinuha ng loader ang klase na inaasahan mula dito. Ano ang nakukuha ko? Narito ang bagay: kung mas malakas ang kapaligiran sa pag-unlad, mas marami ang ginagawa nito para sa developer - mas kaunti ang kailangan niyang mag-isip. At ito na oh, grabe. Kaya malapit sa unggoy. Ito ay humahantong sa unang konklusyon, gaano man ito kabalintunaan:

Konklusyon 1. Maipapayo na simulan ang pag-aaral ng Java na WALANG makapangyarihang kapaligiran.

Hindi ko itinataguyod ang pagsusulat sa mga editor sa antas ng notepad. Ngunit hindi ko ito ginagawa para sa tanging dahilan - sila, bilang panuntunan, ay walang pag-highlight ng syntax. Ito ay isang hindi kapani-paniwalang maginhawang bagay na walang negatibong epekto. Maaari kang gumamit ng isang bagay tulad ng Notepad++ , naiintindihan nito ang Java syntax at, sa pamamagitan ng paraan, ay libre. Halimbawa, mayroon akong .java file type na nakarehistro sa system na partikular para dito. Kaya, isang text editor na may pag-highlight ng syntax at isang command line. Dalawa o tatlong araw ng pagdurusa - at pag-unawa kung ano ang isang classpath, kung paano inilunsad ang interpreter at isang grupo ng iba pang maliliit na bagay - ang pag-unawa dito ay mananatili magpakailanman. Dagdag pa. Ang aking karanasan ay nagbibigay sa akin ng dahilan upang sabihin na imposibleng makakuha ng kaalaman para magamit sa hinaharap. Sa diwa na ito ay nagkakahalaga ng pagbabasa ng panitikan lamang kapag may mga tanong na sasagutin nito. Kung magbasa ka ng libro nang walang tanong tungkol dito, mawawala ang impormasyon sa loob ng isang linggo. Alam na alam ko ito, kasama na ang sarili kong karanasan. Minsan ay nagsimula akong magbasa ng isang libro sa mga servlet nang limang beses. Hanggang sa nagsimula akong makitungo sa kanila sa aking trabaho, ang impormasyon ay hindi hinihigop. At ito ay malayo sa isang nakahiwalay na kaso. Noong unang panahon, napakatagal na panahon na ang nakalipas, mga 8-10 taon na ang nakalilipas, nabasa ko ang sumusunod, sa kasamaang palad, hindi ko maalala ang may-akda: Paano magturo sa isang tao ng isang bagong programming language? Napakasimple. Kailangan mong bigyan ito ng isang wika, ilang mga gawain at isang minimum na dokumentasyon. Pagkatapos, pagkatapos ng ilang buwan, kapag nagsimula siyang magsulat ng hindi bababa sa wikang ito, magbigay ng komprehensibong dokumentasyon. Babasahin ito sa loob ng dalawang linggo tulad ng isang nobelang detektib, pagkatapos nito ay magiging handa na ang tao sa trabaho. Sumasang-ayon ako sa pahayag na ito 100%. Sa dalawang buwan, sa isang banda, mawawala ang lahat ng maliliit na isyu. Ang mga sagot sa kanila ay makukuha nang nakapag-iisa, na lubos na magpapataas ng kanilang halaga. Sa kabilang banda, bubuo na ang mga malinaw na tanong, ang mga sagot na ibibigay ng dokumentasyon. Ito ay humahantong sa pangalawang konklusyon, na tila hindi gaanong kabalintunaan kaysa sa una:

Konklusyon 2. Maipapayo na simulan ang pag-aaral ng Java na WALANG mga aklat-aralin. Java API documentation + Java tutorial - ito ay higit pa sa sapat.

Ang dokumentasyon ng Java API ay kinakailangan. Lubos kong inirerekumenda na panatilihin ito nang lokal, sa disk. Kailangan mong makipag-ugnayan sa kanya nang higit sa isang beses, hindi dalawang beses, o kahit sampu. Personally, walang araw na hindi ako pumupunta doon. Inirerekomenda ko rin na panatilihing lokal ang tutorial ng Java. Ito ay entry-level na impormasyon na ganap na pumapalit sa isang aklat-aralin. Gayunpaman, mayroong isang makatarungang halaga doon. Dapat kong sabihin na sa mga lugar na hindi ko nakikitungo sa trabaho, nakakahanap pa rin ako ng bago para sa aking sarili. Ang pagbabasa ng marami ay masama. Hangga't walang kahilingan, walang tugon. Ang pagbabasa ng kaunti ay masama din. Nasaan ang gintong ibig sabihin? Sumusunod ako sa panuntunang ito: Nagbasa ako hanggang sa tila sa akin ay natanggap ko na ang sagot sa tanong. Sa 90% ng mga kaso hindi ito ang kaso. Ngunit sa sandaling ito ay pinakamahusay na huminto at magpatuloy sa iyong sarili. Ang paunang impetus ay natanggap, at ang paglutas ng problema nang nakapag-iisa ay magbibigay ng higit pa. Siyempre, pagkatapos ng ilang oras ay nagkakahalaga ng pagkuha ng panitikan. Ngunit muli, para sa panitikan sa antas ng panitikan. Kahit na tila walang kapararakan ang lahat ng ito, sulit na basahin ang mga unang kabanata. Halos masisiguro ko na may matututuhan kang bago. At ang bagay na ito ay maaaring maging lubhang mahalaga sa ibang pagkakataon. OK. Mukhang naisip namin kung ano ang isusulat. Paano magsulat - masyadong. Ngunit ano ang dapat kong isulat? Tandaan kung saan nagsimula ang artikulong ito. Dapat ba akong magsimula sa pamamagitan ng pagsulat ng isang instant messaging system? Ang pagpipilian ay, siyempre, sa iyo. Tila sa akin ay hindi ito katumbas ng halaga. Kung mas kumplikado ang gawain, mas maraming tanong ang lalabas. Sa kawalan ng karanasan, ang gayong bilang ng mga katanungan ay magbibigay ng isang pakiramdam ng imposibilidad ng paglutas ng mga ito, na sinusundan ng isang pakiramdam ng sariling kababaan, katangahan, atbp. Sa huli, maaari itong humantong sa desisyong “to hell with it...” at ihinto ang pag-aaral ng wika. Yung. sa eksaktong kabaligtaran na epekto kaysa sa isa na kinakailangan. Ito ay hindi gaanong katangian ng Java kaysa sa mismong proseso ng pag-aaral. Ngunit sa ilang kadahilanan nakalimutan nila ang tungkol dito pagdating sa pagtuturo ng programming. Samantala, ang isang maliit na gawain na natapos hanggang sa wakas ay maaaring magbigay ng higit na kasiyahan at higit na higit na kaalaman kaysa sa isang napakagandang sistema na inabandona sa pinakadulo simula ng paglalakbay. Kaya ang pangatlong konklusyon: Konklusyon 3. Maipapayo na simulan ang pag-aaral ng Java gamit ang mga gawain na sapat sa iyong kasalukuyang antas ng kaalaman sa Java. Hindi ka dapat magsimulang matutong magmaneho ng kotse sa isang Formula 1 na kotse. Hindi ka dapat magsimulang mag-aral ng alpine skiing sa track ng World Cup. At sa parehong paraan, hindi mo dapat simulan ang pag-master ng Java sa pamamagitan ng pagsusulat ng napakalaking bagay. Naiintindihan ko na ang ambisyon ay hinihingi. Ngunit sa kasong ito sila ay walang batayan. At kung mas maraming hindi makatwirang ambisyon ang mayroon ka, mas maliit ang pagkakataon mong maging isang propesyonal. Ang isang kahanga-hangang kababalaghan sa mga tuntunin ng pag-aaral ay, kakaiba, iba't ibang mga forum. Kung gagamitin mo ang mga ito nang matalino. Matalinong - nangangahulugan ito na kailangan mong gawin ang kabaligtaran, hindi gaya ng dati. Ibig sabihin, hindi para magtanong, kundi sagutin sila. Anumang mayroon kang lakas na abutin. Kung iniisip mo na ako mismo ang nakakaalam ng lahat, nagkakamali ka. Oo, marami akong alam. Pero may mga lugar na hindi ko pa na-encounter. O mayroon ako, ngunit napakaliit. Ang isang klasikong halimbawa mula sa aking pagsasanay ay nagtatrabaho sa mga sertipiko: pag-sign ng code, mga secure na koneksyon, atbp. Noong 1998, noong isinusulat ko ang aking thesis, ginawa ko ito, ngunit mula noon ang lahat ay nagbago nang malaki. Sa paglipas ng mga taon, mayroon akong mga katanungan na naipon. Nagsimula pa akong magbasa ng ilang literatura. Ngunit, tulad ng sinabi ko sa itaas, hindi ka makakakuha ng kaalaman para magamit sa hinaharap. Parang crowbar - pumapasok sa isang tenga at lumalabas sa kabila. Walang resulta maliban sa isang butas sa ulo. At nagpatuloy ito hanggang kamakailan, nang may itanong sa forum tungkol sa koneksyon sa SSL sa tomcat. Nagkaroon ng ilang mga problema. At ang tanong na ito lang ang nagtulak sa akin para maghukay ng malalim. At kung may kahilingan, mayroon ding tugon. Hindi ko lang nalaman kung ano ang problema ng tao, ngunit nakahanap din ako ng maraming iba pang kapaki-pakinabang na impormasyon. Sa wakas ay naunawaan ko kung paano gumagana ang mga sertipiko. Ang kaukulang artikulo ay nasa mga plano. At ito ay nangyayari sa lahat ng oras. Medyo nagtrabaho ako, halimbawa, sa GUI. Ito ay bunga lamang ng tanong ng isang tao sa forum na naunawaan ko ang ilan sa mga kakayahan ng TextLayout. Bago ang tanong na ito ay wala akong ideya tungkol sa kanila. Sa parehong paraan, nalaman ko kamakailan na lumalabas na binibigyang kahulugan din ni JButton ang html bilang sarili nitong header. Bago ito, akala ko si JLabel lang ang makakagawa nito. At ito ay muli salamat sa forum. Kaya lumalabas: kapag mas sinasagot natin ang mga tanong, mas natututo tayo sa ating sarili. Iyon ang dahilan kung bakit hindi ako sumasang-ayon sa popular na opinyon na kung ang isang tao ay nakaupo sa isang forum, pagkatapos ay wala siyang ginagawa. Ito ay malayo sa malinaw at pangunahing nakasalalay sa kung bakit eksakto ang tao sa forum. At ano ang pangunahing ginagawa niya - magtanong o sumagot. Sa katunayan, maaari ka ring magtanong. Ngunit matalino din. Huwag humingi ng solusyon (at lalo na sa postscript na "Pakiusap sa mga nakakaalam, magbigay ng sagot, at huwag magtanong!", na nakilala ko noong isang araw!), ngunit muli, sa kabaligtaran, hilingin na itakda ang direksyon ng paggalaw. Ito ay lubos na nauunawaan na mahirap para sa isang baguhan na maunawaan kung saan maghukay, dahil siya ay kulang lamang ng karanasan. Hindi ito kasalanan ng tao, at hindi rin ito problema. Ito ay mabuti. Lahat ay dumaan dito. Kasama ako. Para sa akin personal, mas mahalaga na ang isang tao ay may gustong matutunan. At hindi lamang makakuha ng sagot, makakalimutan lang ito limang minuto pagkatapos kumuha ng programming lab. Lagi kong sasabihin sa iyo ang direksyon ng paggalaw. Kung kilala ko siya sa sarili ko. At kung hindi ko alam, at least nahuhulaan ko. At tiyak na hahanapin ko rin ang sagot. Ngunit malamang na hindi ako nagbibigay ng mga direktang sagot-kahit, hindi ko naaalala. Siyanga pala, ito ay dahil dito kaya ako umalis sa isa sa mga forum. Nang magsimula akong magtanong ng mga nangungunang tanong, sabay-sabay nilang ipinaliwanag sa akin na nakaugalian na nilang sagutin lang. At sa aking mga tanong ay maaari pa akong pumunta. Isinasaalang-alang na ang antas ng forum ay nag-iwan ng maraming nais, hindi bababa sa salamat sa diskarteng ito! – Nagpasya akong huwag nang mag-aksaya ng oras. Kaya pumili ng isang forum ayon sa gusto mo at umalis ka na. Sa pamamagitan ng paraan, ang site na ito ay lumitaw nang tumpak salamat sa isa sa mga forum. Pagkatapos makipag-usap doon sa loob ng ilang oras, naipon ko ang isang listahan ng mga pinaka-madalas na itinaas na mga paksa at natanto na ang naturang site ay hihilingin. At nangyari nga. Halos lahat ng mga artikulo ay isinulat pagkatapos ng ilang mga talakayan sa forum. O pagsunod sa sulat na regular ko ring isinasagawa. Ano ang resulta? Magtrabaho, magtrabaho at magtrabaho muli. Kung mas pinapayagan mo ang iyong sarili na gawin para sa iyong sarili sa paunang yugto, mas kaunting kaalaman ang iyong nakukuha. At mas mahaba ang daan patungo sa propesyonalismo. Ngunit ikaw lang ang makakapili kung sino ang gusto mong maging - isang walang isip na unggoy na nagtutulak ng butones o isang propesyonal. At ikaw lamang ang pipili ng landas kung saan maaari mong makamit ito o iyon. Ang unang paraan ay malinaw. Sinubukan kong ipakita ang pangalawa. Ang iyong galaw, mga ginoo! Link sa orihinal na pinagmulan: Magsimula tayo sa simula o 'Hello, Java World!'
Mga komento
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION