DALVIK VIRTUAL MACHINE

Relevanta dokument
JAVAUTVECKLING LEKTION 1

Föreläsning 2. Operativsystem och programmering

Innehålls förteckning

Dalvik Virtual Machine

Inledande programmering med C# (1DV402) Introduktion till C#

Operativsystem och användargränssnitt

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

Föreläsning 1. Presentation av kursen Vad är programmering? Lite om java och utvecklingsmiljöer Aktivitetsdiagram Ett första program

Lunds Tekniska Högskola Datorarkitektur med operativsystem EITF60. Superscalar vs VLIW. Cornelia Kloth IDA2. Inlämningsdatum:

Eclipse. Avsikt. Nu ska ett fönster liknande figuren till höger synas.

Operativsystem Lektion 1. Lärare. Schema. Kurssajten Finns på adressen. Jan Erik Moström. Set Norman

Mobile First Video on demand och livesändningar på Internet. Juni 2012

Grundkurs i programmering - intro

Rafel Ridha Projektdefinition

OOP Objekt-orienterad programmering

Mina listor. En Android-applikation. Rickard Karlsson Rickard Karlsson - rk222cu Linnéuniversitet rk222cu@student.lnu.

NetBeans 7. Avsikt. Projektfönster

QR-kodernas intåg för nytta och nöje!

Föreläsning 3. Programmering, C och programmeringsmiljö

NetBeans 5.5. Avsikt. Projektfönster

TDDC77 Objektorienterad Programmering

SLUTRAPPORT: TEXAS HOLDEM 4 FRIENDS

Introduktion till programmering, hösten 2011

Introduktion till programmering. Programspråk och paradigmer

Författare: Juha Söderqvist IT-GUI. Version 1.0. Datum

Viktiga begrepp. Algoritm. Array. Binärkod. Blockprogrammering. Bugg / fel och felsökning. Dataspel. Dator

Introduktion till hårdvara, mjukvara och operativsystem

Android och iphone. Kalle Prorok April 2011

UNIX Introduktion UNIX. Datorerfarenhet. Vad menar man med operativsystem

STADSLEDNINGSKONTORET SOA SDK IT-AVDELNINGEN VERSION 2.1. Läs mig först. Stockholms stad SOA-plattform. Sida 1 (5)

Lektion Java Grunder. Javas historia. Programmeringsspråket Java. Skillnaderna mellan Java och C++ JVM (Javas Virtuella Maskin)

Minnesisolering för virtuella maskiner en hypervisorstudie

Editering, Kompilering och Exekvering av Javaprogram

SMD 134 Objektorienterad programmering

Inledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock

INSTALLATIONSGUIDE TILL ANDROID UTVECKLINGSMILJÖ

Kurskatalog 2010 INNEHÅLLSFÖRTECKNING

1:5 SLUTRAPPORT - POST MORTEN LARS EHRMAN WP

Quick Start CABAS. Generella systemkrav CABAS / CAB Plan. Kommunikation. Säkerhet

Föreläsning 1: Intro till kursen och programmering

Systemkrav för Qlik Sense. Qlik Sense 3.1 Copyright QlikTech International AB. Alla rättigheter förbehållna.

QR-kodernas intåg för nytta och nöje!

32 Bitar Blir 64 Sammanfattning

Datacentertjänster PaaS

Systemkrav för Qlik Sense. Qlik Sense 3.0 Copyright QlikTech International AB. Alla rättigheter förbehållna.

LUNDS UNIVERSITET. Parallell exekvering av Float32 och INT32 operationer

Program & programmering

Programutveckling med Java Development Kit. (JDK 1.1.x) och Programmers File Editor (PFE 7.02)

Systemkrav för Qlik Sense. Qlik Sense 2.2 Copyright QlikTech International AB. Alla rättigheter förbehållna.

Föreläsning 3. Programmering, C och programmeringsmiljö

Dedikerad Server Vilket operativsystem ska jag välja? Är ni i startgroparna och ska beställa en dedikerad server eller en virtuell server?

Systemkrav för Qlik Sense. Qlik Sense September 2017 Copyright QlikTech International AB. Alla rättigheter förbehållna.

Med NetAlert är du aldrig ensam.

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten Programmering: att instruera en maskin att utföra en uppgift, kräver olika språk:

