Distribuce cloudových aplikací pomocí Javy

Xwinus

Distribuce cloudových aplikací pomocí Javy
« kdy: 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


tadeas

Re:Distribuce cloudových aplikací pomocí Javy
« Odpověď #1 kdy: 31. 12. 2012, 17:18:50 »
V čem že by to bylo lepší, než X forwarding?

Xwinus

Re:Distribuce cloudových aplikací pomocí Javy
« Odpověď #2 kdy: 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é.

mahmood

Re:Distribuce cloudových aplikací pomocí Javy
« Odpověď #3 kdy: 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.

Marshmallow

Re:Distribuce cloudových aplikací pomocí Javy
« Odpověď #4 kdy: 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.


jan.xxx

Re:Distribuce cloudových aplikací pomocí Javy
« Odpověď #5 kdy: 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.

Franta <xkucf03/>

Re:Distribuce cloudových aplikací pomocí Javy
« Odpověď #6 kdy: 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.

Franta <xkucf03/>

Re:Distribuce cloudových aplikací pomocí Javy
« Odpověď #7 kdy: 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.

Xwinus

Re:Distribuce cloudových aplikací pomocí Javy
« Odpověď #8 kdy: 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.

Franta <xkucf03/>

Re:Distribuce cloudových aplikací pomocí Javy
« Odpověď #9 kdy: 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.

Vladimir Aubrecht

Re:Distribuce cloudových aplikací pomocí Javy
« Odpověď #10 kdy: 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 ...

Franta <xkucf03/>

Re:Distribuce cloudových aplikací pomocí Javy
« Odpověď #11 kdy: 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).

Mitch

Re:Distribuce cloudových aplikací pomocí Javy
« Odpověď #12 kdy: 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

jan.xxx

Re:Distribuce cloudových aplikací pomocí Javy
« Odpověď #13 kdy: 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).

Xwinus

Re:Distribuce cloudových aplikací pomocí Javy
« Odpověď #14 kdy: 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.