
JX betyr kort fortalt Javascript eXecutable. Det er ikke jeg som har funnet opp teknologien, men jeg har laget flere applikasjoner som bruker den og trengte en betegnelse på hva slags teknologi som er brukt.
Praktisk, kort forklaring: Et backend-script kalles fra en html-side via javascript. Backend-script, f.eks. php, utfører jobben som skal gjøres på server og returnerer som javascript-variabler, som legges til i siden kallet gjøres fra via appendChild.
Kode, eksempel fra AnoChat:
Send:
// The function for sending chat line
function doChatline(cryptcode, dcode, dcuser) {
var url = 'anochat.php?c=cac';
var jsel = document.createElement('SCRIPT');
jsel.type = 'text/javascript';
jsel.src = url+'&q='+dcode+'&cc='+cryptcode+'&x='+dcuser;
document.body.appendChild (jsel);
}
Her sendes variablene c (state i php switch), q (queryID/chatID), cc (kryptert string) og x (kryptert brukernavn) til scriptet anochat.php, som emulerer et javascript etter å ha oppdatert chat-filen med de nye dataene.
Return, echo med php:
echo "var unixfield = getElement(\"unixtime\");\n";
echo "unixfield.value = '".$reftime."';\n";
echo "var retlayer_room = getElement(\"chroom\");\n";
echo "retlayer_room.innerHTML = '".$retroomlayercont."';\n";
echo "var retlayer_chat = getElement(\"converse\");\n";
echo "retlayer_chat.innerHTML = '".nl2br($retconvlayercont)."';\n";
echo "treatLines('".$reftime."');\n";
Return er som rent javascript, altså som et remote hentet js.
Jeg vet ikke helt hvorfor jeg begynte å eksperimentere med denne teknologien, det var et tidsfordriv i begynnelsen (2006), for moro. Men så utviklet jeg en applikasjon våren 2007 for å konvertere HTML-kode til DC-board kode, og i den forbindelse brukte jeg teknologien til å hente HTML-koden fra url via et php-script. Mer om den applikasjonen her.
Parallelt drev jeg med utviklingen av en bildebehandlingsapplikasjon for xPresso publisering, og da ble JX for første gang benyttet bevisst. Den applikasjonen benytter JX ekstensivt i kall for å hente lister av bilder, filer og artikler, i skriveskjemaet for artikler. På den måten kan man laste opp, eller finne bilder uten å forlate skjemaet.

Dette er retur fra et søk. Bildeverktøyet kjører over ingress og artikkeltekst, og brukes til bilde-, fil- og video-opplasting/gjenfinning.

Verktøy i artikkelskjema.

Hele artikkelskjema, applikasjon sammentrukket over ingress og brødtekst skjema.
Neste applikasjon som ble utviklet i JX var den 3DES-krypterte chatten AnoChat, utviklet mellom august og desember 2007. Dette var et rent eksperiment der JX ble valgt uten å tenke på det. Målet var å se om man kunne naturalisere en rutine der Javascript ble brukt som krypteringsverktøy med typed-in key som eneste nøkkel, altså sette det opp for bruk i et normalt grensesnitt. Den ble veldig bra og JX, som høsten 2006 var et rent eksperiment kalt 'cheat Ajax', var blitt 'voksen' nok til å kjøre som en motor i en chat med mange bruker-funksjoner og et genuint interessant teknologisk fundament.

Chatroom, Redstar skin
AnoChat fikk senere en brutter i den krypterte BBSen AnoBBS, men denne gang brukte jeg genuin Ajax, JX finnes kun i søkeformen på hovedsiden.
Våren 2008, mens jeg utviklet på AnoBBS, utviklet jeg en applikasjon som en klasseliste i et lærerverktøy, for Oslo Voksenopplæring. Dette er det villeste prosjektet jeg noen gang har ad-hoc'et. Det var en klasseliste som tok opptil et minutt å laste, for hver klasse, og jeg utviklet en test-applikasjon for å vise hvordan man kan gjøre dedikerte spørringer og slik spare lærerne for mye frustrasjon.
Her brukte jeg JX fordi jeg ikke var sikker på om Ajax funket - backend var i 4GL-språket Uniface, som returnerer som standard letter and reports.
Men JX fungerte bra, applikasjonen leverte akkurat det den skulle: et klasseliste-skjelett med elevnavn og dedikerte spørringer for hver elev om man ville hente flere detaljer.

Klasseliste, sammentrukket.

Klasseliste, ekspandert. Hvert felt er en egen JX-spørring, som returnerer i et layer og ekspanderer det. Fra å vente i 30-60 sekunder på at full klasseliste skal laste, lastes skjelett med elevnavn og knapper i applikasjonen på 3 sekunder, og hver spørring deretter tar ca. 1 sekund.
Helt texas å i det hele tatt prøve dette på Uniface-systemet, men det funket. Laget senere en test med genuin Ajax, og det fungerte fint både med XML og JSON.
Men dette var på mange måter 'JX goes to Hollywood', tech-wise. Uniface to Oracle spørringer, returnert som standard brev og rapporter, det er ikke hverdagskost.
Les mer om denne applikasjonen her.
Den siste applikasjonen jeg utviklet i JX er en petisjon for Støttekomiteen for Vest-Sahara, for bruk på www.fishelsewhere.eu. Den ble utviklet høsten 2009, og er kanskje en av de siste jeg utvikler med denne teknologien.
Her er en skjermdump fra fish-petisjonen:

Det er egentlig ikke noe point i å bruke JX når Ajax er tilgjengelig, den gir ingen fordeler annet enn at php-scriptet kan ligge hvor som helst, mens Ajax er bundet til å kjøre backend-scripts på den serveren siden ligger på. Returscript til JX er ikke vanskelig å lage, men er ikke humanized som XML. Kan også returnere som JSON, selvfølgelig.
Bob bob. Vanskelig å si om den har noen fremtid, men det har vært ufattelig gøy å utvikle med JX siden 2006, det er det ikke tvil om. Den aksepterer lange variabler nok til å kontrollere en applikasjon som chat, returnere avanserte lister og skjemaer, gjøre del-spørringer og laste ini-filer.
Begrensninger:
JX har samme begrensning som Ajax i bilde-/filopplasting, og kan bare sende GET-variabler. Brukeropplevelsen er den samme som ved Ajax, siden laster ikke om og gis et dynamisk preg som kan reguleres fra små enkle oppdateringer 'nu og da' til aktiv chatting der RPC foregår mange ganger i sekundet.
Jeg har laget et superenkelt eksempel her som sammenligner bruk av JX, Ajax og iframe. Samme funksjonalitet, forskjellig teknologi. Inkludert scripts.

0 kommentarer:
Legg inn en kommentar