Övning 1. Datateknik A, Java I, 5 poäng. Att ladda hem och installera Java Att skriva ditt första Javaprogram Att kompilera och exekvera ditt program

Joakim Jonsson jj222kc. Minesweeper. Individuellt Mjukvaruprojekt Joakim Jonsson

Föreläsning 17 UTBLICK: FORTSÄTTNINGSKURSER I DATAVETENSKAP + ANDROID

Föreläsning 1: Intro till kursen och programmering

Vad är Inet Windows 10 Anniversary Update Vilka olika datorer det finns Antivirus Office 365 Vad Inet kan göra för dig Frågestund

Fö 7: Operativsystem. Vad är ett operativsystem? Målsättning med operativsystem. Styr operativsystemet datorn?

Objektorienterad programmering i Java I

Föreläsning 5 5DV086 - Programspråk

Låt datorn prata med mobilen

Systemkrav för Qlik Sense. Qlik Sense June 2017 Copyright QlikTech International AB. Alla rättigheter förbehållna.

Analys av programmeringsspråket Go

Android - En översikt samt titt på utvecklingsmiljö. Kalle Prorok 12 nov 2013

KUNDCASE. Inovia gjorde sin AI-utveckling 10 gånger snabbare med Power-plattformen

Henrik Asp. Allt du behöver veta för att KÖPA DATOR

Introduktion till programmering och Python Grundkurs i programmering med Python

LAJKA-GUIDE. Så kör du. Windows på din Mac. 7 Fler spel och program 7 Enklare än Bootcamp 7 Körs direkt i OSX 7 Helt gratis

Datorer och datoranvändning Föreläsningar 2014/15. Föreläsning 1 Unix. Operativsystem. Unix

Systemkrav för Qlik Sense. Qlik Sense September 2017 Copyright QlikTech International AB. Alla rättigheter förbehållna.

Grundläggande programmering DVG A08 & ISG A04. Allmän information. Å vem är jag då. Karlstads Universitet, Johan Öfverberg 1

Androidapplikationer

Innehållsförteckning Förutsättningar... 2 Installation av Google Authenticator på iphone... 3 Installation av Google Authenticator på Android...

Kaspersky. IS MD attach

TDDD78, TDDE30, 729A Introduktion till Java -- för Pythonprogrammerare

Programmering i C++ Kompilering från kommandoraden

Vad är en dator? Introduktion till datorer och nätverk. Pontus Haglund Institutionen för datavetenskap (IDA) 21 augusti 2018

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Mobiltelefonens utveckling

En livsmedelsbutik på Internet

MIGRATION AV APPAR TILL WINDOWS PHONE 8 MIGRATION OF APPS FOR WINDOWS PHONE 8

Operativsystem. Innehåll. Operativsystemets funktion. Vad är ett OS? Vart hittar men ett OS? OS hanterar processorns resurser

Hantering av hazards i pipelines

Processor pipelining genom historien (Intel i9-intel i7)

MÖTEN PÅ DISTANS Jitsi Meet Skype mikrofon och webbkamera Jitsi Meet

Installation av atmel Studio på mac / linux

Advanced Mobile Device Management

StoCKK Stockholm Center för Kommunikativt och Kognitivt stöd. Tips på AKK-appar

Operativsystem - input/output, skydd, virtualisering

Introduktion till migrering till molnet. PART 4: Plattformar för molntjänster

Linux på skrivbordet - Myt eller möjlighet

Om maskiner kunde tala

Verktyg och Utvecklingsmiljö. Föreläsning 2 Eclipse

DIG IN TO Dator och nätverksteknik

Guide för Google Cloud Print

Mobile Cross Development

Qlik Sense Desktop. Qlik Sense 1.1 Copyright QlikTech International AB. Alla rättigheter förbehållna.

DATORLÄRA Christophe Clément - Fysikum

Transkript:

DALVIK VIRTUAL MACHINE DD143X KUNGLIGA TEKNISKA HÖGSKOLAN, CSC Handledare Av Cristian Bogdan Aked Hindi Michael Lindblom 840419-3099 850903-0394 0736-861130 0730-517223 aked_player@yahoo.fr lindblom.micke@gmail.com

