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.
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:
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.
Ú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?
Gyorsbekezdés: képes mindenre, de sajnos nem felel meg a telepítési kritériumoknak.
Gyorsbekezdés: nincs Mac-re, nem is lesz.
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ó.
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.
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.
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.
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.