Banteng - a Javascript az asztalra költözik
Az asztali alkalmazások fejlesztése egyre egyszerűbbé válik, a megoldások fokozatosan közelednek a webes fejlesztés irányába, és ez nemcsak elméletileg, hanem a gyakorlati technikákat, nyelveket tekintve is megfigyelhető. Rendszeresen hírt adunk az olyan asztali szkriptelést lehetővé tevő projektek alakulásáról, mint a PHP-GTK, PHP/TK vagy a szintén PHP-re épülő, ám csak Windows rendszereken használható Winbinder. Az kétségtelen azonban, hogy sok webfejlesztőnek nem munkaeszköze a PHP, és sokkal elterjedtebb nyelvnek tekinthetjük a Javascriptet, amely elsősorban weblapok programozási nyelveként ismert. Lássuk mit tehet számunkra az asztalon!
Könnyen előfordulhat, hogy Geoff Strom nevét még sokáig emlegetni fogjuk, hiszen az ő agyából pattant ki az az ötlet, hogy a GCJ (a GNU Java fordító), a Rhino (a Mozilla projekt Javascript illesztése a Javához), az SWT (az Eclipse standard felület építő eszközkészlete) és a kXML (XML feldolgozó) motort összeházasítva létrehozza a Banteng névre keresztelt projektet.
Jó kérdés, hogy mindezek a komponensek mit tesznek lehetővé számunkra. Nem kevesebbet, mint hogy keresztplatformos asztali alkalmazásokat fejlesszünk, XML-ben megfogalmazva a felület megjelenését és Javascriptben megírva a viselkedést, úgy, hogy alkalmazásunk mindig a futtató rendszer natív megjelenésében tündököl majd. Mondhatni nem semmi. Lássunk egy egyszerű számláló példát a disztribúcióból:Mint látjuk, ez egy egymás alatti sorokban elrendezett megjelenést definiál, az első sorban egy a teret kitöltő szövegmezővel, fekete háttérrel és sárga előtérszínnel, csak olvashatóan. Alatta található három gomb, melyek a szám csökkentését, növelését és a mező törlését szolgálják. Lássuk milyen Javascript kód kelti ezt életre:A fenti
Ezzel a két állománnyal a Banteng futtatóval rendelkező gépeken a számláló alkalmazásunk teljes fényében futhat, akár Mac OS, akár valamilyen Linux vagy Windows az asztali operációs rendszerünk.
Nem feltétlenül elegendő az, hogy az alkalmazásainkat már most is tudjuk futtani a banteng motorral, Geoff sokkal többet tervez. A 0.2-es kiadásban megjelenhet egy fejlesztői környezet, amely felületek, menük kialakítását is segíti majd, aztán következik egy olyan segédeszköz kialakítása, ami saját Banteng alapú programjaink terjeszthető változatainak előállítását hivatott támogatni. Ráadásul az 1.0 felé vezető úton a jobb dokumentáció mellett egy debugger terve is helyet kapott. Érdemes lesz a projekt alakulását figyelemmel kísérni!
■ Könnyen előfordulhat, hogy Geoff Strom nevét még sokáig emlegetni fogjuk, hiszen az ő agyából pattant ki az az ötlet, hogy a GCJ (a GNU Java fordító), a Rhino (a Mozilla projekt Javascript illesztése a Javához), az SWT (az Eclipse standard felület építő eszközkészlete) és a kXML (XML feldolgozó) motort összeházasítva létrehozza a Banteng névre keresztelt projektet.
Jó kérdés, hogy mindezek a komponensek mit tesznek lehetővé számunkra. Nem kevesebbet, mint hogy keresztplatformos asztali alkalmazásokat fejlesszünk, XML-ben megfogalmazva a felület megjelenését és Javascriptben megírva a viselkedést, úgy, hogy alkalmazásunk mindig a futtató rendszer natív megjelenésében tündököl majd. Mondhatni nem semmi. Lássunk egy egyszerű számláló példát a disztribúcióból:
<?xml version='1.0' encoding='UTF-8' ?>
<Shell id="Form" style="SWT.DIALOG_TRIM" text="Counter">
<RowLayout type="SWT.VERTICAL" fill="true" justify="true" pack="false" />
<Group text="Counter">
<FillLayout />
<Text id="textbox" text="0" style="SWT.BORDER | SWT.READ_ONLY" background="#000" foreground="SWT.COLOR_YELLOW" />
</Group>
<Composite>
<RowLayout fill="true" justify="true" pack="false" />
<Button id="dec" text="Dec (-)" />
<Button id="clear" text="Clear" />
<Button id="inc" text="Inc (+)" />
</Composite>
</Shell>
load(java.lang.ClassLoader.getSystemClassLoader().getResource("libmoo.js"));
// Event handlers
function dec(event) {
var number = counter.textbox.getText();
number = number - 1;
counter.textbox.setText(String(number));
}
function clear(event) {
counter.textbox.setText("0");
}
function inc(event) {
var number = counter.textbox.getText();
number = Number(number) + 1;
counter.textbox.setText(String(number));
}
// Load in window
var display = new Display();
var counter = loadBantengForm(null, BANTENG_APP_PREFIX + "counter.xml");
// Hook up events
add_listener(SWT.Selection, counter.dec, dec);
add_listener(SWT.Selection, counter.clear, clear);
add_listener(SWT.Selection, counter.inc, inc);
// Display UI
counter.shell.pack();
counter.shell.open();
// Run dispatch loop
while (!counter.shell.isDisposed()) {
if (!display.readAndDispatch()) display.sleep();
}
display.dispose();
counter.xml
nevű XML állományt be kell töltenünk, majd hozzá tudjuk rendelni az eseménykezelőket a gombokhoz. Az ablak megjelenítése után a más hasonló asztali megoldásokban megszokott esemény várakozási ciklust indítjuk el, mely akkor lép csak ki, ha a program már lefutott, mely esetben lezárjuk a megjelenítő objektumunkat.Ezzel a két állománnyal a Banteng futtatóval rendelkező gépeken a számláló alkalmazásunk teljes fényében futhat, akár Mac OS, akár valamilyen Linux vagy Windows az asztali operációs rendszerünk.
Számláló példa különböző rendszereken
XUL
--
Ámon Tamás - http://amon.hu
nem egészen
Lehet, hogy reggel van, de
Valaki magyarázza el, h miért is jó ez a megoldás!
Ez valami olyasmi, hogy egy
Hamar ennyire nem jon be
http://www.robert-tolksdorf.de/vmlanguages.html
(ajanlom pl. a groovy-t)
--
tejfel | http://tejfel.atw.hu | icq:#8330538
áttételes
Visszaolvasva tenyleg
Jah, o GCJ-vel meg binarist is keszit a dologbol. Tudom
manapsag mar nem tema a tarhely, meg a savszelesseg, de
ha jol sejtem nem kimeli ezen eroforrasokat.
Java a gepek nagy reszen amugy is van, szal akar futhatna
JVM-en is, stb.
En is inkabb csak keresem az ertelmet a dolognak,
de nincs tobb mint hogy javascript+xml-el lehessen crossplatform gui
almalmazast kesziteni. Ha valakinek ez kell, akkor itt leszen
egy megoldas.
--
tejfel | http://tejfel.atw.hu | icq:#8330538
az értelme
Ps. én kipróbáltam a Bantenget, nem csak a képernyőképek alapján mondom, hogy milyen jó...
En kerestem kis meretu
Termeszetesen orulok neki, hogy alkot a srac, nem akarom lebeszelni
rola.
--
tejfel | http://tejfel.atw.hu | icq:#8330538
Nem csak a méret a lényeg