19. dubna 2009

Java Web Start vs. "normální" web

Minulý týden jsem se snažil napsat porovnání technologie Java Web Start s "normálními" webovými technologie jako jsou JSP, JSF, Velocity atd. Nešlo mi tedy o konkrétní webovou technologii, jako spíše o porovnání dvou světů.

Porovnání bylo pro mého kamaráda, který by rád určitou aplikaci a má představu, že JWS by mohlo být to pravé. Já sám se mu snažím nějak vysvětlit, že přeci jen "lehké" webové technologie jsou lepší. Ještě také dodám, že cílová aplikace bude interní resp. intranetová aplikace s max. počtem uživatelů okolo padesáti, určená pro správu několika registrů.

Web

  • + máme znalosti pro vývoj webových aplikací, HTML, CSS umí skoro každý
  • + lépe se bude navrhovat design
  • + spoustu věcí jsme již řešili, takže celkem významná znovupoužitelnost kódu a řešených problémů
  • + webový prohlížeč je snad na každém počítači, min. nároky na výkon počítače
  • + ovládání prohlížeče je běžná záležitost => pokud vytvoříme "standardní" webovou aplikaci, tak by běžný uživatel neměl mít problém
  • + lehce spravovatelná aplikace z pohledu nasazování nových verzí
  • + na jednotlivé stránky lze odkazovat a tyto odkazy se mohou posílat mezi uživateli
  • + dnes je jednoznačný trend přesunu aplikací do webového prohlížeče (např. Google Docs). Pomocí webových technologií lze dnes vlastně udělat aplikaci, která bude vypadat stejně a chovat se stejně jako desktopová aplikace.
  • - webové aplikace jsou bezstavové, takže nelze vytvářet (jednoduše) věci jako v desktopové aplikaci, navíc webové prostředí má své běžné problémy (návrat na předchozí stránku, refresh stránek po odeslání formuláře apod.). Vše lze ale nějak řešit.

Java Web Start

  • + centrálně spravovaná desktopová aplikace spouštěná přes JNLP (HTTP) protokol - je možné si např. dát odkaz na plochu počítače
  • - vývoj desktopové aplikace je složitější, navíc s ním nemáme moc zkušeností => vývoj bude nákladnější
  • - u JWS musím řešit navíc komunikaci klienta a serveru (pokud tedy bude oddělena logika a vlastní vzhled aplikace). Toto není u "normální" webové aplikace potřeba.
  • - při prvním spuštění nebo při nové verzi je vždy potřeba stáhnout celou aplikaci, takže to chvíli trvá dle rychlosti připojení k internetu
  • - uživatelé chtějí data na webu, takže je potřeba mít jednu aplikaci na správu dat a pak jinou aplikaci na její prezentaci, což je neefektivní a nakonec i daleko dražší z pohledu vývoje

Budu rád, pokud mě doplníte nebo v něčem opravíte...

10 komentářů:

xpj řekl(a)...

