13. Luento: Esimerkki: Symbianympäristö. Tommi Mikkonen,



Samankaltaiset tiedostot
Agenda. Johdanto Ydin Resurssien hallinta Aktiiviset oliot Dynaaminen muisti Sovellusmalli Laajennokset Yhteenveto

AJAX-konsepti AJAX. Asynkronisuus. Nykyisten web-ohjelmien ongelmia. Asynchronous JavaScript And XML

4. Luento: Prosessit ja säikeets. Tommi Mikkonen,

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

OHJ-4301 Sulautettu Ohjelmointi

Android ohjelmointi. Mobiiliohjelmointi 2-3T5245

Tietokantasovellus (4 op) - Web-sovellukset ja niiden toteutus

13. Esimerkki: Symbianympäristö

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

Ohjelmistoarkkitehtuuri. Verkotettu multimedia. Multimedian vaikutukset. Mediavirtojen puskurointi. Ohjelmointi. Selain-ohjelmistoarkkitehtuuri

C# ja.net. Juha Järvensivu 2007

Web Services tietokantaohjelmoinnin perusteet

14. Poikkeukset 14.1

VisualStudio Pikaopas, osa 1: WEB sivujen suunnittelu

Järjestelmäarkkitehtuuri (TK081702) AJAX, Asynchronous JavaScript And XML. AJAX, Asynchronous JavaScript And XML

Järjestelmäarkkitehtuuri (TK081702) Järjestelmäarkkitehtuuri. Järjestelmäarkkitehtuuri

Javan asennus ja ohjeita ongelmatilanteisiin

Web Service torilla tavataan!

FinFamily PostgreSQL installation ( ) FinFamily PostgreSQL

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

Käyttöjärjestelmät: prosessit

TIETOKONEYLIASENTAJAN ERIKOISAMMATTITUTKINTO

Virtualisointiympäristössä on kolme pääosaa: isäntä (host), virtualisointikerros ja vieras (guest).

Rinnakkaisohjelmointi kurssi. Opintopiiri työskentelyn raportti

14. Poikkeukset 14.1

10. Luento: Kohti suurempia sulautettuja ohjelmistoja. Tommi Mikkonen,

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

Järjestelmäarkkitehtuuri (TK081702)

Microsoft Visual Studio 2005

11/20: Konepelti auki

Proseduurit, funktiot ja herättimet - esimerkkeinä Oracle, SQL Server, MySQL ja OCELOT. Jouni Huotari S2008

Dart. Ryhmä 38. Ville Tahvanainen. Juha Häkli

PROSEDUURIT, FUNKTIOT JA HERÄTTIMET - ESIMERKKEINÄ ORACLE, SQL SERVER, MYSQL JA OCELOT JOUNI HUOTARI K2009

Lab SBS3.FARM_Hyper-V - Navigating a SharePoint site

Object Framework - One. OF-1 is a high-productive Multi-UI OpenEdge data driven development framework. Veli-Matti Korhonen

Digitaalisen median tekniikat. Luento 4: JavaScript

19/20: Ikkuna olio-ohjelmoinnin maailmaan

XPages käyttö ja edut Jarkko Pietikäinen toimitusjohtaja, Netwell Oy

Microsoft Visual Studio 2005

Tikon Ostolaskujenkäsittely/Web-myyntilaskutus versio 6.3.0

Ohjelmoinnin peruskurssien laaja oppimäärä

Tikon Ostolaskujenkäsittely/Web-myyntilaskutus versio 6.4.0

A TIETORAKENTEET JA ALGORITMIT

Pedacode Pikaopas. Web-sovelluksen luominen

815338A Ohjelmointikielten periaatteet

CT50A2601 Käyttöjärjestelmät Androidin ja Symbianin vertailu Seminaarityö

T Henkilökohtainen harjoitus: FASTAXON

PUSH palvelut mobiilikehityksessä: Android ja Windows phone 7. Pauli Kettunen

14. Luento: Kohti hajautettuja sulautettuja järjestelmiä. Tommi Mikkonen,

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. X Poikkeusten käsittelystä

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta

CLOUDBACKUP TSM varmistusohjelmiston asennus

Pedacode Pikaopas. Web Service asiakasohjelman luominen

Graafisen käyttöliittymän ohjelmointi Syksy 2013

Järjestelmäarkkitehtuuri (TK081702) Lähtökohta. Integroinnin tavoitteet

TEHTÄVÄ 5: Microsoft Virtual PC asennus ja hallinta

MultiSender -mobiilisovellus

Ylläpitäjät, järjestelmäarkkitehdit ja muut, jotka huolehtivat VMwareinfrastruktuurin

9. Muunneltavuuden hallinta

Aditro Tikon ostolaskujen käsittely versio SP1

OHJELMISTOKEHITYS -suuntautumisvaihtoehto

RINNAKKAINEN OHJELMOINTI A,

JWT 2016 luento 11. to klo Aulikki Hyrskykari. PinniB Aulikki Hyrskykari

