Soluții - PC Magazine Romania, Aprilie 2004
MIDP - programare pe înțelesul mobilelor
Mircea Scărlătescu
Ați avut ocazia să citiți în numerele trecute despre ce înseamnă programarea
pentru telefoane mobile JavaEnabled. Desigur că cea mai bună metodă de învătare
este experimentarea API-ului și a uneltelor de dezvoltare. Aici însă vă oferim
o serie de sfaturi din punctul de vedere al ergonomiei și al eficienței programelor
pe care le veți realiza.
Orice program (din orice domeniu, didactic, programare în timp real, grafică
etc.) va fi întodeauna catalogat din punctul de vedere al vitezei de
execuție. Deși, în cazul PC-urilor de azi, și mai ales în domeniul
serverelor, viteza nu mai este o problemă atât de stringentă (puține programe
utilizează serios un calculator în ziua de azi) pentru un device mobil, care
folosește procesoare mult mai lente și cu resurse mult limitate, viteza de execuție
redevine o problemă de actualitate.
Cum îmbunătățim viteza de execuție a unui program? Nu sunt puțini programatorii
care sunt de acord că un program rulează de obicei 75% din perioada de viață
într-o zonă de cod care este cam 10% din totalul programului. Așadar, aceste
zone trebuie identificate, și e obligatoriu să găsim cei mai buni algoritmi
pentru aceste zone de execuție. Având în vedere faptul că un program în ziua
de azi poate să însemne în mare parte apeluri către biblioteci deja făcute de
alții, modul de funcționare al acestor biblioteci trebuie atent studiat. Dacă
un apel către o funcție de bibliotecă ce nu vă aparține durează prea mult până
se execută, atunci poate e un semn să folosiți altă funcție, altă bibliotecă
sau să vă scrieți chiar voi o bibliotecă, mai bună decât cea existentă. De asemenea,
atunci când proiectați un soft pentru un telefon mobil, țineți cont de capacitățile
și specificațiile acestuia. Viteza unui program pe două tipuri de telefoane
diferite poate să varieze semnificativ. Totodată, încercați să fiți cât mai
la curent cu schimbările realizate de producătorii telefonului în arhitectura
lui, influența acestor schimbări putând fi semnificativă.
Interfața grafică a unui program este deosebit de importantă
pentru performanțele unui soft pentru J2ME. Și la calculatoarele personale,
grafica unui joc este cea care de cele mai multe ori vă va face să constatați
că sistemul dumneavoastră este rămas în urmă. Același lucru este valabil pentru
un telefon. Grafica unui program nu trebuie să fie prea încărcată, nu trebuie
să conțină elemente care să nu aibă o funcționalitate directă (imagini fără
rost, eventual și de dimensiuni mari J). Problema devine ceva mai complicată
atunci când discutăm de MIDlet-uri care sunt jocuri. Atunci valoarea programatorului
iese cel mai bine în evidență. Evitați operațiunile de "repaint" a
ecranului când nu este cazul. Dacă se poate, redesenați doar porțiunea care
de la un frame la altul se schimbă. Efectul viziual este același, în schimb
procesorul este mai puțin utilizat, operația devenind mai rapidă.
Programamea multi-thread în cadrul unui program poate să aducă
importante beneficii. Task-uri care se pot executa în paralel cu o operație
de transmitere pe rețea via HTTP spre exemplu se pot implementa în thread-uri
separate, și astfel crește mult eficiența programului. Thread-urile se pot aștepta
unele pe altele dacă este nevoie, dar cert este că eficiența va crește simțitor,
mai ales la programele care lucrează cu rețeaua de comunicație. De asemenea,
în aceeași sferă a comunicației cu alte device-uri mobile, proiectați protocoalele
de comunicație cât mai eficient, tinând seama că rețelele wireless de azi nu
au viteza unei rețele Ethernet. Și este neplăcut dacă un program afișează un
icon de gen "Loading" sau "Uploading" mult prea des în execuție.
Desigur, aici modul de programare ține mult de experiență, și de studiul comportării
unui cod pe un device real, sau pe un emulator de calitate.
Reducerea dimensiunii arhivelor JAR este deosebit de importantă
pentru un utilizator. Traficul generat pentru încărcarea pe telefon printr-o
rețea a unui JAR de cele mai multe ori se plătește, și nimeni nu vrea costuri
mari pentru o factura, nu? :) Deci trebuie avut în vedere că o arhivă JAR va
fi mai mare sau mai mică în funcție de dimensiunea fișierelor pe care le conține.
Așadar, în programarea J2ME e de multe ori mai bine să nu încărcați biblioteci
mari, din care folosiți metode prea puține.
Demodata metodă "Ctrl-C -> Ctrl-V" pentru metode și funcții se
poate dovedi foarte eficientă, din acest punct de vedere.
V-am prezentat 4 puncte de reper pentru eficientizarea programării pentru device-uri
mobile. Desigur, există și multe alte soluții, dar la acestea vom mai avea timp
să ne referim.
Mult succes!
|