Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: Xwinus 31. 12. 2012, 15:40:34

Název: Distribuce cloudových aplikací pomocí Javy
Přispěvatel: Xwinus 31. 12. 2012, 15:40:34
Zdravím,

líbí se mi projekty jako třeba OnLive, umožňující hrát hry běžící na vzdáleném serveru na svém PC, nebo třeba obyč SSH s X.org, zajímalo by mě, jestli by bylo možné napsat v Javě (= možnosti/omezení platformy Javy) podobnou aplikaci, v rámci které by například existoval linuxový server s nainstalovaným LibreOffice a já bych si pomocí klientské části svojí aplikace z jakéhokoliv OS (díky Jave) spustil LO na svém PC. Čili o veškeré výpočty, GUI apod by se staral server, jen by výsledek místo někam na obrazovku poslal do mé klientské aplikace a ta by ho prostě vykreslovala, zatímco by serveru posílala uživatelské interakce (myš, klávesnice apod.)

Díky
Název: Re:Distribuce cloudových aplikací pomocí Javy
Přispěvatel: tadeas 31. 12. 2012, 17:18:50
V čem že by to bylo lepší, než X forwarding?
Název: Re:Distribuce cloudových aplikací pomocí Javy
Přispěvatel: Xwinus 31. 12. 2012, 17:25:47
Minimálně na Windows by bylo třeba mít SSH klienta (např Putty) a X server (xming např), aby vůbec x forwarding fungovalo. Ale spíš mi jde o to, jestli je to vůbec teoreticky možné.
Název: Re:Distribuce cloudových aplikací pomocí Javy
Přispěvatel: mahmood 31. 12. 2012, 18:18:57
Proč používáš slova, kterým nerozumíš? Nevidím přímou souvislost mezi cloudem a tím co popisuješ. Cloud je asi nejvíce zneužívaný termín V IT oboru, rozhodně ale neplatí cloud=online služba. Distribuovat cloudové aplikace mi nedává smysl, alespoň ne v kontextu, který popisuješ.