KOHDELUOKAN MÄÄRITTELY

.NET ajoympäristö. Juha Järvensivu 2007

Aditro Tikon ostolaskujen käsittely versio 6.2.0

Johdatus ohjelmointiin

Koodistoeditorin toteutuksen lähtökohtia: KaPA-koodistopalvelu ja REST-rajapinnat

812336A C++ -kielen perusteet,

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

FinFamily Installation and importing data ( ) FinFamily Asennus / Installation

Ohjelmoinnin peruskurssien laaja oppimäärä

SQL Server 2008 asennus

REST rajapintana mobiilikehityksessä

JavaRMI 1 JAVA RMI. Rinnakkaisohjelmoinnin projekti 1 osa C Tekijät: Taru Itäpelto-Hu Jaakko Nissi Mikko Ikävalko

Ohjelmoinnin peruskurssien laaja oppimäärä

Harjoitustyö: virtuaalikone

Osio 4: Tietovirrat. Properties- eli ominaisuustiedostot Logger: lokitietojen käsittely

Täysautomatisoitu raportointiympäristö. Joni-Petteri Paavilainen Jani Alatalo

Sovellusarkkitehtuurit

Linux rakenne. Linux-järjestelmä koostuu useasta erillisestä osasta. Eräs jaottelu: Ydin Komentotulkki X-ikkunointijärjestelmä Sovellusohjelmat

Ohjelmoinnin peruskurssien laaja oppimäärä

XML prosessori. XML prosessointi. XML:n kirjoittaminen. Validoiva jäsennin. Tapahtumaohjattu käsittely. Tapahtumaohjattu käsittely.

Asynkroninen ohjelmointi.net 4.5 versiolla

Rajapinta (interface)

Encapsulation. Imperative programming abstraction via subprograms Modular programming data abstraction. TTY Ohjelmistotekniikka

Ohjelmoinnin peruskurssien laaja oppimäärä

Pedacode Pikaopas. Tietokantaa hyödyntävän sovelluksen luominen

Salasanan vaihto uuteen / How to change password

Mainosankkuri.fi-palvelun käyttöohjeita

JAVA-OHJELMOINTI 3 op A274615

Arto Salminen,

Javan semaforit. Joel Rybicki, Aleksi Nur mi, Jara Uitto. Helsingin yliopisto

Sisällys. 18. Abstraktit tietotyypit. Johdanto. Johdanto

Integrointi. Ohjelmistotekniikka kevät 2003

Office 2013 ja SQL Server 2012 SP1 uudet BI toiminnallisuudet Marko Somppi/Invenco Oy

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();

Sisällys. 6. Metodit. Oliot viestivät metodeja kutsuen. Oliot viestivät metodeja kutsuen

Transkriptio:

13. Luento: Esimerkki: Symbianympäristö Tommi Mikkonen, tommi.mikkonen@tut.fi

Agenda Johdanto Ydin Resurssien hallinta Aktiiviset oliot Dynaaminen muisti Sovellusmalli Laajennokset Yhteenveto

Symbian OS johtava älypuhelinten käyttöjärjestelmä. Takana loistava tulevaisuus Joidenkin mielestä kuuluisa siitä, että Symbian-ympäristössä on kelju ohjelmoida Joidenkin mielestä hieno siksi, että monet sulautetun ohjelmoinnin erikoistarpeet on huomioitu elegantisti Joidenkin mielestä edellä olevat seikat ovat sama asia ;-)

(Mikro-)Ydin Sovellus 1 Sovellus 2 DLL DLL DLL Resource Access API Käyttöjärjestelmän ydin (välittää viestejä) Resurssi 1 Resurssi 3 Resurssi 2

Resurssi ~ Palvelin Sopii sekä ohjelmisto- että laitteistoresursseille Joskus pohjalla laitteisto ja päällä kerroksittain ohjelmistoa Erilaiset palvelimet mahdollisia Käynnistetään bootissa, ei ajeta alas koskaan Käynnistetään kun sovellus käynnistyy, ei ajeta alas koskaan Käynnistetään kun sovellus käynnistyy, ajetaan alas kun sovellus lopettaa Yleensä eri prosesseissa, joskus optimoidaan kuitenkin usea palvelin samaan prosessiin Toteutettu kuitenkin omina säikeinään

Joitakin palvelimia File Server... Tiedostojärjestelmä Windows Server... GUI Database Server... Globaali data Comms Server... Sarjaportin käyttö Socket Server... Sokettiyhteys Telephony Server... Puhelinominaisuudet Messaging Server... SMS, MMS, EMail Camera Server... Kamera CONE Server... GUI:n ohjaus Media Server... Audio ja multimedia Font and Bitmap Server... Fontit ja bittikartat ja monia muita

