Ugrás a főmenüre.
Web 2008.06.27.

Fejlesszünk asztalra webes tudással!

Nagy ritkán előfordulhat, hogy asztali alkalmazásra van szükség. Mivel elsősorban webes ember vagyok, jó lenne ezzel a tudással és viszonylag minimális plusszal megoldani az ügyet, végignéztem hát a lehetőségeket. Java, PHP-GTK, Adobe AIR, Flash projektorok.
Fejlesszünk asztalra webes tudással!

Asztali alkalmazás fejlesztéséhez ma már nyomós ok kell, a motivációm kábé a következő: van egy feladat, amit sokkal gazdaságosabb a felhasználó gépére delegálni, mint egy dedikált szervert (vagy inkább sok-sok szervert) fenntartani hozzá.

A feladat nem oldható meg a böngészőben (mondjuk JavaScript-tel), hanem több más kisebb-nagyobb, böngészőben nem futó dolog meghívása is szükséges. Ezekre van szükségem:

  • shell exec (más asztali szoftverek meghívása),
  • lokális diszkre írás/olvasás,
  • Win és MacOSX támogatása.

Egyébként ha a fentiekből nincs szükséged az első kettőre, akkor kapásból a webre érdemes fejleszteni, a webes fejlesztés ma már sokkal fontosabb, mint az asztali (imho).

Nagyon fontos még - külön bekezdést érdemel - a kész szoftver egyszerű telepítése, ami lehet egyklikkes telepítő vagy csak szimpla kicsomagolom-és-használom ügy. Magyarul ne kelljen hozzá mindenféle kiegészítő cuccokat telepíteni a felhasználó gépére, kivéve ha azok automatikusan települnek.

Java

Úgy tudom, hogy a feltételeimet maradéktalanul teljesíti. Bár valószínűleg én voltam az első az országban (bibibí), aki főiskolán Java-ból vizsgázott (90-es évek...), de sajnos ez volt az utolsó érdembeli találkozásom vele, így most kiesik. Ha tudsz Java-t, akkor ne is menj tovább. Csak egyvalamit nem tudok: Javanál is van az alkalmazás egyklikkes telepítőjébe csomagolt cucc, ha nincs fent a (megfelelő) Java környezet?

Firefox extension

Gyorsbekezdés: képes mindenre, de sajnos nem felel meg a telepítési kritériumoknak.

Explorer ActiveXObject (mondjuk JavaScript-tel)

Gyorsbekezdés: nincs Mac-re, nem is lesz.

PHP-GTK(2)

A PHP-GTK egy asztali alkalmazás ablakkezelő PHP-hoz, azaz az operációs rendszer GUI-jában lehet PHP-val molyolni, saját ablakokat és minden egyebet kezelni, viszonylag egyszerűen. Kicsit béna, mert helyenként kilóg a lóláb: nem túl szép GUI objektumai vannak.

A legnagyobb probléma az egyklikkes telepítő hiánya. Akárhogy feszültem is meg, nem tudtam olyan csomagot készíteni, amiben benne van a PHP-GTK, a PHP környezet meg az alkalmazásom is és szimplán hordozható.

Adobe AIR

Ezt kifejezetten asztali alkalmazásokra reklámozzák, azonban nem tud shell exec-et, fscommand-dal sem. Ha nem kell shell exec, akkor egyébként nagyon elegáns megoldás és tud egyklikkes telepítőt, azaz feltolja az AIR-t is ha még nem.

Flash projektor

Kevesen tudják, hogy a Flash-ben van egy projektor mód, ami annyit csinál, hogy becsomagolja az SWF-et egy futtató alkalmazásba (EXE vagy App), lokális jogokat ad neki és így van egy asztali alkalmazásod (majdnem AIR).
Nagy nehezen rájöttem, hogy hogyan kell az fscommand exec-et használni és még shell szkripteket is tudtam futtatni vele. Shell szkripteknél az volt a szívás, hogy alapból a gyökérkönyvtárban fut minden, ezért a szkriptek elején rögtön ezt érdemes:

export SELF_DIR=`dirname "$0"`

Így meglesz egy változóban a szkript, végső soron az alkalmazásunk mappája. A Flash projektorral azonban lehetetlen lokális fájlokat írni (olvasni lehet) és az fscommand exec-nél szintén lehetetlen a paraméterátadás! Mac-en mondjuk lehet clipboard-dal trükközni (az Actionscript tud rá írni, a szkriptben pedig pbpaste), de ez nem stabil megoldás. Köszönhetjük ezt az első Flash-ben írt vírus készítőinek, miattuk zárta be a paraméterátadást az Adobe.

Third-party Flash projektor

A Flash projektor és az AIR ismertetett bénaságaira találták ki a külsős Flash projektorokat, amik saját környezetben futtatják a Flash projektorát és kiegészítik azt saját funkciókkal, például pont paraméteres exec-kel vagy könnyű lokális írással-olvasással. Nem is értem, hogy az AIR-rel miért nem nyírta ki az Adobe ezt a piacot, simán megtehették volna, ennyire ne fossanak már a vírusíróktól.