Sammanfattning Android är ett relativt nytt operativsystem som kämpar för att vinna nya användare och har den sista tiden blivit ett allt mer populärt operativsystem att utveckla programvara på. Utvecklingen av programvara sker i java-miljö, många bibliotek identiska med dem som finns i java SDK 5; dock finns det en hel del skillnader 1. Denna uppsats beskriver Android ur en arkitektisk synpunkt. Hur är Android uppbyggt, har de anpassat arkitekturen för mobila enheter och framför allt, vad är det som skiljer Android jämte mot java under programkörning? Fokus ligger därför på Android är dess Virtual Machine som Open Handset Alliance 2 valt att kalla Dalvik 3. Detta är själva motorn i Android som används när all programvara körs. Optimeringar har gjorts både för att minska minnesanvändningen och processorcyklar; allt för att anpassa Android för den relativt svaga hårdvaran en mobil enhet har idag. Externa resultat 4 visar att dessa optimeringar har gjort nytta. Minnesanvändningen har minskat och det krävs färre klockcyklar då kod körs för Dalvik Virtual Machine. Abstract 1 Ed Burnette. Hello,Android introducing Google s mobile development platform.2010 2 http://www.openhandsetalliance.com/ 3 Namnet är taget från en by på Island där Dan Bornstein, skapare av Dalivks, förfäder en gång levde, 4 Dan Bornstein, Google. Presentation-Of-Dalvik-VM-Internals. 2008-05-29 2

Innehållsförteckning 1. Bakgrund 4 1.1. Android 4 1.2. Java 4 2. State of art 4 3. Vad gör Android speciellt 5 4. Androids arkitektur 6 4.1. Linux Kernel 6 4.2. Native Libraries 6 4.3. Applikationsramverk 6 4.4. Androids livscykel 6 5. Virtual Machine 6 5.1. Stack Virtual Machine 6 5.2. Register Virtual Machine 6 6. Java Virtual Machine 6 6.1. Java Virtual Machine ramverk 6 7. Dalvik Virtual Machine 7 7.1. Dalvik Virtual Machine ramverk 7 7.2. Varför behövs Dalvik 7 8. Metod 7 8.1. Tillvägagångssätt 7 8.2. Egna tester 7 8.3. Jämförelse 7 8.3.1. Arkitektur 7 8.3.2. Minnesanvändning 7 8.3.3. Prestanda 7 9. Resultat 7 9.1. Diskussion 7 10. Slutsats 7 11. Litteratursammanfattning 8 3

1. Bakgrund 1.1. Android Android är ett öppet operativ system för PDA och Smartphones ursprungligen är utvecklat av Google; lansering skedde officiellt den 15 november 2007. Android utvecklas numera av en allians vid namnet Open handset Alliance ; en grupp bestående av 65 framstående teknologiska företag inom mobilteknologi. Android har det senaste året gjort ett starkt avtryck inom den mobila industrin och anses idag vara en stark konkurrent till andra mobila operativsystem såsom Windows mobile, Symbian och Iphone OS. Tillväxten för Android är mycket stark och Android är för tillfället det snabbast växande operativsystemet för smartphones. Detta ger Android en unik och eftertraktad position hos utvecklare som ser möjligheten att lansera program på en reaktivt ny plattform som växer i rasande takt. 1.2. Java Programmeringsspråket Java 5 utvecklades ursprungligen av Sun Microsystems i början av 90 talet och var främst avsett att användas i intelligenta elektroniska komponenter som t.ex. microvågsungar och tvättmaskiner. Språket fick först namnet Oak(efter en ek som växte utanför utvecklarens fönster James Goslings ) men eftersom det fanns ett annat programmeringsspråk med samma namn byttes namnet till Java. Målet med att utveckla Java var att utveckla ett språk som var plattformsoberoende och mer lättanvänt jämfört med C++ konstruktioner som ansågs vara onödigt komplicerade och svåra att använda. Ironiskt nog bygger syntaxen i Java fortfarande på C++. Idag anses Java vara ett av de mest populära 6 programmeringsspråken och används av tusentals programmera världen över. 2. State of art Open handset Alliance har vidtagit flera åtgärden för att göra Android så attraktivt och effektivt som möjligt för att locka till sig programmerare på den kraftigt uppdelade marknaden för mobila operativsystem. Att använda precis samma syntax som Java men att köra den på en egenutvecklad Virtual Machine var ett taktiskt och medvetet val av Google och Open Handset Alliance. Då Java i alla dess former har en mycket stark användarbas kan programmerare runt om i världen utan större ansträngningar lära sig att programmera för Android. Samtidigt har man sett ett behov av att optimera motorn i Java och har därför utvecklat en egen Virtual Machine som Open Handset Alliance valt att kalla Dalvik. På köpet har man också lyckats komma runt licenskraven från Sun då Android inte använder sig av Java Virtual Machine och kan på så sätt erbjuda Android utan licenskostnader. 5 http://sectordata.se/laromedel/java/javasite4_02.html 6 http://www.langpop.com/ 4

