{"id":65,"date":"2014-07-20T13:39:45","date_gmt":"2014-07-20T11:39:45","guid":{"rendered":""},"modified":"2018-09-17T21:54:07","modified_gmt":"2018-09-17T19:54:07","slug":"javaee-netbeans-a-glassfish","status":"publish","type":"post","link":"https:\/\/spireng.sk\/en\/javaee-netbeans-a-glassfish\/","title":{"rendered":"JavaEE, Netbeans a Glassfish"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"imgp_img\" style=\"float: left; margin: 2px 5px;\" src=\"\/sites\/default\/files\/imagepicker\/1\/sfasa456ds.jpg\" alt=\"Obr\u00e1zok\" width=\"200\" height=\"215\" \/>JavaEE (Enterprise Edition) je jednou z ed\u00edci\u00ed Java platformy. Ako u\u017e n\u00e1zov predpoved\u00e1, je ur\u010den\u00e1 do enterprise prostredia. Pre tento moment si dovol\u00edm laick\u00fa defin\u00edciu, \u017ee je to prostredie informa\u010dn\u00fdch syst\u00e9mov a obchodn\u00fdch procesov, kde je potrebn\u00fd vysok\u00fd stupe\u0148 schopnosti aplik\u00e1cie integrova\u0165 sa s in\u00fdmi syst\u00e9mami. Ak je moja defin\u00edcia spr\u00e1vna, tak si mysl\u00edm, \u017ee JavaEE m\u00e1 v\u0161etky potrebn\u00e9 n\u00e1stroje, aby v tomto prostred\u00ed pre\u017eila. Kniha <a href=\"http:\/\/www.bookdepository.com\/Java-EE-6-Development-with-NetBeans-7-David-Heffelfinger\/9781849512701\">Java EE 6 Development with NetBeans 7<\/a> od Davida R. Heffelfingera je celkom dobr\u00fdm preh\u013eadom t\u00fdchto n\u00e1strojov.<!--more--><!--break--><\/p>\n<p>Ak s JavaEE za\u010d\u00ednate bez predch\u00e1dzaj\u00facich sk\u00fasenost\u00ed, je celkom mo\u017en\u00e9, \u017ee naraz\u00edte na server Glassfish a v\u00fdvojov\u00e9 prostredie NetBeans. To prv\u00e9 predstavuje referen\u010dn\u00fa implement\u00e1ciu javovsk\u00fdch \u0161pecifik\u00e1ci\u00ed priamo do Oraclu. To druh\u00e9 je preferovan\u00e9 v\u00fdvojov\u00e9 prostredie pre Javu tie\u017e dod\u00e1van\u00e9 priamo Oraclom (mimochodom, p\u00f4vodn\u00fd v\u00fdvoj za\u010dal v \u010ceskej republike). Nie je preto divu, \u017ee si autor vybral pr\u00e1ve tieto prostriedky na popis v\u00fdvoja pre JavaEE.<\/p>\n<p>JavaEE nie je mlad\u00e1 ed\u00edcia a po \u010dase u\u017e naozaj obsahuje v\u0161etko, \u010do enterprise aplik\u00e1cia potrebuje:<\/p>\n<ul>\n<li>Java Server Pages (JSP) a Java Server Faces (JSF) pre interakciu syst\u00e9mu s \u013eudmi vo forme web str\u00e1nok<\/li>\n<li>Java Persistence Api (JPA) pre komunik\u00e1ciu s r\u00f4znymi datab\u00e1zov\u00fdmi backendami<\/li>\n<li>Enterprise Java Beans (EJB) pre zap\u00fazdrenie obchodnej logiky v aplik\u00e1cii do spravovate\u013en\u00fdch jednotiek<\/li>\n<li>Context and Dependency Injection (CDI) pre vytv\u00e1ranie v\u00e4zieb v aplik\u00e1cii (aj mimo nej) bez p\u00edsania priamych odkazov na triedy a \u0161pagetov\u00e9ho k\u00f3du (teda na z\u00e1klade princ\u00edpov slabej v\u00e4zby)<\/li>\n<li>Java Api for XML Web Services (JAX-WS) a Java Api for RESTful Web Services (JAX-RS) pre komunik\u00e1ciu s in\u00fdmi syst\u00e9mami<\/li>\n<li>Java Message Service Api (JMS) pre asynchr\u00f3nnu komunik\u00e1ciu<\/li>\n<\/ul>\n<p>JavaEE obsahuje aj \u010fal\u0161ie \u0161pecifik\u00e1cie a toto je len stru\u010dn\u00fd zoznam t\u00fdch najd\u00f4le\u017eitej\u0161\u00edch, ktor\u00fdm sa venuje kniha.<\/p>\n<p>JSP predstavuje sp\u00f4sob, ako pomocou tagov vklada\u0165 do HTML k\u00f3du r\u00f4znu logiku a vytv\u00e1ra\u0165 tak dynamick\u00e9 web str\u00e1nky generovan\u00e9 na serveri. Okrem z\u00e1kladn\u00fdch tagov je mo\u017en\u00e9 pou\u017ei\u0165 aj r\u00f4zne roz\u0161\u00edrenia: definova\u0165 rozhodovanie a opakovacie programov\u00e9 kon\u0161trukcie (c:if, c:choose, c:forEach) alebo pr\u00e1cu s datab\u00e1zou (sql:query, sql:update). Tieto roz\u0161\u00edruj\u00face tagy s\u00fa s\u00fa\u010das\u0165ou JSP Standard Tag Library (JSTL) a tie\u017e je mo\u017en\u00e9 si dodefinova\u0165 vlastn\u00e9 tagy.<\/p>\n<p>JSF je nov\u00e1 gener\u00e1cia web rozhrania pre JavaEE. V podstate je to framework, ktor\u00fd sa d\u00e1 pou\u017ei\u0165 aj inde ako pri web rozhran\u00ed, ale pr\u00e1ve to je jeho naj\u010dastej\u0161ie pou\u017eitie. Pou\u017e\u00edva tie\u017e tagy, ale tie\u017e tzv. JSF Managed Bean na runtime uchov\u00e1vanie zadan\u00fdch \u00fadajov. Okrem toho je mo\u017en\u00e9 napr\u00edklad vytv\u00e1ra\u0165 \u0161abl\u00f3ny a tie potom aplikova\u0165 na viacero str\u00e1nok naraz. Tie\u017e existuje podpora vo forme Prime Faces, \u010do je mno\u017eina komponentov pre JSF.<\/p>\n<p>JPA je \u0161pecifik\u00e1cia umo\u017e\u0148uj\u00faca jednotn\u00fd pr\u00edstup k r\u00f4znym datab\u00e1zam. Je to v podstate \u0161tandardizovan\u00e9 object-relation mapping (ORM) pre Javu. D\u00e1tov\u00e9 objekty (Java Beans) sa oanotuj\u00fa a o ich ukladanie sa star\u00e1 entity mana\u017e\u00e9r. JPA m\u00e1 \u0161peci\u00e1lnu podporu v NetBeans, ktor\u00fd dok\u00e1\u017ee vygenerova\u0165 d\u00e1tov\u00e9 oanotovan\u00e9 objekty zo SQL dotazov na vytvorenie datab\u00e1zy.<\/p>\n<p>EJB umo\u017e\u0148uje zapuzdrova\u0165 logiku do samostatn\u00fdch komponentov, a tieto medzi sebou navz\u00e1jom prep\u00e1ja\u0165. S EJB \u00fazko s\u00favisia transakcie, preto\u017ee je mo\u017en\u00e9 definova\u0165, \u017ee oper\u00e1cie EJB sa bud\u00fa vykon\u00e1va\u0165 v transakcii (a teda cel\u00fd proces zahr\u0148uj\u00faci viacero EJB by mal by\u0165 atomick\u00fd \u2013 okrem in\u00e9ho). S transakciami s\u00favis\u00ed aspektovo orientovan\u00e9 programovanie, ktor\u00e9 umo\u017e\u0148uje vyv\u00edja\u0165 r\u00f4zne aspekty programu (transakcie, logovanie) nez\u00e1visle od seba, a potom to automaticky spoji\u0165. Aj pre aspektovo orientovan\u00e9 programovanie ma EJB podporu.<\/p>\n<p>CDI je \u0161pecifik\u00e1cia implementuj\u00faca Dependency Injection (DI) vzor. V\u010faka nemu m\u00f4\u017ee jeden objekt z\u00edskava\u0165 odkazy na objekty implementuj\u00face r\u00f4zne rozhrania bez nejak\u00e9ho k\u00f3du, ktor\u00fd by napevno ur\u010doval, ak\u00e9 a odkia\u013e presne bud\u00fa tieto objekty z\u00edskan\u00e9. To umo\u017e\u0148uje udr\u017eiava\u0165 v aplik\u00e1cii slab\u00e9 v\u00e4zby a zabezpe\u010dova\u0165 tak jej flexibitlitu. DI je tie\u017e obsiahnut\u00fd v JSF a EJB, ale v CDI je mo\u017en\u00e9 omnoho podrobnej\u0161ie \u0161pecifikova\u0165 vlastnosti objektu, ktor\u00fd m\u00e1 by\u0165 z\u00edskan\u00fd.<\/p>\n<p>JAX-WS a JAX-RS s\u00fa dve \u0161pecifik\u00e1cie, ktor\u00e9 sl\u00fa\u017eia na vytv\u00e1ranie sie\u0165ov\u00fdch slu\u017eieb. JAX-WS na tvorbu star\u0161\u00edch SOAP sie\u0165ov\u00fdch slu\u017eieb. JAX-RS na tvorbu nov\u0161\u00edch REST sie\u0165ov\u00fdch slu\u017eieb. V oboch pr\u00edpadoch ide o to, \u017ee objekt aj s met\u00f3dami sa spr\u00e1vne oanotuje o ostatn\u00e9 sa u\u017e mus\u00ed postara\u0165 JavaEE server. NetBeans tie\u017e umo\u017e\u0148uje generova\u0165 klientsk\u00e9 proxy pre oba typy slu\u017eieb, ktor\u00e9 zjednodu\u0161uje ich pou\u017e\u00edvanie na strane klienta.<\/p>\n<p>JMS je \u0161pecifik\u00e1cia na asynchr\u00f3nnu komunik\u00e1ciu pomocou spr\u00e1v. M\u00e1 dva hlavn\u00e9 re\u017eimy: point-to-point a publish\/subscribe. Ten prv\u00fd znamen\u00e1 komunik\u00e1ciu dvoch objektov, ten druh\u00fd zase hromadn\u00fa notifik\u00e1ciu viacer\u00fdch objektov pomocou spr\u00e1v.<\/p>\n<p>Toto je stru\u010dn\u00fd popis \u0161pecifik\u00e1ci\u00ed, ktor\u00fdm sa kniha venuje hlb\u0161ie. Ke\u010f\u017ee ka\u017ed\u00e1 z nich je dostato\u010dne rozsiahla, aby si zasl\u00fa\u017eila knihu vlastn\u00fa (a v\u00e4\u010d\u0161ina z nich, ak nie v\u0161etk\u00fdch, aj tak\u00e9to knihy maj\u00fa), obsahuje Davidova kniha len \u00favod pre ka\u017ed\u00fa z nich. Tento \u00favod je ale vo v\u0161etk\u00fdch pr\u00edpadoch zakon\u010den\u00fd nejak\u00fdm funguj\u00facim pr\u00edkladom, ktor\u00fd umo\u017en\u00ed z\u00edska\u0165 aspo\u0148 predstavu, ako to v\u0161etko funguje. A ke\u010f\u017ee v\u0161etky pou\u017eit\u00e9 n\u00e1stroje s\u00fa zadarmo, tak je ve\u013emi jednoduch\u00e9 si JavaEE aj otestova\u0165 v praxi.<\/p>","protected":false},"excerpt":{"rendered":"<p>JavaEE (Enterprise Edition) je jednou z ed\u00edci\u00ed Java platformy. Ako u\u017e n\u00e1zov predpoved\u00e1, je ur\u010den\u00e1 do enterprise prostredia. Pre tento moment si dovol\u00edm laick\u00fa defin\u00edciu, \u017ee je to prostredie informa\u010dn\u00fdch syst\u00e9mov a obchodn\u00fdch procesov, kde je potrebn\u00fd vysok\u00fd stupe\u0148 schopnosti aplik\u00e1cie integrova\u0165 sa s in\u00fdmi syst\u00e9mami. Ak je moja defin\u00edcia spr\u00e1vna, tak si mysl\u00edm, \u017ee [&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-65","post","type-post","status-publish","format-standard","hentry","category-vyvoj-softveru"],"_links":{"self":[{"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/posts\/65","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=65"}],"version-history":[{"count":1,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/posts\/65\/revisions"}],"predecessor-version":[{"id":170,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/posts\/65\/revisions\/170"}],"wp:attachment":[{"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/media?parent=65"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/categories?post=65"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/tags?post=65"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}