V Javě určitě taková věc napsat jde, ale nebude to zrovna nic triviálního. Nevím, proč vyžaduješ striktně javu (byť připouštím, že můžeš mít objektivní důvody), respektive proč vymýšlet kolo v Javě, když taková věc existuje, byť v jiném jazyce. Ulteo (http://www.ulteo.com/home/en/home) dělá to co požaduješ a je napsané tuším v C a Pythonu, takže je multiplatformní. Dokonce mají klienta pro iPad a Android.

Co se týká Libreoffice, tak ten od verze 3.5 může běžet jako webová služba s využitím projektu Broadway a aplikace je tak možné spouštět v prohlížeči i na PC bez nainstalovaného Libreoffice.
Název: Re:Distribuce cloudových aplikací pomocí Javy
Přispěvatel: Marshmallow 31. 12. 2012, 18:52:32
Docela by me zajimal princip, na kterem podobne aplikace funguji. Jakym zpusobem se na serveru zachytava jejich "gui" a z klienta odesilaji stisky klaves apod.
Název: Re:Distribuce cloudových aplikací pomocí Javy
Přispěvatel: jan.xxx 31. 12. 2012, 18:52:40
To co hledáš je pravděpodobně něco jako VNC či RDP. Prostě vzdálená plocha. VNC klienti v JAVĚ existují (RealVNC java viewer). RDP asi taky (nikdy jsem nepotřeboval). SSH je taky možné v JAVĚ provozovat.
Název: Re:Distribuce cloudových aplikací pomocí Javy
Přispěvatel: Franta <xkucf03/> 31. 12. 2012, 19:53:17
Možné to určitě je, v podstatě v té Javě budeš dělat jen VNC (nebo modernější SPICE) klienta. Dokonce se takové věci i používají – např. pro vzdálenou správu serverů, je to Java applet nebo Java WebStart aplikace, která ti zpřístupní vzdálenou obrazovku.

Ale otázka spíš je, jaký to má smysl. Spustit si vzdálenou Xkovou aplikaci přes SSH je celkem elegantní, protože to je za málo práce hodně muziky.
Název: Re:Distribuce cloudových aplikací pomocí Javy
Přispěvatel: Franta <xkucf03/> 31. 12. 2012, 19:56:16
Docela by me zajimal princip, na kterem podobne aplikace funguji. Jakym zpusobem se na serveru zachytava jejich "gui" a z klienta odesilaji stisky klaves apod.

Úplně normálně – pro aplikaci se to chová jako X server – a aplikaci je jedno, jestli to ten X server zobrazuje na lokální grafické kartě, nebo jestli to posílá po síti nějak jinam a zobrazuje se to až tam.
Název: Re:Distribuce cloudových aplikací pomocí Javy
Přispěvatel: Xwinus 31. 12. 2012, 21:38:26
Možné to určitě je, v podstatě v té Javě budeš dělat jen VNC (nebo modernější SPICE) klienta. Dokonce se takové věci i používají – např. pro vzdálenou správu serverů, je to Java applet nebo Java WebStart aplikace, která ti zpřístupní vzdálenou obrazovku.

Ale otázka spíš je, jaký to má smysl. Spustit si vzdálenou Xkovou aplikaci přes SSH je celkem elegantní, protože to je za málo práce hodně muziky.

Díky za reakci, ovšem Javu volím právě pro její multiplatformnost, čili nestačí mi jen napsat klienta a na serveru nechat Xka, ale jde mi o to vytvořit i serverovou část, aby bylo možné server spustit i na mašině s Windows. A ani by nemuselo jít o přenos celé uživatelské relace a plochy, ale třeba jen o jedno okno LO/čehokoliv.
Název: Re:Distribuce cloudových aplikací pomocí Javy
Přispěvatel: Franta <xkucf03/> 31. 12. 2012, 22:31:54
aby bylo možné server spustit i na mašině s Windows.
Multiplatformnost na straně klienta je bezproblémů, na to se Java hodí. Ale horší to bude na straně serveru – pro „získání obrazu“ té běžící aplikace budeš potřebovat využít nativní nástroje dané platformy (typicky Xka), což bude na Windows asi problém.

Na Windows by se dalo použít RDP (mělo by přes něj jít poslat i jednotlivé okno), akorát tě to přijde pěkně draho (asi bys musel zaplatit licenci pro každého koncového uživatele a terminálové služby pro Windows Server, nebude na to stačit běžná licence na Widle), je to vendor-lock in jako svině a multiplatformní to není ani náhodou. Na tuhle „platformu“ bych se radši vykašlal… Zvlášť pokud chceš pouštět aplikace typu LibreOffice. Hodně windowsích aplikací se dá pustit pod Wine, tak bych zvážil to – GNU/Linux + Wine + Aplikace → X/VNC/SPICE → Javová aplikace → nějaký tvůj protokol → javový klient.
Název: Re:Distribuce cloudových aplikací pomocí Javy
Přispěvatel: Vladimir Aubrecht 01. 01. 2013, 02:05:55
Citace
Multiplatformnost na straně klienta je bezproblémů, na to se Java hodí. Ale horší to bude na straně serveru – pro „získání obrazu“ té běžící aplikace budeš potřebovat využít nativní nástroje dané platformy (typicky Xka), což bude na Windows asi problém.

Nebude, holt pro Windows by musel asi použít JNI a napsat si ještě dllko v něčem více nízko úrovňovém než Java, ale jinak v tom nevidím problém. V dllku stačí zjistit jenom správný ukazatel na dané okno (což není takový problém) a obraz z toho v pohodě dostane ...
Název: Re:Distribuce cloudových aplikací pomocí Javy
Přispěvatel: Franta <xkucf03/> 01. 01. 2013, 10:07:54
Nebude, holt pro Windows by musel asi použít JNI a napsat si ještě dllko
Tím už to přestává být multiplatformní – .dll/.so si bude muset napsat pro každý systém… Ale to je celkem pochopitelné.

V dllku stačí zjistit jenom správný ukazatel na dané okno (což není takový problém) a obraz z toho v pohodě dostane ...

Pro Windows jsem nikdy neprogramoval, nějaký příklad by nebyl? A šlo by i posílat události – myš, stisky kláves? Napadá mne zajímavé využití: Vzít obyčejnou licenci Windows (třeba XP), kterou má skoro každý doma (bohužel, protože mu to vnutil MS a prodejce HW) a dát ji na „server“ a spouštět na něm aplikace a vzdáleně je takto zpřístupnit uživatelům – tzn. něco jako terminálové služby, ale udělat si to po svém. Firmě by pak stačila jedna licence a legacy windows aplikace by si provozovali na tomto serveru. Dá se tohle udělat licenčně čistě?

Kdysi jsem podobný software viděl, bohužel už nevím název. Akorát nevím, jestli to bylo úplně OK z hlediska licence, protože MS by nejradši účtoval za každého uživatele (i třeba klienta, který se připojuje přes HTTP k Apache serveru).
Název: Re:Distribuce cloudových aplikací pomocí Javy
Přispěvatel: Mitch 01. 01. 2013, 10:33:46
Serverová část by se dala napsat s pomocí třídy Robot a pak by to mělo být bez problému multiplatformní. Umí to děla screen obrazovky a posílat stisky klávesnice a myši, což by mohlo být dostatečné.
viz. http://docs.oracle.com/javase/7/docs/api/java/awt/Robot.html
Název: Re:Distribuce cloudových aplikací pomocí Javy
Přispěvatel: jan.xxx 01. 01. 2013, 10:52:29
V prvním dotaze se píše o Libre Office. Pokud bych chtěl nabízet ji, pak bych volil X. Přes Javu se k nim dá určitě připojit. Pokud to má být nějaká aplikace na zakázku, pak je lepší tomu udělat WWW rozhraní (třeba v Javě) a klientské části neřešit. I ty LO jsem viděl "online" (GTK HTML backend).
Název: Re:Distribuce cloudových aplikací pomocí Javy
Přispěvatel: Xwinus 01. 01. 2013, 12:15:11
V prvním dotaze se píše o Libre Office. Pokud bych chtěl nabízet ji, pak bych volil X. Přes Javu se k nim dá určitě připojit. Pokud to má být nějaká aplikace na zakázku, pak je lepší tomu udělat WWW rozhraní (třeba v Javě) a klientské části neřešit. I ty LO jsem viděl "online" (GTK HTML backend).

LibreOffice byl dán jen jako pouhý příklad, jde o to, že by se na jakýkoliv stroj (ať Win nebo Lin, Mac) nainstalovala serverová část aplikace a pomocí klientské části by bylo možné spouštět programy na jiném počítači. Příklad: server bude Windows s Adobe Photoshop (s čímkoliv) a klient poběží na Linuxu (třba),. takže po spuštění klienta by se mu otevřelo okno "vzdáleně běžícího" Photosopu na Widlím serveru.
Název: Re:Distribuce cloudových aplikací pomocí Javy
Přispěvatel: Jan Ťulák 01. 01. 2013, 13:19:10
Vzít obyčejnou licenci Windows (třeba XP), kterou má skoro každý doma (bohužel, protože mu to vnutil MS a prodejce HW) a dát ji na „server“ a spouštět na něm aplikace a vzdáleně je takto zpřístupnit uživatelům – tzn. něco jako terminálové služby, ale udělat si to po svém. Firmě by pak stačila jedna licence a legacy windows aplikace by si provozovali na tomto serveru. Dá se tohle udělat licenčně čistě?

Kdysi jsem podobný software viděl, bohužel už nevím název. Akorát nevím, jestli to bylo úplně OK z hlediska licence, protože MS by nejradši účtoval za každého uživatele (i třeba klienta, který se připojuje přes HTTP k Apache serveru).

Nejde. Pro vzdálenou práci uživatelů je potřeba windows server a terminálové licence, home/professional by prošlo MOŽNÁ kdyby to byl počítač toho uživatele a ten s ním vzdáleně pracoval, ale jen on, nikdo jiný.

Navíc ty licence, co má každý doma, jsou OEM a ty se nesmí použít mimo HW, s kterým byly dodány. Krabicovou verzi má doma jen málokdo.
Název: Re:Distribuce cloudových aplikací pomocí Javy
Přispěvatel: Franta <xkucf03/> 01. 01. 2013, 13:40:57
Nejde. Pro vzdálenou práci uživatelů je potřeba windows server a terminálové licence…

Jasně, není žádné překvapení, že MS chce oškubat zákazníky, jak to jen jde. Ale zajímalo by mne, kde je přesně ta hranice. Co když někomu pošlu e-mail – je uživatelem (za kterého by se mělo platit) i ten příjemce? Co když si pustím SMTP server – je uživatelem každý server, který se připojí, nebo dokonce každý uživatel toho vzdáleného serveru? Co když si tam pustím HTTP server – platí to na přímé uživatele nebo i ty, kteří jsou za proxy? Jak se liší případ, kdy nějaká aplikace (např. PHP interpret) vygeneruje nějaký výstup a přes Apache ho pošle klientovi, od případu, kdy nějaká jiná aplikace (třeba LibreOffice) vygeneruje jiný výstup (grafický, stav aplikace) a pošle ho skrze ten javovský server (viz komentáře výše) ke klientovi? Jak se liší běžné HTTP POST parametry od parametrů obsahujících stisky kláves a pohyby myši (které můžou být nakonec taky zabalené do toho HTTP POSTu)?

Obávám se, že v tomhle nemají jasno ani obchodníci Microsoftu a že použijí veškeré prostředky (zastrašování, lži, vydírání… obecně FUD) k tomu, aby co nejvíc podojili zákazníka a donutili ho si koupit tu nejdražší licenci.

Nejlepší asi bude s teroristy nevyjednávat a použít jinou – svobodnější a férovější – platformu :-)
Název: Re:Distribuce cloudových aplikací pomocí Javy
Přispěvatel: Jan Ťulák 01. 01. 2013, 14:06:14
Pokud pošleš email, nebo pustíš SMTP server, tak se asi uživatel nepřipojuje terminálově a tedy nepotřebuješ terminálové licence. ;)