Att använda Java som utvecklingsspråk för mobila enheter är dock ingen nyhet. Java ME 7 har länge funnits på marknaden men har aldrig riktigt fått någon genomslagskraft. Detta beror främst på att äldre operativsystem som Symbian, BlackBerry OS och Windows Mobile uppmuntrat utvecklare till att använda programmeringsspråk anpassade för respektive plattform. Suns filosofi och slogan för Java write once, run everywhere har heller inte helt infriats. Olika modeller av mobiltelefoner, till och med från samma tillverkare, har olika implementationer av Java Virtual Machine. Därmed har koden fått anpassats till olika modeller och krånglat till det för utvecklarna i onödan. Med Dalvik Virtual Machine har Open Handset Alliance som avsikt att standardisera och optimera motorn för alla enheter som kör Android. Dalvik Virtual Machine har flera arkitektiska skillnader jämfört med Java Virtual Machine. En av dessa arkitektiska skillnader är den metod Open Handset Alliance valt för att lagra maskinkod i Dalvik. I Java lagras maskinkoden som en stack, den ena instruktionen läggs över den andra som på så sätt länkar ihop koden. Instruktionerna vet precis var nästa instruktion är placerad då instruktionerna systematiskt är placerade intill varandra. I Dalvik har man valt att använda en helt skild metod. Genom att istället använda registers har man helt gått ifrån den till synes mycket enkelt strukturerade maskinkoden java använder sig av. Maskinkoden i Dalvik har ingen inbördes ordning, varje instruktion länkar istället till nästa instruktion med hjälp av en minnesadress. Denna till synes ostrukturerade arkitekturen har flera fördelar och nackdelar som behandlas i avsnitt (5 Virtual Machine) och (6 Metod) Den utan tvekan största konkurrenten för Android är inte Java i dess standardutförande eller mobila versioner som Java ME. Android är främst ett operativsystem riktat till mobila enheter och idag har Apple med sin Iphone 8 en mycket stark användarbas. Iphone använder sig inte av Java utan en special anpassad version av utvecklingsmiljön för Mac OS X Cocoa development, samma utvecklingsmiljö som används för deras stationära och bärbara datorer. Då detta skiljer sig radikalt från den metod Open handset Alliance valt att använda med en specialanpassad Virtual Machine kommer denna uppsats inte ta upp skillnader eller liknelser med hur Iphone fungerar. 3. Vad gör Android speciellt 7 http://www.roughlydrafted.com/2009/11/06/inside googles android and apples iphone os as coreplatforms/ 8 http://developer.apple.com/iphone/index.action 5

