K napsání tohoto záznamu mně inspirovala diskuse, že vývoj jednoduchých webových stránek v Javě je příliš složitý. Chtěl bych tedy ukázat, že i v Javě je to jednoduché
Nechci se pustit do srovnávání jazyků. Chtěl bych jen ukázat, že i Javu lze snadno používat v prostředí, kde tak kraluje PHP – a to je tvorba jednoduchých webových stránek.
Než budete tento návod aplikovat na svůj projekt, přečtěte si Java trpí nedostatkem hostingů. V praxi to znamená, že pro svůj projekt bude náročnější sehnat free hosting. S placenými to již není tak špatné (nicméně jsou stále trošku dražší než ty pro PHP).
Abychom si práci zjednodušili, použijeme Maven. Ten umožňuje jednoduchou správu projektu a snadné generování kostry aplikace.
Stáhněte si Maven 2 pro svojí platformu a nainstalujte jej.
Nyní spusťte příkazový řádek a napište tento příkaz:
mvn archetype:create -DgroupId=cz.softeu.test -DartifactId=test -DarchetypeArtifactId=maven-archetype-webapp
Parametr groupId určuje skupinu projektu – obvykle zde uvádíme doménu firmy. Parametr artifactId je název projektu (a i adresáře). Příkaz vytvoří jednoduchý projekt webového typu.
Vygenerovaný projekt obsahuje tyto soubory/adresáře:
- pom.xml – konfigurace projektu
- src/main/resources – adresář pro tzv. resources (např. konfigurační soubory)
- src/main/webapp/ – adresář, jehož obsah bude přístupný přes web
- src/main/webapp/index.jsp – jednoduchý ukázkový JSP (odpovídá souborům .php)
- src/main/webapp/WEB-INF/ – adresář, kde je konfigurace webové aplikace. Tento adresář má speciální význam a není možné jeho obsah přímo číst z prohlížeče
- src/main/webapp/WEB-INF/web.xml – konfigurace webové aplikace
Pro nás je teď nejdůležitější soubor index.jsp. Ten odpovídá PHP a funguje i obdobným způsobem. Zkusme si tedy webovou aplikaci pustit. K tomu použijeme vlastnosti Mavenu.
Je potřeba upravit soubor pom.xml a přidat do bloku <build/> toto:
<plugins> <plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>maven-jetty-plugin</artifactId> <version>6.0.1</version> </plugin> </plugins>
Nyní již stačí pustit webový server pomocí:
mvn jetty:run
Když teď otevřete v prohlížeči stránku http://localhost:8080/test/ zobrazí se obsah souboru index.jsp. Pokud tento soubor upravíte nebo přidáte další, jeho obsah bude přímo přístupný v prohlížeči i bez jakékoliv kompilace (tedy stejně jako v PHP).
Nyní tedy přichází čas na nějakou tu „dynamičnost“. Přidejte do index.jsp např. toto:
<% for (int i = 0; i < 10; i++) { %> Hello<br/> <% } %>
Pokud by jste chtěli mít pro všechny soubory jednotnou hlavičku, můžete použít příkaz <jsp:include page="WEB-INF/inc/header.jsp"/>. Protože nechceme, aby bylo možné k souboru header.jsp přistupovat přímo, umístili jsme jej do adresáře WEB-INF.
V případě, že by jste teď chtěli celou aplikaci nahrát do „velkého“ serveru (např. tomcat), stačí spustit příkaz mvn package a v adresáři target/ najdete soubor test.war. Ten můžete nainstalovat ke svému poskytovateli.
Jak můžete vidět, je tvorba jednoduchých stránek stejně složitá jako v PHP. Pokud ovšem budete dělat větší projekt, není dobré používat přímo příkazy v JSP (<% %>), ale používat návrhový vzor MVC (Model View Controller). Toto platí stejně i pro PHP, kde se pro tyto účely používají různé šablonovací systémy.
Do této chvíle je použití PHP a Javy téměř identické. Příště si povíme, jak používat komponenty pro tvorbu interaktivních aplikací.
Poznámka: Pokud vás Maven zaujal, přečtěte si přednášku Maven: praktický průvodce.
Zacat seriu clankov o jednoduchosti vyvoja v Jave s Mavenom sa mi nezda prilis stastne. Maven je dost pokrocily a komplikovany nastroj, ktory robi spustu veci a malokto vie akych. Myslim, ze jeho komplikovanost uz prekrocila rizikovy stupen a jeho efektivnost uz je otazna. Uz len stiahnutie a nainstalovanie Mavenu moze byt pre zaciatocnika problem, pretoze Maven pokial viem vyzaduje pristup na internet a v pripade pouzitia proxy je nutne ho nakonfigurovat.
.
Daleko blizsie k PHP by bol postup:
1. stiahne Tomcat.
2. Rozbali sa (nainstaluje)
3. Spusti sa.
4. Ihned si mozem mozerat example stranky, modifikovat ich, vytvarat vlastne. Od tohot okamziku s obycajnymi JSP strankami, som na tom lepsie ako pouzivatel PHP.
Co se týče toho instalování různých věcí, tak na to mám stejný názor. Jsem začátečník a typický Windows-user, který umí něco nainstalovat pouze pomocí nějakého wizarda. Tuhle mi jeden kamarád poradil, ať si stáhnu a nainstaluju Tapestry, že je to fak super věc. Tak sem si řekl, že se na to podívám, ale nainstalovat se mi to nepovedlo :)). Nevěděl jsem moc co to je a už vůbec ne jak to funguje, takže jsem ani netušil, kam to vlastně mám instalovat a jak se to dělá. Nakonec jsem si někde na netu našel návod, ale i když jsem postupoval přesně krok po kroku, stejně se mi to nikdy nepovedlo…
Také si myslím, že jedním problémem Javy je právě instalace a integrace jednotlivých komponent (a že jich je potřeba). Zvlášť když je nutné upravovat build.xml pro Ant (který si také kromě Tomcatu musím stahnout).
A právě v tom hodně pomáhá Maven. Prostě jen „něco“ přidáte do pom.xml a on už se postará o stažení a použití. Samozřejmě Maven nevyřeší vše, např. musím stále editovat web.xml, faces-config.xml, …
Jednou ze zajímavých vlastností Mavenu je i generování kostry projektu.
Zkuste použít např. AndroMDA dle návodu na http://galaxy.andromda.org/index.php?option=com_content&task=view&id=105&Itemid=89
Me se clanek moc libil a doufam, ze autor bude pokracovat i nadale. Tohle je presne to, co tu chybelo: o publikace nebo clanky o php zakopavam vsude mozne, ale o Jave Enterprise lze sehnat jen bud zastarale ci presprilis trivialni veci (nabidka v knihkupectvi) nebo nadmiru odborne (mnohe webove clanky). Nikdo se nestara o programatory na urovni „lehce az stredne pokrocily“. A k tomu Mavenu: pozehnanim a zaroven i prokletim Javy je ohromny vyber vsech moznych (casto open source) nastroju, o kterych se „dotnetarum“ muze nechat jenom zdat. Jestli se nekomu Maven nelibi, at proste napise svuj vlastni clanek o svem oblibenem nastroji a da sem odkaz.
Vetsinou kritizuji, tady u tohohle clanku se taky nevyhnu male kritice. Skutecne si nemyslim, ze technologie zde popsane jsou pro zacatecnika jednoduche. Mozna pro zacatenicka s webem, ktery uz naprogramoval par GUI aplikaci pod javou. Ale pro zacatecnika, ktery jeste ani nezna technologii java, tomu to moc neprospeje.
Nicmene, prilis neverim tomu, ze by nejaky zacatecnik tenhle blog cetl. Takze vzhledem k ctenarum, prinasi nove informace srozumitelnou formou. Myslim, ze jetty + maven je dobre reseni a minimalne je to prvni vlastovka o zamene Tomcata za Jettyho. Taky se na to chystam a tenhle clanek mi snad pomuze.
Takze mozna zmenou cilove skupiny by jste Vas clanek dovedl k dokonalosti.
Clanek se mi libil. Jen jeden dotaz, kde jste prisli na to ze maven je pro zacatecniky? Ja bych ho tam zaradil. Ale nikde jsem v clanku nenasel ze to je postup pro zacatecnika. (mozna jsem prehledl) 🙂
Maven je super a kdyz se s nim clovek nauci delat hodne mu to ulehci praci.
Prave se mi podarilo rozbehnout tento test projekt. Protoze jsem jen programator na urovni “lehce az stredne pokrocily” mel jsem docela potize s proxy serverem (uvodni nastaveni mavenu). Podelim se o sve poznatky:
Pokud mate take http proxy server (treba firma), pred tim, nez udelate kroky uvedene v tomto clanku je asi dobre udelat toto:
1. spustit proxy SW (v mem pripade ntImaps, google hledej: NTLM authorization proxy server)
2. v systemovych promennych vytvorit novou promennou HTTP_PROXY napr.: http://localhost:8000 (asi port pro prihlasovani) —mozna bude treba restart PC
3. v mavenu odkomentovat v settings.xml cast s proxies a vyplnit podle proxy serveru
zni to strasidelne, ale za vysledek to stoji, maven je genialni :o) vse potrebne si postahuje a odpadne tim pak hromada prace. jen tak dal. J2EE nesmirne potrebuje zjednoduseni uvodnich instalaci a konfiguraci!
Peknej clanek, jen tak dal. S tim jestli je maven dobrej pro zacatecniky nevim. Web-java nebo EE java (nebo jak to nazvat) ma celkem strmou „learning curve“, a na to aby clovek zacal je potreba si hodne frameworku/toolu projit a naucit se s nima delat, aby pak clovek treba zjistil ze je nepotrebuje, protoze je tu neco lepsiho (viz Ant vs. Maven).
Jinym problemem jsou navody, tutorialy. Narazil jsem na to treba kdyz jsem se chtel naucit neco o JSF. Ja sam jsem JSP preskocil, nikdy jsem v tom nedelal a rovnou jsem skocil do MVC sveta. Bohuzel vetsina tutorialu na JSF byla napsana stylem „to co jste delali v JSP takhle, se v JSF dela takhle“. Tak jsem si rek ze se naucim neco o JSP, ale bohuzel tutorialy byly bud silene zastaraly, nebo zacinaly „v JSP uz nikdo nedela, delejte s JSF nebo MVC-neco“, coz nepotesilo, ucit se neco co je zastaraly, abych na zaklade toho moh ucit neco jinyho.
Proto ocenuju tvoji snahu ukazovat zacatecnikum primou cestu k Mavenu, bez mezikroku jmenem Ant (i kdyz Antu se asi pozdeji nevyhnou, da se s nim skriptovat uvnitr Mavena).
Nesouhlsasim s tim, ze pro zacatecniky je toho malo. Pouze to je v jednom vydani. Kdezto v PHP mate milion opakujicich se serialu, ale zase pak nejste shcopen najit nic pokrocileho, protoze proste toho zacatecnickeho blaboleni je vsude tolik, ze to cokoli dalsiho prehlusi.
Ahoj, pěkný článek. Takový akorát pro první přiťuknutí. Jen se přiznám, že ten maven mi rovněž nesedl. Myslím, že v Jave se řadím mezi pokročilejší programátory, ale toto řešení mne trochu zarazilo. Když jsem s Javou začínal, šíleně mne unavovalo prvotní všemožné nastavování buď IDE nebo všemožných proměnných „abych to vůbec pustil“. Dnes se to zdá jako prkotina, ale pro začátečníka, který chce většinou rovnou vidět „co to dělá“ je to komplikované. Mohu jen doporučit NetBeans. Založit a spustit Web projekt buď jen s užitím JSP, nebo i JSF/Struts, EEJB… je otázkou několika kliknutí. NB spustí tomcat, nasadí aplikaci a otevřou browser s výsledkem – myslím, že začátečník si nemůže více přát :-)…Jinak jen tak dál.
Ja sa tiez prihovaram za NetBeans. Stiahnut sa da zadarmo z adresy http://www.netbeans.org. NetBeans integruje vsetky mozne funkcie a bez neho by bol vyvoj Javovych aplikacii omnoho tazsi.
V JSP som zaciatocnik a uvedeny clanok ma zaujal a rozhodne je poucny.
Maven vyzera byt zaujimava vecicka, ale nakolko sa uz par dni hram s NetBeans, naozaj sa to da velmi jednoducho urobit v NetBeans.
Pre tych, ktori by to ale predsa chceli skusit s Mavenom mam nasledujucich par rad:
1. Maven mi isiel stiahnut bez problemov z uvedenej stranky. Stiahol som si jeho ZIP verziu a potom som si ju jednoducho rozzipoval do akehokolvek podadresara. Nic som neinstaloval.
2. Otvoril som si dialogovy riadok a zadal som uvedenu linku. Jediny problem bol v tom, ze ma system upozornil, ze nemam nastavenu premennu „java_home“ (urobite tak prikazom DOSu „set java_home=…“
3. Mam pre vas jeden zlepsovak: priamo v adresari mavenbin si vytvorte BAT subor s nasledujucim kodom:
cls
set java_home=c:Program Filesjavajdk1.6.0 (aktualna cesta k JDK adresaru)
mvn archetype:create -DgroupId=cz.softeu.test -DartifactId=test -DarchetypeArtifactId=maven-archetype-webapp
-koniec suboru
Potom staci uz len spustit tento bat subor.
Ale inak sa naozaj prihovaram skor za NetBeans, prip. iny GUI nastroj.