Mindössze kettő Actionscript 3-at és MacOSX-et is támogató terméket találtam, ezek a SHU (AIR-hez) és a Zinc (Flash-hez).

A SHU-nak nagyon béna a doksija, annyira, hogy meg sem találtam... A Zinc-nek viszont jó és elég könnyű használni.

Egy szó mint száz most Zinc-ben tolom és rettentően meg vagyok vele elégedve, még process-kezelés is van benne, elég jó és egyszerű. Sajnos azt suttogják, hogy instabil termék, bár a legújabb 3-as változatról nincs még hosszútávú tapasztalatom. Nálam még egyszer sem fagyott, fingers crossed. Érdemes belepillantani a doksijába, hogy mit tud.

Disclaimer1: a szerző C++-ban nyüstölte a Windowst és még webszervert is írt benne, ismeri az asztali alkalmazások és a Windows API rejtelmeit, bár már halványul a tudás és nem szívesen néz vissza.

Disclaimer2: lehet, hogy nem találtam meg minden lehetőséget, bármilyen más megoldásról (ami teljesíti a kritériumaimat) borzasztó szívesen olvasnék a hozzászólások között, a közös tudásnak rettentően örülök.

4 hozzászólás

  1. idézem 2008.06.27. 15:02
    • Zs
    Igen, Java Web Start-nak hivják a dolgot, amit valójában kerestél.
  2. idézem 2008.06.27. 22:41
    • poTomek
    Natív Java fordító: http://gcc.gnu.org/java/
  3. idézem 2008.07.11. 02:58
    Java: van, van, ehhez ugye csak megfelelo installer program kell, az meg van dogivel. A JRE licensze meg olyan, hogy a futtatashoz szukseges dolgokat mellecsomagolhatod a programnak, ha akarod. A Zs altal irt jws klassz dolog, de nem oldja meg az az esetet, amikor nincs java a kliens gepen. A web start ugyanis a java disztrib resze :) (viszont a telepitest klasszul helyrerakja, nem nagyon kell installerrel meg upgrade-elessel pocsolni).

    Firefox extension: na ez ugyan igy ebben a formaban tenyleg nem jatszik, viszont van egy XULRunner nevu project, ami egy herelt mozilla, es pont arra valo, hogy XUL alkalmazasokat terjetszhess a segitsegevel anelkul, hogy egy komplett firefoxot kene telepitened. A technologia ugyanaz, mint a firefox extensionnel.

    PHP-Gtk: ez viccnek is rossz :), PHP (only) "programozok" szamara.

    Amugy van meg rengeteg opcio, a legtobb webalkalmazasokhoz is hasznalt nyelv 'igazi' programnyelv, es mukodik asztali kornyezetben is. Pl. ruby (amit a RoR alapja) es Python (webre a legismertebb fwk talan a Django vagy a Zope). Ezek mennek Mac-en meg barmelyik unix alapu rendszeren es persze winen is. Pythonhoz (rubyhoz) linuxok ala nem kell kulon telepito, nem nagyon van olyan rendszer amin nincs(enek) fent, windows-hoz meg van megoldas ami belecsomagolhja a szukseges reszeket az installeredbe.
  4. idézem 2008.07.11. 06:51
    Köszönöm az eddigieket, hasznosak.

    Azt még megkérdezném viszont, hogy GUI-t is egyszerű az általatok javasoltakkal? Mondjuk Python-ban ablakos-gombos-űrlapos felületet Win és OSX alá?
Új hozzászólás
A sortörések automatikusak. Csak az üzenet kitöltése kötelező, a többi mező opcionális. A megadott e-mail címet nem tesszük közzé. Engedélyezett HTML tagek: p, a, strong, em, blockquote, ul, ol, li, dl, dt, dd.
Ellenőrző kód

Legutolsó hozzászólások

Jeff Dunham 2008 Karácsony magyar felirattal: :

Inside the iPhone: eFi via Google Reader: Nagyon jól összeszedett kis leírás a szifon belvilágáról (via angelday).

Inside the iPhone: angelday via Google Reader: Szantog a szifonról, érdemes elolvasni.

Kedves Ügyfelem!: _original via Google Reader: szerintem az a három óráig póstárajáróknak van!

Kedves Ügyfelem!: norti via Google Reader: Meghalt az amúgy is halott logisztika a postán kb. 2 hónapja. Csodálom, hogy még az angliai havilapokat megkapom... de ajánlott én is csak...

iMect means internet, media and other cool things. iMect is a small company in Budapest, Hungary. We’ve a big footer on every page where you can discover what we do and what happens with us.

Az iMect jelentése: internet, média és egyéb király dolgok. Egy kis budapesti cég vagyunk. Minden oldalon van egy nagy lábléc, ahol felfedezheted, hogy mivel foglalkozunk.