4. Androids arktitektur 4.1. Linux kernel Android är ett operativsystem byggt på en mycket stabil grund; Linux kernel. Linus Torvalds, linux grundare, släppte den första versionen av Linux 1991. Idag kan man hitta olika varianter av Linux i allt från de simplaste väckarklockarna till de snabbaste superdatorerna. Tack vare att Android bygger på den mycket flexibla linuxkärnan kan android porteras till flera olika plattformar utan större modifieringar om så behövs. 4.2. Native libraries Lagret ovanför Linuxkärnan innehåller Androids native libraries. Detta är ett delat bibliotek skrivet i C eller C++, kompilerat för den specifika hårdvaran Android enheten använder. Några av de viktigaste biblioteken är följande. Surface Manager(fönster hanterare): Android använder sig av en komposithanterare 9 som på många sätt liknar Compiz 10, men på Android fungerar detta på ett mycket förenklat sätt. Istället för att skriva direkt till skärmens skriv buffer; hamnar alla Fortsättning följer 4.3. Applikationsramverk 4.4. Androids livscykel 5. Virtual Machine 5.1. Stack Virtual Machine 5.2. Register Virtual Machine 6. Java Virtual Machine För att exekvera ett program som är skrivit i Java, behöver man först kompilera koden med hjälp av en kompilator t.ex. javac. Då genereras en bytekod fil med filnamnstillägg class, filen innehåller maskin språk som bara kan exekveras av Java Virtual Machine. Den är plattformsberoende, dvs, en Java virtuel Java motor kan utvecklas till vilken plattform som helst och kan därmed exekveras på alla system som har tillgång till en javainterpreterare. Java virtual maskin är en javainterpreterare som kan läsa, förstå och exekvera bytekoden 11. 6.1. Java Virtual Machine ramverk 9 En fönsterhanterare som använder sig av 3D effekter (http://sv.wikipedia.org/wiki/kompositionshanterare) 10 Vanligt förekommande fönsterhanterare för Linux (http://sv.wikipedia.org/wiki/compiz) 11 Norman Matloff, Thomas Fifield. The Java Virtual Machine. University of California at Davis. 2007 6

7. Dalvik Virtual Machine Dalvik Virtual Machine har många likheter med hur Java Virtual Machine fungerar 12. För att få en Java kod att funka på operativsystemet Android behöver man först kompilera koden med en Java kompilator. Resultatet är en bytekod fill (.class). För att kunna köra koden på en Android enhet behövs filen konverteras till dex fil med hjälp av dx tool som slår ihop alla class filer till en dex fil. Den sist nämnda kan bara exekveras med dalvik virtual machine. 7.1. Dalvik Virtual Machine ramverk 7.2. Varför behövs Dalvik 8. Metod 8.1. Tillvägagångssätt 8.2. Egna tester 8.3. Jämförelse 8.3.1. Arkitektur 8.3.2. Minnesanvändning 8.3.3. Prestanda 9. Resultat 9.1. Diskussion 10. Slutsats 12 Dan Bornstein, Google. Presentation Of Dalvik VM Internals 2008 05 29 7

11. Litteratursammanfattning Hemsidor 1. http://www.mobileburn.com/news.jsp?id=8684 Denna webbsida handlar om Myriad som är den nya Dalvik. Myriad är en turbo version av Dalvik som gör att programmen exekveras snabbare och med mindre minne. 2. Yunhe Shi, David Gregg, Andrew Beatty, M. Anton Ertl. Virtual Machine Showdown: Stack Versus Registers.Department of Computer Science, University of Dublin, Trinity College. I den här rapporten gemförs virtual stack machine s(jvm), Dalvik virtual register machine s(dvm) arkitektur d.v.s. att de tar hänsyn till bytekod storlek, minnesanvändning och prestanda. 3. Norman Matloff, Thomas Fifield. The Java Virtual Machine. University of California at Davis. 2007. Denna uppsats handlar om att beskriva vad en virtual machine är för någonting, vad den används för och om dess arkitektur. 4. Dan Bornstein, Google. Presentation-Of-Dalvik-VM-Internals. 2008-05-29. I den här presentationen ges en definition på vad Dalvik är, vad den används för och systemkrav. 5. http://www.openhandsetalliance.com/ Open Hanset Alliance, organisationen bakom Android, alla utveckling sker numera av OHA. 6. http://sectordata.se/laromedel/java/javasite4_02.html Beskrivande text om Javas ursprung. 7. http://www.roughlydrafted.com/2009/11/06/inside-googles-android-and-applesiphone-os-as-core-platforms/ Jämförelse mellan de vanligaste mobila operativsystemen. 8. http://developer.apple.com/iphone/index.action Iphone s Dev Center, information kring utvekling av applikationer för Iphone. 9. http://www.seminarprojects.com/thread-android-full-report Teknisk rapport, ger detaljerad beskrivning av Android. Böcker 10. Ed Burnette. Hello,Android introducing Google s mobile development platform.2010. I den här boken ges en översikt på Androids arkitektur och flera exempel på hur man utvecklar et program till Android. Den delen som är intressant för rapporten är själva arkitekturen. 8