Ale jasně, určitě jsou nějaké hraniční případy, kde by mohly vzniknout problémy - nicméně nejsem odborník na MS licence a mám jen spíše kusé informace, které jsem někde zaslechl/zahlédl.
Název: Re:Distribuce cloudových aplikací pomocí Javy
Přispěvatel: Franta <xkucf03/> 01. 01. 2013, 14:24:49
tak se asi uživatel nepřipojuje terminálově

Ale co přesně znamená, že se připojuje „terminálově“? Kdyby používal nějaké windowsí terminal services, tak je to jasné, ale když se použije jiné rozhraní?
Název: Re:Distribuce cloudových aplikací pomocí Javy
Přispěvatel: Jose D 01. 01. 2013, 15:18:03
Kdysi jsem podobný software viděl, bohužel už nevím název.
Citrix Xen App?
Název: Re:Distribuce cloudových aplikací pomocí Javy
Přispěvatel: Mirek Prýmek 01. 01. 2013, 16:18:44
Mám pocit, že by každý ajťák pod čtyřicet měl každé ráno ještě před snídaní padesátkrát napsat: Nevymýšlet kolo! Nevymýšlet kolo! Nevymýšlet kolo! ...

:)
Název: Re:Distribuce cloudových aplikací pomocí Javy
Přispěvatel: PanKapitánRUM 01. 01. 2013, 16:35:40
(http://www.hoschl.cz/img/title_hi.png)

Citace
psychiatr prof. Cyril Höschl řekl při svém projevu "Třetina obyvatel této země je slabá duchem. Každý sedmý občan je debilní nebo dementní nebo alkoholik. Zhruba polovina obyvatel této země má podprůměrný intelekt.".

http://www.psp.cz/eknih/1990fs/slsn/stenprot/020schuz/s020006.htm (http://www.psp.cz/eknih/1990fs/slsn/stenprot/020schuz/s020006.htm)
http://www.hoschl.cz/?lang=cz (http://www.hoschl.cz/?lang=cz)

Pak tedy nevidím důvod, proč by zrovna Ajťáci měli něco opisovat, když mají cca podobné intelektuální schopnosti jako lékaři.
(Pane bože, to se divím, že umře zbytečně jen každý 4-tý. http://www.ahaonline.cz/clanek/trapasy/10747/doktori-chybuji-tisice-lidi-umiraji-zbytecne.html (http://www.ahaonline.cz/clanek/trapasy/10747/doktori-chybuji-tisice-lidi-umiraji-zbytecne.html) http://zpravy.idnes.cz/ctvrtina-cechu-umira-zbytecne-tvrdi-ministerstvo-pry-i-vinou-lekaru-1jx-/domaci.aspx?c=A120217_125333_domaci_hv (http://zpravy.idnes.cz/ctvrtina-cechu-umira-zbytecne-tvrdi-ministerstvo-pry-i-vinou-lekaru-1jx-/domaci.aspx?c=A120217_125333_domaci_hv))
Název: Re:Distribuce cloudových aplikací pomocí Javy
Přispěvatel: Vladimir Aubrecht 01. 01. 2013, 18:00:47
Citace
Pro Windows jsem nikdy neprogramoval, nějaký příklad by nebyl? A šlo by i posílat události – myš, stisky kláves?

Sample už bohužel nemám, ale co se týče obrazu, ten lze získat přes tuhle funkci:
http://msdn.microsoft.com/en-us/library/windows/desktop/dd144871(v=vs.85).aspx

Pokud se jí jako vstup dá NULL, tak vrací device context na plochu (případně přes parrenty se jde dostat i na taskbar, atd.).

Co se týče událostí, přesně netuším, ale třeba aplikace Spy++ co se instaluje s Visual Studiem ty události odchytávat umí, takže nějak to půjde ...
Název: Re:Distribuce cloudových aplikací pomocí Javy
Přispěvatel: Franta <xkucf03/> 01. 01. 2013, 19:09:05
Citrix Xen App?

Ne, ne, tohle byla nějaká malá neznámá firma… Asi to řešili nějak podobně, jak je popsáno výše.
Název: Re:Distribuce cloudových aplikací pomocí Javy
Přispěvatel: M. 01. 01. 2013, 20:50:44
Ta malá neznámá firma byla možná NX z Itálie a její Free NX verze produktu je součástí většiny linux distrinucí. Umí to vzdáleně posílat obraz z unixu (Xka), RDP i VNC, včetně přerušení/obnovení, případně jednu obrazovku sdílet více lidí, dále sdílení lokálního diksu/usb/zvuku na server atd. Je podporování publikování celého desktopu nebo jen okna aplikace. Podobných produktů je více. Vše je to na podobné brdo jako ten Citrix.
http://www.nomachine.com/
NX to má postaveno kolem komprimovaného X protokolu tlačeného přes SSH tunel a s X klientem zabaleno do jednoho hezlého klienta (pro wokna, linux, solaris, jablko). Dále mají k tomu i web portál, takže je to publokovatelné do web prohlížeče....

Ta myšlenka s licencemi pro wokna se řeší tak, že se koupí z druhé ruky OEM licence Windows XP profesionál (který obsahuje RDP server pro jednoho uživatele), ty se namlátí do vitrtuálů a v tom se pouští a přes NX publokují potřebné Win aplikace. Licenčně je to díky inteligentímu rozhodnutí EU soudu v pořádku (na území EU). Platí to, že musíte použít OEM licenci koupenou z druhé ruky. EU soud rozhodl, že můžu prodat svoji OEM licenci samostatně dál, když už ji nepotřebuji, bod licenčních podmínek zakazující přeprodej samotné licence je neplatný v EU. Dále ten, kdo koupí takto z druhé ruky OEM licenci už není vázán licenční smlouvou s Microsoftem, je omezne v nakládání pouze platným zněním autorskéhho zákona (všechny ty blbosit o nákupu s HW, používání jen s tím HW, zánik, používání jen jendou osobou platí jen pro prvního kupujícího). Takže si vzájemně se sousedem přeprodáte licenci neob využijete služeb překupníka licencí, např: http://www.zlegalizuj.cz/ Vyjde to levněji, než windows server a do něj patřičné CAL a RDP licence (ale je s tím víc párání s víc virutály).