U JWS je možné použít protokol, který je verzovaný, takže poprvé ano, stáhne se celá aplikace a pak se již stahují jen změněné knihovny (viz. http://java.sun.com/j2se/1.5.0/docs/guide/javaws/developersguide/downloadservletguide.html#examples).

Co se komunikace mezi klientem a serverem týče, je možné použít framework jako např. Spring, používáme to a funguje to stejně jako u "čistých" web aplikací.

Indian řekl(a)...

Ahoj,

no ja si myslim, ze srovnavat vyvoj webovych aplikaci a JWS je mozna trochu nesikovne. Vzdyt webovky jsou klient (takze HTML, CSS atd) kdezto JWS v zakladu cista Java. Server je jedno, pripojit se da k ruznym serverum a to jak z web aplikace tak JWS. Takze nektere srovnani a +- bodu neni uplne nejvhodnejsi. Viz nize (a podotykam, ze je to jen ma osobni zkusenost)

* + máme znalosti pro vývoj webových aplikací, HTML, CSS umí skoro každý

ANO

* + lépe se bude navrhovat design

Nemusi byt, vzdyt udelat jednotny styl uz jen pro IE a Firefox je nekdy problem.

* + spoustu věcí jsme již řešili, takže celkem významná znovupoužitelnost kódu a řešených problémů

Zalezi na situaci, podobne jako u predchoziho bodu.


* + webový prohlížeč je snad na každém počítači, min. nároky na výkon počítače

Souhlas

* + ovládání prohlížeče je běžná záležitost => pokud vytvoříme "standardní" webovou aplikaci, tak by běžný uživatel neměl mít problém

Nejspis jo.

* + lehce spravovatelná aplikace z pohledu nasazování nových verzí

Resi i JWS. Souhlas s predchozim komentarem uzivatele xpj .

* + na jednotlivé stránky lze odkazovat a tyto odkazy se mohou posílat mezi uživateli

Odkaz na JNLP deskriptor lze take sdilet. Dokonce jde zabalit do JSP stranky tak, aby sla nacist i URL ze ktere je aplikace spustena.

* + dnes je jednoznačný trend přesunu aplikací do webového prohlížeče (např. Google Docs). Pomocí webových technologií lze dnes vlastně udělat aplikaci, která bude vypadat stejně a chovat se stejně jako desktopová aplikace.

Ano, tady jen poznamka ze tyto aplikace jsou casto nahrazovany pojmem RIA aplikace a technologie.

* - webové aplikace jsou bezstavové, takže nelze vytvářet (jednoduše) věci jako v desktopové aplikaci, navíc webové prostředí má své běžné problémy (návrat na předchozí stránku, refresh stránek po odeslání formuláře apod.). Vše lze ale nějak řešit.


Java Web Start

* + centrálně spravovaná desktopová aplikace spouštěná přes JNLP (HTTP) protokol - je možné si např. dát odkaz na plochu počítače
* - vývoj desktopové aplikace je složitější, navíc s ním nemáme moc zkušeností => vývoj bude nákladnější

Napsat JNLP je asi stejne tak casove narocne, jako vytvorit CSS pro dva az tri ruzne prohlizece :-) Jde o to, ze JWS se "nepise", je to jen mechanizmus jak spustit klienta.

* - u JWS musím řešit navíc komunikaci klienta a serveru (pokud tedy bude oddělena logika a vlastní vzhled aplikace). Toto není u "normální" webové aplikace potřeba.

To ano, ale pokud je rozlozeni DB, servisni vrstva a view, tak to neni problem.

* - při prvním spuštění nebo při nové verzi je vždy potřeba stáhnout celou aplikaci, takže to chvíli trvá dle rychlosti připojení k internetu

Ne uplne, viz komentar xpj.

* - uživatelé chtějí data na webu, takže je potřeba mít jednu aplikaci na správu dat a pak jinou aplikaci na její prezentaci, což je neefektivní a nakonec i daleko dražší z pohledu vývoje

Pokud je dobre rozvrzena struktura aplikace, misto Java klienta je napsano akorat jine view (webovy klient).



Zkusil bych kolegovi navrhnout, at se podiva i na RIA technologie. Treba takove JavaFX (ikdyz to je trochu narocnejsi na prostudovani) nebo GWT, coz je pro jednoduche aplikace super framework. Tvari se jako webova a obsahuje kompletni podporu vyvoje vcetne implementace klient-server komunikace.

Taky je otazka, jestli chce tlusteho, nebo tenkeho klienta.

At se dari.

Petr Jůza řekl(a)...

Doplním jen jednu věc - jak jsem zmiňoval, tak se jedná o intranetovou aplikaci, takže cílení bude celkem přesné, např. IE 8 a nic dalšího.

Proto se také vůbec přemýšlí o JWS, protože pro jiné než interní použití si to nedokážu představit.

S JWS jsem dělal před pěti lety a je vidět, že i tato věc se posouvá...

Indian řekl(a)...

Jo proc ne, pokud to bude teda jednoducha aplikace, tak bych se priklonil spise k webovce.

Ono valstne JWS je jen obalka pro spusteni Java aplikace, takze pokud by nemeli problem si spoustet bohateho klienta, tak se na JWS muze klidne zapomenout a spustet java aplikaci primo. JWS ale prinasi tu automatickou aktualizaci. Na druhou stranu jsou tam omezeni sandboxem...

jen perlicka z praxe: pri nasazeni aplikace z JWS klient vola: "Mam zastupce na plose pro spusteni JWS apliakci a hlasi, ze to nejde spustit". Technicka podpora: "Tak to zkuste z JNLP odkazu znovu.".. klient: "Uz to jede!"..

a za dva dny zase: "Uz to zase nejede :-("... no a nakonec se zjistilo, ze uzivatel si jednou za cas promaze kompletne svou user directory, samozrejme s cache JWS :D.

takze i s timhle se musi pocitat.

Anonymní řekl(a)...

Mam pocit, ze autor preferuje tenkeho klienta (webovou aplikaci), protoze "to zname".

