450 likes | 616 Views
SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA. Java i nosivo računarstvo. Dipl.ing. Marko Horvat. Predavanje u sklopu predmeta “Mikroračunala”. Nosivo računarstvo. “Java i prožimajuće računarstvo” ali zbog fokusa na SW sadržaj za mobitele ipak “...nosivo...”
E N D
SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA Java i nosivo računarstvo Dipl.ing. Marko Horvat Predavanje u sklopu predmeta “Mikroračunala”
Nosivo računarstvo • “Java i prožimajuće računarstvo” • ali zbog fokusa na SW sadržaj za mobitele ipak “...nosivo...” • Dva srodna termina: • Wearable computing = nosivo računarstvo • Pervasive computing, Ubiquitous computing = prožimajuće računarstvo • Nosiva računala... • uvijek rade, tj. uvijek su spremna za interakciju sa korisnikom • korisnik ih ne koristi direktno, ona povećavaju njegovu inteligenciju ili mogućnosti osjetila • enkapsuliraju korisnika (bolje od laptopova, PDA uređaja) • Sinergija čovjeka i računala • 6 svojstava nosivog računala: • ne limitiraju korisnika, ne preuzimaju njegovo vrijeme, podaci sa njih su jasno vidljivi, korisnik im lako upravlja, komuniciraju sa okolinom, komuniciraju sa drugim sustavima/korisnicima
Prožimajuće računarstvo • 2 karakteristike sistema prožimajućeg računarstva: • fizička integracija • u pametnoj sobi sa zastanke: pametna šalica za kavu (Javu?) zna tko je njezin vlasnik, može pružiti određene servise; pametne stolice, stol, ploča (whiteboard) opremljene senzorima, moguće ih je umrežiti sa PDAovima sudionika sastanka – automatski prenos sadržaja ploče u PDA • spontana interoperacija • u dinamičnoj okolini koja se mijenja sustavi se međusobno spontano udružuju u mreže, omogućuju prenos i korištenje različitih podataka • otac prožimajućeg računarstva • Mark Weiser, chief technology officer u Xeroxovim laboratorijima (Paolo Alto) – mjesto odakle je potekao osobno računalo, GUI, intranet • ideje (a i realizaciju) njihovih proizvode kopirao je Steve Jobs (Mac), a kasnije njega je kopirao Bill Gates (Microsoft)
Danas Digitalni ručni satovi Ručna računala, dlanovnici, PDA (Personal Digital Assistans), Palm, Visor – PalmOS, Windows CE
Danas (2) Siemens SL45i – Java ME, MP3, 128 MB RAM, ... Nokia 9xxx Communicator – Symbian OS, Personal Java, Java ME, mobitel i ručno računalo, ... Nosivo računalo u upotrebi u američkoj vojsci na nosačima aviona – brz pregled nacrta, planova, TODO lista, ... Transmeta Wearable Computer – nosi se oko pojasa
Nosivo računarstvo sutra? • kao i općenito u računalstvu: • dimenzije uređaja će biti još manje, a mogućnosti još veće • ali prag omjera dimenzija i mogućnosti prenosnih računala već je prijeđen • npr. ručna računala (Palm, Visor), napredni mobiteli – “više klase” • kako će cijene padati, i potražnja tržišta rasti, u skoroj budućnosti vidjeti ćemo sve više “jakih” i korisnih nosivih računalnih uređaja • taj trend je već sada vidljiv... • za taj povećani broj mobilnih uređaja potrebno je napraviti kvalitetni softwarski sadržaj • potrebni su napredni programski jezici u kojima se može što brže napraviti što kvalitetniji SW proizvod!
Zašto Java i nosivo računarstvo? • Java je veoma dobar (najbolji?) odabir za sustave nosivog računarstva • Jer Java je... • prenosiv jezik - radi na mnogim platformama • stvara male izvršne datoteke - od nekoliko kB naviše • raširen je i visoko korišten • jednostavan za upotrebu i programiranje • A također je i... • objektan - jednostavno je skalirati, proširivati programe • distribuiran - korištenje mrežnih protokola je ugrađeno u Javu • robustan - potpora za hvatanje i obradu grešaka i iznimaka • siguran, višenitan (višedretven), dinamičan, ... • Najbitnije je da proizvođači uređaja podrže Javu • bez toga nije važno koliko je Java dobra, ili ne... • broj mobitela koji podržavaju Javu u zadnje vrijeme rapidno raste
Uvod • Programski jezik Java je proizvod američke računalne tvrtke Sun • Tvrtka i dan danas ima isključivo pravo na izmjene jezika i njegove arhitekture • dobiven spor sa Microsoftom i njegovom verzijom Jave kao još jednog jezika za programiranje Windowsa • Razvoj jezika pokrenut je 1991., a završen 1995. • Danas aktuelna verzija Jave nastala je 1997. i od tada se razvija dalje
Uvod (2) • Osnova misao vodilja: multiplatformski programski jezik • jednostavan i visokih mogućnosti • Osnovno: Java programski kod se komapajlira u byte-code (međukod) i interpretira na Java Virtual Machine (JVM, Javin virtualni stroj) • .java datoteke • datoteke sa izvornim kodom • .class datoteke • datoteke sa kompajliranim izvornim kodom • Javine “izvršne” datoteke • interpteriraju se, “izvršavaju” na Javinom virtuelnom stroju • Slično je napravljena Microsoftova .NET platforma Hello World aplikacija
Arhitektura Java bajt kod (neovisan o platformi) Java izvorni kod Java interpreter (Windows) Java kompilator (Windows) Java interpreter (Mac) Java kompilator (Mac) Java kompilator (Solaris) Java interpreter (Solaris)
Javine verzije i tehnologije • 3 osnovne verzije: • J2EE (Java 2 Enterprise Edition) • J2SE (Java 2 Standard Edition) • J2ME (Java 2 Micro Edition) • I veliki, veliki broj tehnologija… • Za J2EE: Enterprise JavaBeansTM Architecture, JavaServer PagesTM, JavaTM Servlet, Java Naming and Directory InterfaceTM (JNDI), JavaTM IDL, JDBCTM, JavaTM Message Service (JMS), JavaTM Transaction (JTA), JavaTM Transaction Service (JTS), JavaMail, RMI-IIOP • Za J2SE: JavaBeansTM Development Kit (BDK), Java HotSpotTM Server Virtual Machine, Collections Framework, JavaTM Foundation Classes (JFC), Swing Components, Pluggable Look & Feel, Accessibility, Drag and Drop, Security, JavaTM IDL, JDBCTM, JavaBeansTM, Remote Method Invocation (RMI), Java 2DTM, JavaTM Platform Debugger Architecture (JPDA) • Consumer & Embedded Technologies & Products: Java 2 Platform, Micro Edition (J2METM technology), Connected Device Configuration (CDC), Connected Limited Device Configuration (CLDC), C Virtual Machine (CVM), K Virtual Machine (KVM), PersonalJavaTM, EmbeddedJavaTM, Java CardTM, JavaPhoneTM API, Java TVTM API, JiniTM Network Technology, Mobile Information Device Profile (MIDP) • I druge… • Da li je moguće sve znati?
Povijesni razvoj • Razvoj pokrenut na zasebnoj lokaciji početkom 1991. • U sklopu razvoja projekata za komercijalnu elektroniku • Za programiranje mikroprocesora televizora, video-uređaja, glazbenih linija, mikrovalnih pećnica, tostera, strojeva za pranje rublja, ... • Tražio se jedinstveni računalni jezik koji će se izvršavati na različitim tipovima mikroprocesora • Projekt Green i programski jezik Oak (hrast) • James Gosling – nakon neuspješnog prilagođavanja C++ zbog prevelike složenosti odlučio napraviti novi jezik • Uzeti osnove C-a i prilagoditi za elektroničke uređaje • “C++ minus minus” • započevši rad na kompajleru otvarao je novi direktorij, nije znao kako da ga nazove, pogledao je van kroz prozor i vidio hrast...
Povijesni razvoj (2) • U Oaku su pisane aplikacije za PDA uređaj * 7 (“star seven”) • *7 je redosljed tipaka na telefonu koje se treba pritisnuti da se u Sunovom sjedištu preuzme poziv sa drugog telefona • *7 je koristio operativni sustav GreenOS koji je imao animirano grafičko sučelje • Duke (Javina maskota) • sve što je ostalo od *7 ... Primjer: Duke MIDlet • Za Demonstraciju mogućnosti Oaka na World Wide Webu Sun je razvio aplikaciju WebRunner • kasnije pretraživač HotJava • Program napisan u Javi koji je mogao pokretati druge programe napisane u Javi • Uvelike popularizirao Javu
Povijesni razvoj (3) • Debut 23. svibnja 1995. na sajmu SunWorld ’95 • 4 godine nakon početka razvijanja projekta • Verzija 1.0 - siječanj 1996. • Konačna verzija Jave • Sve klase moguće je sažeti u jednu ili više ZIP datoteka (JAR – Java Archive). Time se ubrzava dohvaćanje Java programa i appleta sa Interneta. • Verzija 1.0.2 – svibanj 1996. • Otklonjeni neki sigurnosni problemi • Verzija 1.1 – siječanj 1997. • Uvedene Listener klase za registriranje događaja • Još uvijek aktualna u najnovijim verzijama važnijih Internet browsera: IE i NC
Povijesni razvoj (4) • Verzija 1.2 • Swing klase –za izradu naprednih grafičkih korisničkih sučelja • Nazvana (kao i sve kasnije verzije) “Java 2” • Verzija 1.3 • Verzija 1.4 • Razvoj se nastavlja...
Mogućnosti i svojstva • “Java je jednostavan, objektno-orijentiran, distribuiran, interpretiran, robustan, siguran, prenosiv, visokoučinkovit, višenitan i dinamički programski jezik” – Sunova službena dokumentacija • Jednostavnost • Jednostavna sintaksa, Java je laka za učenje, “pojednostavljeni C” • nema pokazivača (pointera) • nije moguće direktno čitati, ili pisati po memoriji • upravljanje memorijom je automatsko • Garbage collector čisti memoriju umjesto dekonstruktora klasa • goto ključna riječ, ali zabranjena uporaba • Objektna orijentiranost • Osnovni element građenja programa u Javi je klasa • Samo neki najjednostavniji tipovi podataka (int, char, boolean) nisu objekti • Distribuiranost • Jednostavna uporaba mrežnih protokola (TCP/IP, FTP, HTTP)
Mogućnosti i svojstva (2) • Prenosivost i interpretiranje – izvorni kod se kompajlira, prevodi u byte-code i interpetira na Javinom virtuelnom stroju • JVM (Java Virtual Machine) – osnovni dio arhitekture • Robusnost – ugrađena potpora za hvatanje i obradu iznimaka • try...catch...finally blokovi • Sigurnost – koristi Java Sandbox – zabranjen direktni pristup memoriji, pokušaji kršenja prava pristupa datotekama na disku, nepravilnih pretvaranja među tipovima podataka, ... • Višenitnost (višedretven, multi-threaded) – korištenje dretvi je ugrađeno u Javu • Dinamičnost – programi pisani u Javi ponašaju se dinamički • jednostavno dodavanje novih objekata, dijelova postojećim Java programima
Pozitivne strane Jave • Što Java daje programeru? • Dosta pozitivnih stvari, nekoliko negativnih! • Pozitivne: • dosad nabrojana mogućnosti i svojstva • brza i jednostavna realizacija (kodiranje) • široko tržište • Java je široko korištena na serverskoj strani (servleti i JSP – Java Server Pages) • široke mogućnosti primjene • multiplatformnost, raznolikost, velike mogućnosti objektno orjentiranog jezika • dobra mogućnost unovčavanja znanja programera...
Negativne strane Jave • Negativne: • sporost u nekim primjenama • prvenstveno GUI i desktop aplikacije • fleksibilni programi širih mogućnosti zahtjevaju upotrebu (znanje) mnogih Javinih tehnologija • JNI (Java Native Interface) za sistemske pozive OS-a • JavaComm za rad sa serijskim i paralelnim izlazima računala • ograničena rasprostranjenost • operativni sustav, mobilni telefon, uređaj mora imati potporu za JVM • ograničene mogućnosti • zbog sigurnosti i specifikacije uređaja na kojima se izvode
Primjeri • Primjeri: Java • Hello World aplikacija • Hello Worldapplet • Hello World aplikacija sa objektima • Prikaz mrežne komunikacije • Primjeri: Java 2 i Swing • Frame applet • JFileChooser applet • JTree applet • BasicTextEditor • MDI primjeri
Uvod • Java 2 Micro Edition = “Mikro verzija” Jave • Java namijenjena malim i mobilnim uređajima • poseban skup funkcija (Java API) i JVM isključivo za upotrebu na uređajima sa malim procesorkim i memorijskim kapacitetima • Ima sva svojstva jezika Java • sintaksa, jednostavnost, objektnost, distribuiranost, višedretvenost, robusnost, sigurnost, ... • Trenutno idealna solucija za implementaciju nosivog računarstva!
J2ME konfiguracije • Konfiguracija = skup pravila koja određuju grupu uređaja za koje je namijenjen određeni Java virtualni stroj • Postoje dvije J2ME konfiguracije: • CLDC • CDC
CLDC konfiguracija • CLDC = Connected Limited Device Configuration • izvršava se na K-virtuelnom stroju (K Virtual Machine, KVM) • podržava ograničen skupa Java 2 funkcija • namijenjen malim uređajima sa ograničenim resursima • mobilni telefoni • PDA (Personal Digital Assistants) • bankomati, ... • ograničenja: • 16/32 bitni mikroprocesor/kontroler • 160 KB ukupne memorije, 128 KB ROM, 32 KB RAM • 9600 bps bandwidth • koristi se na uređajima (mobitelima) sa podrškom za J2ME!
CDC konfiguracija • CDC = Connected Device Configuration • izvršava se na C-virtualnom stroju (C Virtual Machine, CVM) • podržava cjelokupnu Javu 2 • namijenjen široj paleti uređaja, potrošačke elektronike • smart communicators (napredni mobilni telefoni) • pageri • PDA • uređaji za digitalnu televiziju, ... • ograničenja: • 32 bitni mikroprocesor/kontroler • preko 2 MB ukupne memorije • ne koristi se! (još) • još je u fazi nacrta/prijedloga • CLDC je jedina u praksi implementirana J2ME konfiguracija • mobiteli koji podržavaju J2ME implementiraju isključivo CLDC konfiguraciju
MIDP • MID = Mobile Information Device • MIDP = MID Profile • Profil = skup pravila i uvjeta koji dodatno (strože) definiraju pravila iz J2ME konfiguracije • MID profil je baziran isključivo na CLDC konfiguraciji
Sun J2ME software paket • http://java.sun.com/j2me/ • SW paket namijenjen programerima (developerima) za razvoj J2ME aplikacija, tj. MIDleta • sadrži J2ME klase, kompilator, J2ME JVM, sustav pomoći, J2ME emulatore (simulatore mobilnih telefona sa podrškom za J2ME) i ostale alate potrebne za razvoj J2ME koda • može se integrirati sa nekim razvojnim alatima: Sun Forte, Borland JBuilder • Aktuelna verzija J2ME 1.0.3
J2ME emulator • “J2ME simulator” • Izvodi J2ME program i simulira njegovo ponašanje na pravom uređaju (npr. mobilnom telefonu) • Podržava (simulacijom) sve funkcije pravog mobilnog uređaja (mobitela) • Nalazi se u Sunovom J2ME software paketu, ili se isporučuje od proizvođača mobilnih telefona sa podrškom za J2ME (npr. Siemens, Nokia)
Mobilni uređaji sa podrškom za J2ME • Mobiteli: • Siemens: SL45i, SL45 (sa nadogradnjom SW), M50 • Nokia: 3410, 6310i, 7210, 7650, 9210 i 9290 (MIDP i PersonalJava) • Motorola: i85s, i50sx, Accompli 008/6288, i55sr, i80s, i90c • Samsung: SCH-X130, SCH-x350, SPH-I300 • Casio: CdmaOne C452CA • LG: p510, p520 • Hitachi: CdmaOne C451H • J-Phone, Kyrocera, Sendo, Danger, DoCoMo (preko 10 modela) • PDA: • PalmOS, Windows CE 2.11, EPOC (netBook), Psion 5mx, SAVAJE XE, BlackBerry, Symbian • Dobre vijesti: podugačak popis koji se sve više proširuje...
MIDlet • MIDlet • “Mobile Information Device Application” • “applet za MID” • MIDlet je J2ME aplikacija/program • Svi MIDleti koriste sužen skup Java 2 funkcija • CLDC konfiguracija i MID profil • Dostavlja se: • u JAR (Java Archive) datoteci i sa JAD (Java Definition) datotekom • Samo JAD datoteka, a JAR se kasnije downloadira sa Interneta • JAR sadrži sve izvršne .class datoteke i ostalo (slike, konfig. datoteke, ...) • JAD opisuje gdje se JAR nalazi, koliko je velik, kako se MIDlet zove, ... • ako imamo samo JAD datoteku JAR datoteka će se prije izvođenja MIDleta automatski skinuti sa interneta Primjer: MIDlet pozdrav
Razvojni ciklus MIDleta • Termini i postupci specifični za J2ME: • predprovjera (preverifying) • JAD datoteke (Java Definition File) • emulator • Nakon kompajliranja .class datoteke se predprovjeravaju • Traže se reference na klase koje MIDP ne podržava • KVM ne mora provjeravati klase i može biti manji i kompaktniji • Nakon predprovjere .class datoteke se pakiraju u jednu JAR datoteku (JAR datoteke su ZIP formata –> WinZip, WinRAR) • Korak nije obavezan
Razvojni ciklus MIDleta (2) • JAD datoteka mora se napraviti ručno, ili iz J2ME SW paketa (KToolbar aplikacija) • Sadrži aplikacije koje opisuju JAR, njegov naziv i veličinu u bajtovima; naziv i lokaciju MIDleta (Internet, hard disk); koliko je MIDleta u JARu; koja je verzija MIDleta, tko isporučuje MIDlet • JAD datoteka je tekstualna datoteka • Za kompajliranje i pakiranje se koristi Java 2 kompajler i aplikacija za pakiranje (javac.exe, jar.exe) • Za preprovjeru i emulaciju koriste se J2ME aplikacije (preverify.exe, emulator.exe) Primjer 1: JAD, JAR i manifest (MF) datoteke Primjer 2: kompajliranje, predprovjera, emulacija
Prikaz • Ovisi o veličini ekrana, rezolucijama i mogućnosti prikaza boja • J2ME omogućuje zadovoljavajući mehanizam prikaza grafike i tekstualnih poruka • ovisno o potrebi moguće je poboljšati prikaza vlastitim klasama • Važnije J2ME klase za prikaz: Display Displayable Canvas Screen Alert Form List TextBox Primjer: MIDletCanvas pozdrav
Grafika • Grafičke mogućnosti naravno variraju od modela do modela • Grafika u boji (256 boja) ili crno-bijela (2 boje); crno-žuta (SL45i) • Rezolucija... • Procesorske mogućnosti ograničavanju veće grafičke (3D) proračune • treba obratiti pažnju na kvalitetu animacije (broj slika u sekundi; fps) • Mogu se koristiti slike, ali isključivo u PNG formatu • paziti na bandwidth i download time • Klasa Graphics • sadrži metode za ispis teksta, crtanje točke, linije, pravokutnika, dijela kružnice, za popunjavanje istih bojom, za manipulacijom bojama (RGB komponentama), itd. • sužen skup mogućnosti i metoda u usporedbi sa Java2 klasom Graphics • Primjer: Graphics, Amark, TravelingGecko
Korisničko sučelje (UI) • Dozvoljeno je korištenje gumbi, labela, polja za unos teksta (lozinki, brojki, email adrese, URL adrese, telefonskog broja), lista (grupa lista, check boxova, radio buttona) progress barova, modalnih i nemodalnih poruka, kontrola kalendara i sata, slika i pomičnog teksta (Ticker) • Mogućnosti su prilično velike • Relevantne klase i sučelja: Alert, AlertType, Choice, ChoiceGroup, Command, DateField, Gauge, ImageItem, List, StringItem, TextBox, TextField, Ticker Primjer: UIDemo
Rad sa datotekama i mrežom • Jedno od najvećih prednosti J2ME i MIDleta je lak i jednostavan rad sa mrežom, mrežnim protokolima i resursima • i npr. sa ugrađenim modemom, serijskim portom, Bluetooth uređajem • Od početka (J2ME 1.0.1) podržan je HTTP protokol • J2ME 1.0.3 podržava i druge načine mrežnog prijenosa podataka: socket, datagram, file, port • http://www.j2me.com/ • socket://www.j2me.com:1800 • datagram://1800 • file:/j2me.txt • comm:0;baudrate=9600 • mobiteli još ne podržavaju J2ME 1.0.3
Rad sa datotekama i mrežom (2) • Kako komunicirati sa serverom? Kako server može komunicirati sa mobitelom? • pomoću “najobičnijeg” HTTP GET http://www.j2me.com/cgi?a=1&b=1 http://www.j2me.com/servlet?a=1&b=1 • Relevantne klase i sučelja: Connector, Connection, Datagram, DatagramConnection, DataInput,DataOutput, DataInputStream, ... Primjer: Fortune
OEM-ekstenzije • OEM-ekstenzije su dodatan skup J2ME klasa, sučelja i pripadajućih metoda koje se naslanjaju na CLDC konfiguraciju, MID profil i proširuju njihove mogućnosti Primjer: Siemens J2ME API Help • Siemensove OEM-ekstenzije omogućuju slanje SMS-a (uz potvrdu korisnika), uspostavljanje poziva, korištenje vibre, upotrebu dijela phonebooka (zbog sigurnosti), slanje i primanje podataka (SMS, IrDA, serijska veza, modem), komponiranje i sviranje melodija, lakši rad sa grafikom i animacijama • Svoje OEM-ekstenzije nude i drugi proizvođači, npr. Motorola • tako se omogućuje korištenje posebnih funkcija mobitela: Bluetooth sučelja, serijskog porta, IrDa sučelja, vibre, SMS funkcije, itd.
MIDP Record Managment System (RMS) • RMS je skup J2ME klasa i sučelja koje omogućuju pohranu podataka u jednostavnu bazu podataka na uređaju na kojemu se izvodi MIDlet • Pomoću RMSa podaci se mogu trajno pohraniti na mobilnom uređaju i jednostavno dohvatiti kada su potrebni • Poput spremanje konfiguracijskih datoteka, ili sistema Windows Registry • Osnovna klasa: RecordStore • Sučelja: RecordEnumeration, RecordComparator, RecordFilter, RecordListener Primjer: Contacts
Budućnost J2ME • Broj uređaja koji podržavaju J2ME svakodnevno raste • J2ME mobiteli više nisu rijetki, niti skupi • povećava se potreba za J2ME softwareom i sadržajima koje mobilni uređaji mogu ponuditi • tržište traži korisne aplikacije i napredak se nastavlja dalje... • jedino J2ME daje mogućnost pokretanja aplikacija na mobitelima! • Očekuje se implementacija CDC konfiguracije u praksi • snažniji uređaji koji će imati na raspolaganju sve mogućnosti Jave 2 • Konvergencija J2ME i drugih (Java) tehnologija • nova rješenja sjedinjuju prenosivo i ne-prenosivo računarstvo • Sve više praktičnih primjena mobilnog računarstva • obavljanje novčanih transakcija preko mobitela • korištenje različitih web servisa (najbliži restoran, kino, rezervacija ulaznica za kazalište, cijena raznih proizvoda, ...) • chat, igre, zabava...
Relevantni alati i internet adrese • http://java.sun.com/j2me/ • http://www.midlet.org/ • http://www.microjava.com/ • http://www.midletcentral.com/ • http://www.corej2me.com/ • http://wireless.java.sun.com/ • http://www.devicetop.com/ • http://yozone.yospace.com/ • http://www.jguru.com/ • http://wwws.sun.com/software/communitysource/j2me/ • I mnoge druge adrese... • Na Internetu se nalazi puno materijala za J2ME