Putiferio programmatoriale

OK dai piani alti non arrivano sempre direttive molto chiare,per cui oggi ho proposto ai miei relatori di proseguire sostanzialmente per passi:

  • realizzazione di un'applicazione client/server java in J2ME Personal Profile (a dopo per le spiegazioni);
  • realizzazione di un client/server in Visual C++;
  • ovviamente i due devono comunicare tra loro bel seguente modo: l'applicazione java devespedire dei comandi al server il quale li rigirerà al TomTom tramite le API fornite nel suo SDK. Ricevuta la risposta la porterà di nuovo all'attenzione dell'applicazione java.

Facile no? :-D Insomma,partiamo per punti:

  • J2ME è sostanzialmente strutturato secondo 3 elementi principali:
  • 1 - le configurazioni (CDC e CLDC): CDC è orientata per dispositivi con capacità di calcolo maggiori come smatphone e PDA,mentre CLDC il contrario. Forniscono un set di API comuni per un vasto range di dispositivi;
    2 - i profili: sono delle API più specifiche. Ogni configurazione ha i suoi profili,per esempio CLDC ha MIDP (le famose MIDlet) mentre CDC ne ha 3 tra cui quello a cui sono interessato ossia Personal Profile;
    3 - package opzionali per tecnologie specifiche;

javame_components

Il bello comunque è che quanto già conosci per J2SE può esser in qualche modo sfruttato anche per il Personal Profile poichè supporta tutte le API del JDK v.1.2 e le AWT 1.1. Quindi supporta sockets,StringTokenizer e altre amenità non presenti per MIDP.

Quanto al programma in C++: io devo creare un applicazione che vada su un Pocket PC con Windows Mobile 2003 SE (il cui cuore se non erro è comunque Windows CE). Devo trovare come aprire le socket sui palmari. Non è importante abbia interfaccia grafica,anzi penso proprio non freghi a nessuno.

Fatti questi due punti si potrebbe lanciare l'eseguibileda java direttamente come server in ascolto  e passargli tutti i nostri sporchi comandi.
E posso usare tranquillamente J2SE v. 6 credo,basta usare le API supportate dalla vecchia versione,anche perchè l'installer JDK 1.2 su Vista non ne vuol sapere di esser eseguito (un workaround è farselo installare da qualcuno con XP e farsi tornare indietro il contenuto della cartella,il problema sta nell'installer,non nel contenuto!)
Quindi non credo ci siano particolari configurazioni da fare per Eclipse ( se non l'impacchettamento in un file jar suppongo...mi devo informare).

I link d'oro sono:

  • PersonalJava Compatibility Classes: classi addizionali disponibili nelle API PersonalJava API ma non disponibili nel corrispondente JDK. Tali classi permettono alle applets e applicazioni sviluppate con PersonalJava di esser eseguite in un ambiente basato su JDK.
  • JavaCheck: tool per testare se l'applicazione sarà compatibile con un particolare ambiente Java e perciò se possa essere eseguita su tutti i dispositivi che implementano tale ambiente Java. analizza i file .class per cercare dipendenze non incluse in particolari APIs. Ciò permette agli sviluppatori di creare applicazioni che vengano eseguite in modo sicuro su differenti implementazioni Java . JavaCheck legge i platform specification files (.spc), files specifici per certe API i quali sono stati codificati (disponibile solo per PersonalJava);
  • PersonalJava Emulation Environment: verifica che le applicazioni scritte possano girare in un ambiente che supporta Personal Java. (NON VISTA COMPATIBILE: un workaround è farselo installare da qualcuno con XP e farsi tornare indietro il contenuto della cartella,il problema sta nell'installer,non nel contenuto!)
  • Writing an application for the J2ME Personal Profile: la domanda che ho posto a google e che mi ha fatto trovare tutto quello che mi servivia :-D

  • Java ME Technologies Personal Profile forum;

Qualcuno ha idee,link,conosce libri su come sviluppare un'applicazione per Pocket PC che:

  • abbia funzionalità di rete;
  • utilizzi classi C++ (quindi niente metodi particolari del .NET Framework);

Any help is appreciated thanks ;)

6 comments:

Federico ha detto...

Che cosa deve fare di preciso l'applicazione J2ME e soprattutto su quali device la devi installare?

Christian ha detto...

@fede: Ciao,praticamente nel mio laboratorio hanno fatto un software di navigazione GPS in J2ME Personal Profile,solo che gli mancano le mappe e il modo per visualizzare i dati su di essa.
Siccome han preso il TomTom e il suo SDK composto di classi in C++,io al momento vorrei far comunicare tramite Socket il programma Java e quello per Pocket PC di modo che tramite il prog. in Java possa inviare dei comandi al programma in C++ per interfacciarsi al TomTom. Essenzialmente quindi è un progetto di rete.
Il dispositivo su cui sto testando le cose è un Qyek 9090 con Windows Mobile 2003 SE come sistema operativo. Solo che ho creato delle midlet in passato ma in Personal Profile mai,quindi devo un po' capire come funziona la faccenda. tu hai esperienza in proposito? Scusa se so stato prolisso,spero almeno di essermi fatto capire!

Teo ha detto...

openmoko http://wiki.openmoko.org/wiki/Main_Page/it non so quanto possa fare al caso tuo... ha un core linux, scritto in C, ha le librerie per il gps e il bluetoothgia pronte... certo è che se sei vincolato allora nulla

Federico ha detto...

@christian
Per recuperare le mappe puoi si interfacciarti a TomTom ma è un pò "arzigogolata" come soluzione, IMHO.
Per recuperare l'immagine di dove ti trovi, visto che le coordinate GPS già le hai puoi utilizzare un servizio tipo questo

http://developer.yahoo.com/maps/rest/V1/mapImage.html

Ti serve soltanto una classe che effettua una connessione HTTP e hai l'immagine.
Poi per disegnare sopra all'immagine ti devi divertire con il profilo J2ME che stai utilizzando. Il mio consiglio è di "ritagliare" il codice di navigazione GPS e piazzarlo dentro un'app J2ME con profilo MIDP, perchè la puoi testare su più device (e poi vuoi mettere su un qualsiasi cell è più fashion la tesi :P).
Se hai problemi nel "riutilizzo" del codice già scritto per Personal Profile, puoi dare un'occhiata al seguente link dove c'è un bel parser NMEA che voglio utilizzare da parecchio

http://www.hcilab.org/documents/tutorials/NMEA_Parser/NMEA_Parser.htm
http://www.hcilab.org/documents/tutorials/BT_GPS/BT_GPS.htm

Christian ha detto...

@federico: grazie per il contributo! Sembra molto interessante quello che hai scritto e ne terrò presente sicuramente per progetti personali.
Ad ogni modo:
* quel servizio di Yahoo mostra una locazione su una mappa,ma mancano tutti i servizi per mostrare un itinerario,punti di interesse,ecc;
* sono vincolato al Personal Profile (e a dispositivi tipo PDA) perchè quel che vado a creare sarà integrato in un progetto del mio laboratorio (che al momento conta circa 60 classi);
* è già stato preso l'SDK per TomTom (pagandolo!) quindi mi sa che,se pur arzigogolata come soluzione,mi tocca adottarla.

Ad ogni modo grazie,molto interessante come spunti :)

Federico ha detto...

Prego :)

Byte Strike Blog - Designed by Posicionamiento Web | Bloggerized by GosuBlogger