Pro jednoduché evidence tenky klient staci, pro drsnejsi evidence na intranetu muze byt tlusty kient - toho zase "umime" my.

Distribuce novych verzi resi modularni system, ktery si muzete napsat nebo pouzit nejakou zakladnu jako napr. Eclipse nebo NetBeans Platformu.

Nekdy se mi zda, ze se cely svet muze z webovych technologii po...kochat, protoze vetsina aplikaci jede na internetu a o tech vnitropodnikovych se vlastne nikde nemluvi.

Uf

Petr Jůza řekl(a)...

Je pravda, že by vývojář neměl zapomínat na to, že hlavní je uživatel a zvolené technologie by tedy neměly hlavně vycházet z toho, co má rád vývojář.

Jan Kovar řekl(a)...

Na intranetové aplikace se docela hodí Flex s Javou na backendu. CRUD aplikace se v něm vyvíjí rychle a vypadají k světu s relativně malou námahou.

Anonymní řekl(a)...

>"uživatelé chtějí data na webu, takže je potřeba mít jednu aplikaci na správu dat a pak jinou aplikaci na její prezentaci"

>"tak se jedná o intranetovou aplikaci, takže cílení bude celkem přesné, např. IE 8 a nic dalšího"

Tyhle dva citaty jsou trosku protimluv, ne ? Bud to cele budete provozovat jen na intranetu, timpadem je jedno, jestli "data budou na webu", stejne tak je muzete mit v uplne stejnem okne, ktere bude soucasti te JWS aplikace, nebo chcete mit cas aplikace opravdu pristupnou odkudkoliv - coz je jedna z nemnoha opravdovych vyhod webaplikaci - tak ji rozhodne nemuzete delat jen pro jeden browser.

Takze opravdove rozhodnuti asi stoji na tom, zda je vase aplikace natolik narocna, ze stoji za to mit vetsi komfort pri praci, lepsi ergonomii, vic moznosti, vetsi vykon...protoze tohle vsechno JWS nabidne, nebo potrebuejte pristup i z venku (nebo treba z iPhone) a navic byt trendy a in, protoze to vam da jen webaplikace.

Z pohledu naroku na vyvoj je to zhruba stejne, navic pro webaplikace na intranetu existuji frameworky (treba NextApp Echo3) ve kterych se vyviji skoro stejne pro oba svety. Ale je jasne, ze pokud pouzivate nejake konkretni prostredi, tak v nem budete urcite produktivnejsi, takze hodne zalezi i na rozsahu aplikace, jestli vam to stoji za to.

Jeste k te ergonomii : nic vam prece nebrani si napr. v JWS aplikaci udelat taky tlacitka back a prikazovy radek, pomoci ktereho si uzivatele budou moct vymenovat URL. Navic jde delat spousta dalsich veci (napr. drag and drop z ostatnich nativnich aplikaci), ktere se v webaplikaci daji jen napodobit, ale vzdycky to tam je drbani pres hlavu, byt na to jsou lidi docela zvykly. Takze opravdu zalezi, co od aplikace ocekavate a co si muzete dovolit.

Lukáš Zapletal řekl(a)...

Zrovna zítra jedu k zákazníkovi prezentovat projekt, u kterého hodláme nabídnout obě varianty.

Zákazník se totiž obává přetěžování systému, protože ten funguje nárazově - zjednodušeně řečeno na portál by chodili lidé hlavně jeden týden (resp. den) v měsíci. Byl by to veliký nápor.

Nabídneme tedy i desktop variantu, protože ta může výrazně ulehčit serverům. Zákazník má miliony uživatelů a aplikace by měla provádět i určité výpočty.

Takže abych to uzavřel - použitím WebStart tlustého klienta můžete elegantně řešit špičky a nápory na serverové systémy. Webové aplikace jsou na tyto věci velmi náchylné, pokud se jedná o nějaké výpočetně náročné operace (databázové reportingy, data mining a podobně).

Rastislav "Bedo" Siekel řekl(a)...

Aj keď už dlhé roky vyvíjam webové aplikácie, nedám dopustiť na komfort ovládania tučného klienta. Napr. si vezmite Thunderbird a nejaký webový mail klient - napr. Horde. Aj keď sa Horde snaží ako vie, všetky "bežné" veci ako drag&drop, klávesové skratky, dopĺňanie adries, pridávanie príloh, AJAX funkcionalita - vždy tomu niečo chýba. Všetko toto sa síce dá v browseri urobiť, ale nikdy to nebude ono.