{"id":58,"date":"2014-01-12T09:45:11","date_gmt":"2014-01-12T08:45:11","guid":{"rendered":""},"modified":"2018-09-17T21:54:39","modified_gmt":"2018-09-17T19:54:39","slug":"google-web-toolkit-alebo-web-v-jave","status":"publish","type":"post","link":"http:\/\/spireng.sk\/en\/google-web-toolkit-alebo-web-v-jave\/","title":{"rendered":"Google Web Toolkit alebo web v Jave"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"imgp_img\" style=\"float: left; margin: 2px 5px;\" src=\"\/sites\/default\/files\/imagepicker\/1\/sasdsa.png\" alt=\"Obr\u00e1zok\" width=\"200\" height=\"188\" \/>Pam\u00e4t\u00e1m si \u010dasy, ke\u010f bol JavaScript zatracovan\u00fdm jazykom. Internet bol pln\u00fd reklamn\u00fdch bannerov s pre\u010diarknut\u00fdm hadom a sloganmi o tom, \u017ee JavaScript je \u0161kodliv\u00fd. Dnes je to inak, webov\u00e9 prostredie valcuje to klasick\u00e9 sp\u00fa\u0161\u0165an\u00e9 v opera\u010dnom syst\u00e9me. Internetov\u00e9 prehliada\u010de u\u017e nie s\u00fa prehliada\u010de dokumentov, ale behov\u00e1 platforma pre \u010doraz bohat\u0161ie aplik\u00e1cie a model pluginov, ktor\u00fd bol 5 rokov dozadu na v\u00fdsln\u00ed, je pomaly ub\u00edjan\u00fd r\u00f4znorodos\u0165ou zariaden\u00ed a opera\u010dn\u00fdch syst\u00e9mov, s ktor\u00fdmi sa teraz d\u00e1 na internet dosta\u0165. <!--more--><!--break--><\/p>\n<p>Je tu HTML5 a &#8230; JavaScript. <span style=\"background: transparent;\">\u010co ale s t\u00fdm mno\u017estvom v\u00fdvoj\u00e1rov desktopov\u00fdch aplik\u00e1ci\u00ed<\/span>, ktor\u00ed by mali zrazu za\u010da\u0165 p\u00edsa\u0165 weby. Jednou mo\u017enos\u0165ou je za\u0161koli\u0165 ich na JavaScript. Tou druhou je necha\u0165 ich p\u00edsa\u0165 v ich jazyku a v\u00fdsledok ich pr\u00e1ce preklada\u0165 do JavaScriptu. A pr\u00e1ve na tak\u00fdto pr\u00edpad vyu\u017eitia Javy je tu Google Web Toolkit alebo GWT.<\/p>\n<p>Pochopenie GWT je o pochopen\u00ed hlavn\u00e9ho \u00fa\u010delu GWT a t\u00fdm je preklad. Ve\u013ea z nastaven\u00ed a n\u00e1strojov, ktor\u00e9 GWT obsahuje sa t\u00fdka pr\u00e1ve toho magick\u00e9ho kroku premeny Java k\u00f3du na JavaScript k\u00f3d. Prechod na JavaScript ale nie je jedinou v\u00fdhodou, ktorou sa m\u00f4\u017ee GWT pochv\u00e1li\u0165. Ve\u013ea d\u00f4razu bolo kladen\u00e9 na vyrovnanie sa v r\u00f4znorod\u00fdm a nie pr\u00edli\u0161 \u0161tandardizovan\u00fdm prostred\u00edm prehliada\u010dov (nie \u017ee by \u0161tandardy neexistovali, ale niekedy si ich ka\u017ed\u00fd implement\u00e1tor vysvet\u013euje po svojom). Tvorcovia GWT hrdo tvrdia, \u017ee na seba ber\u00fa bremeno toho, aby ste mohli p\u00edsa\u0165 jeden k\u00f3d, ktor\u00fd be\u017e\u00ed v r\u00f4znych prehliada\u010doch.<\/p>\n<p>Ako teda tak\u00e1 GWT aplik\u00e1cia vyzer\u00e1? Najjednoduch\u0161ia mo\u017en\u00e1 verzia obsahuje 3 s\u00fabory:<\/p>\n<ol>\n<li><em>Html<\/em> \u2013 prestavuje html str\u00e1nku, ku ktorej je na pozad\u00ed pridan\u00fd k\u00f3d. M\u00f4\u017ee by\u0165 \u00faplne jednoduch\u00e1 a prvky do nej s\u00fa pridan\u00e9 nesk\u00f4r pomocou k\u00f3du.<\/li>\n<li><em>Java<\/em> \u2013 tu ide java k\u00f3d, ktor\u00fd sa bude preklada\u0165 do JavaScriptu<\/li>\n<li><em>.gwt.xml<\/em> \u2013 konfigura\u010dn\u00fd s\u00fabor pre GWT modul<\/li>\n<\/ol>\n<p>GWT pou\u017e\u00edva koncept modulov na logick\u00e9 rozdelenie k\u00f3du. Modul si viete predstavi\u0165 ako mno\u017einu Java k\u00f3du (fyzick\u00fd m\u00f4\u017ee by\u0165 rozmiestnen\u00fd \u013eubovo\u013ene \u2013 v konfigura\u010dnom s\u00fabore s\u00fa na neho uveden\u00e9 len odkazy) a mno\u017einu nastaven\u00ed pre tento modul. GWT potom pri preklade vezme inform\u00e1cie v tomto module a urob\u00ed preklad. V\u00fdsledkom tak\u00e9ho prekladu je potom mno\u017eina html a JavaScript s\u00faborov (pr\u00edpadne obr\u00e1zkov a in\u00fdch s\u00faborov s d\u00e1tami).<\/p>\n<p>GWT m\u00e1 v logu kufr\u00edk s n\u00e1rad\u00edm. A je to celkom v\u00fdsti\u017en\u00e9, lebo okrem z\u00e1kladn\u00e9ho prekladu pon\u00faka aj sadu n\u00e1strojov\/techn\u00edk, ktor\u00e9 vedia by\u0165 v ur\u010dit\u00fdch situ\u00e1ci\u00e1ch u\u017eito\u010dn\u00e9. To je ich stru\u010dn\u00fd preh\u013ead:<\/p>\n<ol>\n<li><em>Widgety\/Panely<\/em> \u2013 predstavuj\u00fa hotov\u00e9 UI prvky, pomocou ktor\u00fdch viete tvori\u0165 str\u00e1nku bez priamej manipul\u00e1cie s DOM. <span style=\"background: transparent;\">Dok\u00e1\u017eu sa do seba vn\u00e1ra\u0165, podporuj\u00fa <\/span>notifik\u00e1ciu pomocou udalost\u00ed a samozrejme je mo\u017en\u00e9 prisp\u00f4sobova\u0165 ich vzh\u013ead.<\/li>\n<li><em>Client Bundle<\/em> \u2013 je to n\u00e1stroj na efekt\u00edvne pren\u00e1\u0161anie \u00fadajov (ako obr\u00e1zky, texty) na klienta. GWT dok\u00e1\u017ee samo vybra\u0165 najvhodnej\u0161\u00ed sp\u00f4sob ako zabezpe\u010di\u0165 efekt\u00edvny presun.<\/li>\n<li><em>UIBinder<\/em> \u2013 okrem tvorby \u0161trukt\u00fary str\u00e1nky procedur\u00e1lnym postupom v k\u00f3de je mo\u017en\u00e9 ju definova\u0165 pomocou XML jazyka. GWT potom na z\u00e1klade popisu posklad\u00e1 potrebn\u00e9 widgety, z ktor\u00fdch je vygenerovan\u00fd DOM. Nech\u00fdba v\u00fdpomoc v podobe automatick\u00e9ho mapovania hodn\u00f4t widgetov na premenn\u00e9 v k\u00f3de (s mo\u017enos\u0165ou p\u00edsa\u0165 jednoduch\u00e9 v\u00fdrazy s viacer\u00fdmi premenn\u00fdmi).<\/li>\n<li><em>GWT-RPC a Request-Factory <\/em>\u2013 s\u00fa to n\u00e1stroje, ktor\u00e9 r\u00f4znym sp\u00f4sobom umo\u017e\u0148uj\u00fa pren\u00e1\u0161a\u0165 \u00fadaje (dom\u00e9nov\u00e9 objekty) cez sie\u0165. Obe maj\u00fa r\u00f4zne vlastnosti, a teda svoje v\u00fdhody a nev\u00fdhody. Je to tie\u017e jedin\u00fd pr\u00edpad, kedy \u010das\u0165 GWT k\u00f3du ost\u00e1va ako java k\u00f3d na strane servera.<\/li>\n<li><em>Editor-Framework<\/em> \u2013 umo\u017e\u0148uje mapova\u0165 widgety priamo na javovsk\u00e9 objekty.<\/li>\n<li><em>Data-Presentation (Cell) Widget<\/em> \u2013 \u0161peci\u00e1lna skupina widgetov ur\u010den\u00e1 na zobrazovanie ve\u013ek\u00e9ho mno\u017estva \u00fadajov.<\/li>\n<li><em>JSNI \u2013 JavaScript Native Interface<\/em> \u2013 umo\u017e\u0148uje \u010dasti k\u00f3du p\u00edsa\u0165 v JavaScripte, ktor\u00fd sa u\u017e nepreklad\u00e1, ale len skop\u00edruje na spr\u00e1vne miesto. Pou\u017e\u00edva sa napr\u00edklad pri volan\u00ed JavaScript kni\u017en\u00edc alebo pri n\u00edzko-\u00farov\u0148ovej pr\u00e1ci s prehliada\u010dom.<\/li>\n<li><em>Lokaliz\u00e1cie<\/em> \u2013 obsahuje v sebe 3 \u010dasti a to: internationalization (preklad rozhrania), localization (zmena form\u00e1tu d\u00e1tumu, \u010d\u00edsel at\u010f. pod\u013ea \u0161tandardov krajiny) a accesibility (\u00faprava webu pre slabo vidiacich)<\/li>\n<li><em>Event Bus<\/em> \u2013 zbernica udalost\u00ed naprie\u010d celou GWT aplik\u00e1ciou, ktor\u00e1 umo\u017e\u0148uje slabov\u00e4zobn\u00fa komunik\u00e1ciu jej \u010dast\u00ed<\/li>\n<li><em>GIN Framework<\/em> \u2013 Dependency Injection framework pre GWT<\/li>\n<li><em>Defered Binding a gener\u00e1tory<\/em> \u2013 n\u00e1ro\u010dnej\u0161ie n\u00e1stroje, ktor\u00e9 umo\u017e\u0148uj\u00fa vytv\u00e1ra\u0165 viacero verzi\u00ed JavaScriptu ur\u010den\u00e9 pre r\u00f4zne pr\u00edpady pou\u017eitia (r\u00f4zne prehliada\u010de, podmienky spustenia prehliada\u010da at\u010f.)<\/li>\n<\/ol>\n<p>Google Web Toolkit nevzniklo n\u00e1hodou. Existuje ve\u013ek\u00e1 disproporcia medzi stavom vedomost\u00ed na strane v\u00fdvoj\u00e1rov a po\u017eiadavkami trhu. Web expanduje a vy\u017eaduje si \u010doraz viac programovania pre prehliada\u010de. Na druhej strane mnoho v\u00fdvoj\u00e1rov nie je ochotn\u00fdch opusti\u0165 svoj programovac\u00ed jazyk\/platformu. A preto do tejto trhliny u\u017e 7 rokov miery GWT. A aj tento vek mus\u00ed by\u0165 d\u00f4kazom \u017ee to, \u010do pon\u00faka, je naozaj pou\u017eite\u013en\u00e9.<\/p>","protected":false},"excerpt":{"rendered":"<p>Pam\u00e4t\u00e1m si \u010dasy, ke\u010f bol JavaScript zatracovan\u00fdm jazykom. Internet bol pln\u00fd reklamn\u00fdch bannerov s pre\u010diarknut\u00fdm hadom a sloganmi o tom, \u017ee JavaScript je \u0161kodliv\u00fd. Dnes je to inak, webov\u00e9 prostredie valcuje to klasick\u00e9 sp\u00fa\u0161\u0165an\u00e9 v opera\u010dnom syst\u00e9me. Internetov\u00e9 prehliada\u010de u\u017e nie s\u00fa prehliada\u010de dokumentov, ale behov\u00e1 platforma pre \u010doraz bohat\u0161ie aplik\u00e1cie a model pluginov, ktor\u00fd [&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-58","post","type-post","status-publish","format-standard","hentry","category-vyvoj-softveru"],"_links":{"self":[{"href":"http:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/posts\/58","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/comments?post=58"}],"version-history":[{"count":1,"href":"http:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/posts\/58\/revisions"}],"predecessor-version":[{"id":178,"href":"http:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/posts\/58\/revisions\/178"}],"wp:attachment":[{"href":"http:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/media?parent=58"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/categories?post=58"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/tags?post=58"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}