{"id":55,"date":"2013-11-24T08:33:00","date_gmt":"2013-11-24T07:33:00","guid":{"rendered":""},"modified":"2018-09-17T21:54:52","modified_gmt":"2018-09-17T19:54:52","slug":"java-vs-net","status":"publish","type":"post","link":"https:\/\/spireng.sk\/en\/java-vs-net\/","title":{"rendered":"Java vs .Net"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"imgp_img\" style=\"float: left; margin: 2px 5px;\" src=\"\/sites\/default\/files\/imagepicker\/1\/cdfs.jpg\" alt=\"Obr\u00e1zok\" width=\"240\" height=\"189\" \/>\u00daplne na za\u010diatok mus\u00edm poveda\u0165, \u017ee nem\u00e1m r\u00e1d sv\u00e4t\u00e9 vojny v IT. To s\u00fa tie nekone\u010dn\u00e9 diskusie o tom, ktor\u00fd prehliada\u010d, programovac\u00ed jazyk alebo opera\u010dn\u00fd syst\u00e9m je ten najlep\u0161\u00ed. Nie \u017ee by nemalo zmysel porovn\u00e1va\u0165. Sk\u00f4r nem\u00e1 zmysel h\u013eada\u0165 v\u00ed\u0165aza. Mysl\u00edm si, \u017ee ak\u00fdko\u013evek produkt, ktor\u00fd na trhu vydr\u017eal aspo\u0148 5 rokov, tu m\u00e1 miesto. Ani tento \u010dl\u00e1nok nem\u00e1 za cie\u013e h\u013eada\u0165 v\u00ed\u0165aza (a rozp\u00fata\u0165 tak sv\u00e4t\u00fa vojnu). Sk\u00f4r len porovna\u0165 dva svety, ktor\u00e9 maj\u00fa ve\u013ea spolo\u010dn\u00e9ho a z\u00e1rove\u0148 odli\u0161n\u00e9ho. <!--more--><!--break--><\/p>\n<p>Ako druh\u00fa vec mus\u00edm poveda\u0165, \u017ee sa nepova\u017eujem za .Net alebo Java guru. Aj ke\u010f sa v obidvoch oblastiach celkom intenz\u00edvne pohybujem, videl som dos\u0165 na to aby som vedel, \u017ee je toho omnoho viac, \u010do by som mal vedie\u0165. Preto sa m\u00f4\u017ee sta\u0165, \u017ee niektor\u00e9 moje z\u00e1very bud\u00fa plyn\u00fa\u0165 pr\u00e1ve z tejto neznalosti a mo\u017eno existuje n\u00e1stroj alebo sp\u00f4sob, o ktorom neviem, a ktor\u00fd probl\u00e9m rie\u0161i. Ako posledn\u00fa vec mus\u00edm poveda\u0165, \u017ee porovn\u00e1va\u0165 budem programovanie v C# pre .Net 2.0 (s miernymi odskokmi k nov\u0161\u00edm verzi\u00e1m) a v Jave pre Java SE 1.7.<\/p>\n<p><strong>\u010co maj\u00fa spolo\u010dn\u00e9 <\/strong><\/p>\n<p>Spolo\u010dn\u00e9ho maj\u00fa tieto jazyky viac ako odli\u0161n\u00e9ho. Oba s\u00fa to \u010disto objektovo orientovan\u00e9 jazyky s ve\u013emi podobnou syntaxou. Oba podporuj\u00fa aj zlo\u017eitej\u0161ie mechanizmy, ako s\u00fa generik\u00e1 alebo atrib\u00faty\/anot\u00e1cie. Oba maj\u00fa obrovsk\u00e9 mno\u017estvo kni\u017en\u00edc tret\u00edch str\u00e1n, ktor\u00e9 ich umo\u017e\u0148uj\u00fa pou\u017e\u00edva\u0165 skoro pre ak\u00e9ko\u013evek \u00fa\u010dely. Oba s\u00fa v\u0161ak cielen\u00e9 hlavne pre informa\u010dn\u00e9 syst\u00e9my, kde by v\u010faka ich vlastnostiam mal prebieha\u0165 tzv. Rapid development. V takomto zozname by som mohol pokra\u010dova\u0165 \u010falej, ale je fakt, \u017ee ak ste doma v jednom z t\u00fdchto svetov, dosta\u0165 sa do druh\u00e9ho nebude a\u017e tak\u00fd probl\u00e9m. Mus\u00edte len preklen\u00fa\u0165 rozdiely.<\/p>\n<p><strong>\u010co maj\u00fa rozdielne<\/strong><\/p>\n<p><em>Star\u0161\u00ed m\u00e1 prednos\u0165 alebo bod pre Javu<\/em><\/p>\n<p>Java je tu dlh\u0161ie ako .Net. Prv\u00e1 verzia Javy bola zverejnen\u00e1 v roku 1996. Prv\u00e1 verzia .Net a\u017e o 5 rokov nesk\u00f4r. To umo\u017enilo Jave pomerne dlh\u00fa dobu p\u00f4sobi\u0165 v oblasti, kde nemala priamu konkurenciu (nie \u017ee by v tom \u010dase neboli in\u00e9 programovacie jazyky, sk\u00f4r len nie in\u00e9 s nie\u010dim, ako je napr\u00edklad Garbage Collector). Dlh\u0161ia hist\u00f3ria priniesla viac dokument\u00e1cie, kni\u017en\u00edc a v\u00e4\u010d\u0161iu komunitu. 5 rokov v svete IT m\u00f4\u017ee znamena\u0165 jednu program\u00e1torsk\u00fa gener\u00e1ciu a Java v tomto \u010dase mala ve\u013ea priestoru r\u00e1s\u0165. Ver\u00edm, \u017ee to je jeden z dvoch d\u00f4vodov (k druh\u00e9mu sa dostanem onedlho), pre\u010do je Java tradi\u010dne pred C# v \u0161tatistik\u00e1ch o roz\u0161\u00edrenosti jazyka. Mimochodom, toto m\u00e1 priamy vplyv na mno\u017estvo pracovn\u00fdch pon\u00fak pre jednu alebo druh\u00fa platformu.<\/p>\n<p><em>Syntaktick\u00fd cukor alebo bod pre .Net<\/em><\/p>\n<p>.Net je teda mlad\u0161ia platforma. A to m\u00f4\u017ee ma\u0165 aj svoje v\u00fdhody. M\u00f4\u017ee sa toti\u017e pou\u010di\u0165 od svojich predchodcov a urobi\u0165 niektor\u00e9 veci inak. Java sa men\u00ed a vylep\u0161uje tie\u017e. Ale d\u00e1 sa poveda\u0165, \u017ee na svojom poli vznikala ako jedna z prv\u00fdch a nemala sa ve\u013emi od koho u\u010di\u0165. V pr\u00edpade .Netu u\u017e to bolo inak. Jedna z vec\u00ed, ktor\u00e1 je v Jave stra\u0161n\u00e1, je event handling. Aby ste rozumeli, tak stra\u0161n\u00e1 znamen\u00e1, \u017ee sa na to zle pozer\u00e1. Aby ste o\u0161etrili nejak\u00fa udalos\u0165, tak si potrebujete vyrobi\u0165 triedu implementovan\u00edm Listere rozhrania alebo odvoden\u00edm od pripravenej triedy, ktor\u00e1 ho u\u017e implementuje. V ka\u017edom pr\u00edpade sa to naj\u010dastej\u0161ie rie\u0161i anonymnou triedou. Vo v\u00e4\u010d\u0161ine literat\u00fary som sa stretol s n\u00e1zorom, \u017ee anonymn\u00e9 triedy treba pou\u017e\u00edva\u0165, ale len s mierou. Ke\u010f\u017ee je to ale jedin\u00fd naozaj \u201erapid\u201c sp\u00f4sob ako o\u0161etrova\u0165 udalosti, tak miera mus\u00ed \u00eds\u0165 \u010dasto bokom. .Net m\u00e1 na rozdiel od Javy jednoduch\u00fd koncept udalosti, pri\u010dom je mo\u017en\u00e9 pripoji\u0165 sa na udalos\u0165 pomocou jednej alebo viacero met\u00f3d.<\/p>\n<p>Druh\u00e1 \u010ditate\u013enej\u0161ia vec s\u00fa .Net properties. V kone\u010dnom d\u00f4sledku s\u00fa to dvojice set a get met\u00f3dy, ale v jazyku vyzeraj\u00fa sk\u00f4r ako vlastnosti objektu, ktor\u00e9 sa daj\u00fa nastavova\u0165. U\u0161etr\u00ed to s\u00edce len pr\u00e1ve tie slov\u00ed\u010dka \u201eget\u201c a \u201eset\u201c a nejak\u00e9 z\u00e1tvorky, ale to prispieva k \u010ditate\u013enosti, ke\u010f\u017ee Property v .Nete je sk\u00f4r vlastnos\u0165 a met\u00f3da je \u010dinnos\u0165 objektu.<\/p>\n<p>Obe tieto veci s\u00fa v podstate syntaktick\u00fd cukor, preto\u017ee neprid\u00e1vaj\u00fa jazyku na sile. Rozdiel je ale v \u010ditate\u013enosti. S\u00fa to toti\u017e \u010fal\u0161ie dva n\u00e1stroje, ktor\u00e9 je mo\u017en\u00e9 pri modelovan\u00ed triedy a s\u00fastav tried pou\u017e\u00edva\u0165, a \u010d\u00edm viac n\u00e1strojov je k dispoz\u00edcii, t\u00fdm lep\u0161ie je mo\u017en\u00e9 modelova\u0165 objekty. A kvalitn\u00e9 modelovanie objektov je z\u00e1kladom pre objektovo-orientovan\u00fd programovac\u00ed jazyk.<\/p>\n<p><em>Komplexnos\u0165 ako tich\u00fd zabij\u00e1k alebo bod pre .Net<\/em><\/p>\n<p>Java m\u00e1 na rozdiel od .Netu mnoho spolo\u010dn\u00e9ho s open-source svetom. A tie\u017e si odtia\u013e nie\u010do priniesla. Napr\u00edklad modularitu a slab\u00e9 v\u00e4zby. Tie zvy\u0161uj\u00fa flexibitu, ale z\u00e1rove\u0148 so sebou prin\u00e1\u0161aj\u00fa komplexnos\u0165. Teraz hovor\u00edm o Class Path v Jave a o ve\u013ekom mno\u017estve a sp\u00f4sobe pou\u017e\u00edtia Java kni\u010dn\u00edc. Je ich omnoho viac, pri\u010dom s\u00fa drobn\u00e9 a je nutn\u00e9 ich vysklada\u0165 v\u0161etky na Class Path, aby ste mohli aplik\u00e1ciu spusti\u0165. V .Nete je podobn\u00fd princ\u00edp, ale kni\u017enice s\u00fa zv\u00e4\u010d\u0161ia v\u00e4\u010d\u0161ie a \u010dasto si v\u0161etky z\u00e1vislosti prines\u00fa so sebou.<\/p>\n<p>Java bohu\u017eia\u013e potrebuje n\u00e1stoje ako je Maven alebo Apache Ivy, aby prichystal v\u0161etko potrebn\u00e9. S\u00fa to komplikovan\u00e9 n\u00e1stroje, ktor\u00e9 rie\u0161ia komplexn\u00fd probl\u00e9m. A komplexnos\u0165 je v\u017edy tich\u00fdm zabij\u00e1kom softv\u00e9rov\u00fdch produktov (nie\u010do ako cholesterol u \u013eud\u00ed).<\/p>\n<p><em>Som zadarmo alebo bod pre Javu<\/em><\/p>\n<p>Java je zadarmo. Ja viem. Aj .Net je zadarmo. Ale Java je viac. V .Nete viete vyv\u00edja\u0165 po nejak\u00fa hranicu zadarmo. Ak v\u0161ak chcete pokra\u010dova\u0165 (v\u00e4\u010d\u0161\u00ed t\u00edm, ve\u013ek\u00fd projekt alebo nejak\u00e9 \u0161peci\u00e1lne funkcie), mus\u00edte za\u010da\u0165 uva\u017eova\u0165 nad platen\u00edm. Nem\u00e1m samozrejme na mysli samotn\u00fd framework. Sk\u00f4r len prostriedky a s\u00favisiaci softv\u00e9r. Napr\u00edklad v\u00fdvojov\u00e9 prostredie \u2013 Visual Studio. S express verziou sa m\u00f4\u017eete nau\u010di\u0165 programova\u0165. Ale po \u010dase v\u00e1m za\u010dn\u00fa ch\u00fdba\u0165 funkcie z vy\u0161\u0161\u00edch verzi\u00ed. A alternat\u00edvne zadarmo neexistuje (teda existuje napr\u00edklad Sharp Develop \u2013 ale ten sa Visual Studiu Profesional nevyrovn\u00e1). Na druhej strane m\u00e1te v Jave NetBeans alebo Eclipse, ktor\u00e9 s\u00fa zadarmo aj s neskuto\u010dn\u00fdm mno\u017estvom doplnkov. Taktie\u017e \u010do sa t\u00fdka <span style=\"background: transparent;\">kni\u010dn\u00edc tret\u00edch str\u00e1n<\/span>, tak t\u00fdch platen\u00fdch je v svete .Net omnoho viac ako v svete Javy.<\/p>\n<p><em>Som v\u0161ade alebo bod pre Javu<\/em><\/p>\n<p>Nepopierate\u013en\u00e1 v\u00fdhoda Javy je multiplatformovos\u0165. Tam je .Net dos\u0165 vzadu. Aj ke\u010f, \u010do sa t\u00fdka pou\u017e\u00edvate\u013esk\u00fdch stan\u00edc, je pri prevahe Windows st\u00e1le skoro to ist\u00e9, v oblasti serverov je to cite\u013en\u00fd rozdiel. Mo\u017enos\u0165 nap\u00edsa\u0165 aplik\u00e1ciu a pritom nerie\u0161i\u0165, ak\u00fd je cie\u013eov\u00fd opera\u010dn\u00fd syst\u00e9m (\u010do sa t\u00fdka t\u00fdch mainstreamov\u00fdch), je nepopierate\u013en\u00e1 v\u00fdhoda.<\/p>\n<p>Kedysi Java za t\u00fato vlastnos\u0165 platila pomalos\u0165ou. Bola to jednoducho cena za \u010fal\u0161ie vrstvy, ktor\u00e9 jej umo\u017enili by\u0165 platformovo nez\u00e1visl\u00e9. Dnes to u\u017e ale tak nie je a posledn\u00e9 verzie Javy sa v r\u00fdchlosti vyrovnaj\u00fa aj .Net-u.<\/p>\n<p>Ak ste do\u0161li a\u017e sem, pok\u00fasili sa zr\u00e1ta\u0165 body, tak mo\u017eno m\u00e1te v\u00ed\u0165aza. Ale ako som p\u00edsal na za\u010diatku, nebol cie\u013e ho n\u00e1js\u0165, a preto ani s\u00fa\u010det bodov v\u00e1m ho re\u00e1lne ned\u00e1. Obidve platformy maj\u00fa klady a z\u00e1pory a obe s\u00fa pod\u013ea m\u0148a pou\u017eite\u013enej\u0161ie. Zauj\u00edmav\u00e9 je tie\u017e, ak\u00fdm smerom sa moment\u00e1lne uberaj\u00fa. C# v .Nete z\u00edskal nieko\u013ek\u00fdmi posledn\u00fdmi verziami mnoho vlastnost\u00ed, ktor\u00e9 s\u00favisia so slabotypovos\u0165ou alebo funkcion\u00e1lnym programovan\u00edm. U Javy z\u010faleka tak\u00fd posun nenastal, ale ve\u013ea sa deje v tom, aby Java ako platforma mohla hos\u0165ova\u0165 mnoho r\u00f4znych jazykov s r\u00f4znymi vlastnos\u0165ami (Scala, Groovy &#8230;). Tak\u017ee je to jeden rozsiahly jazyk vo\u010di skupine \u0161pecializovan\u00fdch. Uvid\u00edme&#8230;<\/p>","protected":false},"excerpt":{"rendered":"<p>\u00daplne na za\u010diatok mus\u00edm poveda\u0165, \u017ee nem\u00e1m r\u00e1d sv\u00e4t\u00e9 vojny v IT. To s\u00fa tie nekone\u010dn\u00e9 diskusie o tom, ktor\u00fd prehliada\u010d, programovac\u00ed jazyk alebo opera\u010dn\u00fd syst\u00e9m je ten najlep\u0161\u00ed. Nie \u017ee by nemalo zmysel porovn\u00e1va\u0165. Sk\u00f4r nem\u00e1 zmysel h\u013eada\u0165 v\u00ed\u0165aza. Mysl\u00edm si, \u017ee ak\u00fdko\u013evek produkt, ktor\u00fd na trhu vydr\u017eal aspo\u0148 5 rokov, tu m\u00e1 miesto. [&hellip;]<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13],"tags":[],"class_list":["post-55","post","type-post","status-publish","format-standard","hentry","category-vyvoj-softveru"],"_links":{"self":[{"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/posts\/55","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/comments?post=55"}],"version-history":[{"count":1,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/posts\/55\/revisions"}],"predecessor-version":[{"id":182,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/posts\/55\/revisions\/182"}],"wp:attachment":[{"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/media?parent=55"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/categories?post=55"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/tags?post=55"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}