Palvelimien toteutuksesta Palvelimien toteuttamiseksi tarvitaan kätevä tapa käsitellä viestejä (ja muita tapahtumia) Samalla ei saisi haaskata resursseja Symbian-ympäristössä toteutus perustuu aktiivisiin olioihin jotka sarjallistavat tapahtumien käsittelyn yhdellä säikeellä tehtäväksi

Tapahtumankäsittelystä Tapahtumat Tapahtumat Aktiivinen Vuorontaja (1 per säie) Säieperustaisia tapahtumankäsittelijöitä Tapahtumankäsittelijät (aktiivisia olioita)

Miten se toimii? Application Create and Install Active Scheduler 1 2 Create AO, issue request, add to Scheduler 4 Start Scheduler Active scheduler Wait for any req Call AO RunL Active object Activate request function set iactive true 6 3 Service provider Set istatus to Pending Service complete 5 Req completed, reset istatus Cleanup, terminate 7 RunL (redo/quit)

Nimeämisestä Class names start with C Kernel class names start with D Type names start with T Mixin class names start with M Enumerated class names start with E Resource names start with R Method names start with a capital letter Names of methods that can throw an exception end with L (or LC) Simple getters and setters reflect the name of the variable Instance variable names begin with i Argument names begin with a Constant names begin with K Automatic variable names begin with lower-case letters

Poikkeukset: Kotikutoinen toteutus TRAPD(error, BehaveL()); // try if (error!= KErrNone) // Exception handler { // catch if (error == KErrNotSupported) {...} if (error == KErrUnknown) {...} } User::Leave(KOutOfMemory); // throw

Poikkeukset ja muistinvaraus Ylimääritelty new: c = new (ELeave) CMyClass(); Toteutus: c = new CMyClass(); if (!c) User::Leave(KOutOfMemory); return c;

Entäpä pinosta varatut muuttujat? Before an exception Memory garbaging after an exception Stack Heap Stack Heap

Cleanup Stack Kirjanpitomekanismi Stack Heap Cleanup Stack

Cleanup Stackin käytöstä Kokonaan ohjelmoijan niskoilla Vain automaattisille (aliohjelmassa/metodissa luoduille) muuttujille CMyClass * c = new CMyClass(); CleanupStack::PushL(c)... c is used CleanupStack::Pop(); // c delete c; c = 0;

Kaksivaiherakentaminen Cleanup stack ei auta kun luodaan uusia muuttujia Idea: Suunnitellaan siten että varsinainen rakentaja saadaan aina suoritettua jos muistia riittää Muut ongelmalliset asiat tehdään vasta kun rakentaja on saatu ajettua ja Cleanup Stack täytettyä CData * id = new (ELeave) CData(256); CleanupStack::PushL(id); id->constructl();

Symbian-sovellusarkkitehtuuri UI Control Framework CApaDocument AppArch CApaApplication CCoeEnv CCoeControl CCoeAppUi CEikonEnv CEikAppUI CEikDocument CEikApplication Eikon/Uikon Application CExAppView CExAppUI CExDocument CExApplication

Java MIDP Sisäänrakennettu varmaankin kaikkiin Symbian-puhelimiin Ehkäpä maailman levinnein laajennettava ohjelmisto Sovelluksen vaatimukset: Peri midlet -luokka Toteuta metodit Rakentaja startapp destroyapp pauseapp Ensimmäinen sovellus laitteessa alle 30min, ja tämä sisältää ympäristön asennusajan

Python Ladattava laitteeseen itse Mahdollistaa Python-skriptien ajon puhelimessa Normaalit Python-kielen ominaisuudet Laitteiston/käyttöjärjestelmän ohjelmiston käyttö mahdollista Kamera Kontaktit Kalenteri Audio Bluetooth Näppärä keino lähteä liikkeelle omien sovellusten näppäilyssä

Web Runtime Lähinnä web-ohjelmien toteuttamiseen tarkoitettu ympäristö Toteutustekniikkana xhtml, CSS, JavaScript, Ajax, Sovellukset asennetaan, ei ladata lennosta webistä Samat rajoitukset kuin websovelluksissa yleensäkin, paitsi että toisin kuin selaimessa virtuaalikone voi käyttää joitakin laitteen tarjoamia palveluita Mashup-kehitys?

OPL, Organizer programmer language Psionin oma, jonkin verran Basicia muistuttava ohjelmointikieli Konsolisovellukset ja graafiset käyttöliittymät mahdollisia käyttökohteita Käytännössä ilmeisesti kuitenkin kuollut?

Yhteenveto Monet vähän erikoisemmalta kuulostavat Symbianin ominaisuudet muuttuvat tarkoituksenmukaisiksi kun ottaa huomioon sulautetun ohjelmoinnin erityispiirteet Toisaalta osasta erityispiirteistä aika on ajanut ohi Taustan ymmärtäminen yksinkertaistaa rajoitteiden huomiointia suunnittelutyössä Toisaalta hyvien ideoiden mukailu voi helpottaa jonkun muun ympäristön käyttöä vastaavalla tavalla Toiset tykkää, toiset ei