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

Samankaltaiset tiedostot
.NET ja C# Virtuaalikone. Common Language Infrastructure (CLI) Periaate. Etuja. Haittoja. Mikä on CLI. CLI standardin merkitys (CLS, Ecma)

Common Language Runtime

C# ja.net. Juha Järvensivu 2007

C# ja oliot. Santtu Viitanen Niko Mononen Jyri Leinonen

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

TIE PRINCIPLES OF PROGRAMMING LANGUAGES Eiffel-ohjelmointikieli

4. Lausekielinen ohjelmointi 4.1

KYMENLAAKSON AMMATTIKORKEAKOULU

TIE Ohjelmistojen suunnittelu

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

4. Lausekielinen ohjelmointi 4.1

Dynaaminen kääntäminen ja Java HotSpot

C#-luokkien perusteet

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

D-OHJELMOINTIKIELI. AA-kerho, 33. Antti Uusimäki. Arto Savolainen

Toimilohkojen turvallisuus tulevaisuudessa

Ohjelmoinnin peruskurssien laaja oppimäärä

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Luento 1 Tietokonejärjestelmän rakenne

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus

Johdatus ohjelmointiin

Varhaiset oliokielet Modula, CLU ja Smalltalk. T : Seminar on the History of Programming Languages Kari Koskinen Otaniemi 29.9.

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

Solidity älysopimus ohjelmointi. Sopimus suuntautunut ohjelmointi

Visual Basic -sovelluskehitin Juha Vitikka

Viestit-palvelun viranomaisliittymän ohjelmointiohje. Java-esimerkki

1. Olio-ohjelmointi 1.1

Paikkatiedon mallinnus Dokumentoinnin ymmärtäminen. Lassi Lehto

Käännös, linkitys ja lataus

Android ohjelmointi. Mobiiliohjelmointi 2-3T5245

Luento 1 Tietokonejärjestelmän rakenne

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus

Ohjelmointi Linuxissa. Sisällysluettelo. 1. Mitä tarvitaan sovellusten tuottamiseen? Tehnyt: Antti Martikainen ( )

Microsoft Visual J++ ohjelmointiympäristö

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

Qt perusteet. Juha-Matti Vanhatupa. (vanhan kurssin Graafisen käyttöliittymän ohjelmointi materiaalia)

TIE Principles of Programming Languages CEYLON

AS C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin

Attribuutit. Copyright IT Press Tämän e-kirjan kopiointi, tulostaminen ja jakeleminen eteenpäin luvatta on kielletty.

MOLTO-konekäännösprojekti ja Grammatical Framework

Kieliversiointityökalu Java-ohjelmistoon. Ohje

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

Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python

Käyttöjärjestelmät: prosessit

CUDA. Moniydinohjelmointi Mikko Honkonen

Nääsvillen oliopäivät.net vrs Java

Ohjelmoinnista. Ohjelmien toteutukseen tarjolla erilaisia välineitä:

lausekkeiden tapauksessa. Jotkin ohjelmointikielet on määritelty sellaisiksi,

Suomalaiset ohjelmointikielet

Tech Conference Visual Studio 2015, C#6,.NET4.6. Heikki Raatikainen. #TechConfFI

Luento 1 (verkkoluento 1) Tietokonejärjestelmä

Koka. Ryhmä 11. Juuso Tapaninen, Akseli Karvinen. 1. Taustoja 2. Kielen filosofia ja paradigmat 3. Kielen syntaksia ja vertailua JavaScriptiin Lähteet

Microsoft.NET. Juha Ahola-Olli. Tietojärjestelmätieteen Kandidaatintutkielma

Arkkitehtuurin dokumentointi O A

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python

Johdanto Meta Kielten jaotteluja Historia. Aloitusluento. TIES542 Ohjelmointikielten periaatteet, kevät Antti-Juhani Kaijanaho

Olio-ohjelmoinnin perusteet. Lewis & Loftus & Jukka Juslin 1

Siirtyminen Visual Basic.NETistä C#:iin tietojenkäsittelyn koulutusohjelmassa

Haskell ohjelmointikielen tyyppijärjestelmä

Luento 1 (verkkoluento 1) Ohjelman sijainti Ohjelman esitysmuoto Laitteiston nopeus

Metadatan kyseleminen Reflection-metodeilla

jbaci Concurrency Simulator

ASM-kaavio: reset. b c d e f g. 00 abcdef. naytto1. clk. 01 bc. reset. 10 a2. abdeg. 11 a3. abcdg

SIIRTYMINEN MONITASOARKKITEHTUURIIN: MICROSOFT.NET:IN TARJOAMAT MAHDOLLISUUDET

Inside. Tom Archer. Copyright IT Press Tämän e-kirjan kopiointi, tulostaminen ja jakeleminen eteenpäin luvatta on kielletty.

Ohjelmointi 1. Kumppanit

TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 27. lokakuuta 2009

Web Services -palvelut Microsoftin välineillä

Eclipse 3.1 Pikaopas versio 1.0

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä

4. Luokan testaus ja käyttö olion kautta 4.1

Eclipse 3.2 pikku opas versio 1.0. Esittely Uuden projektin perustaminen Sovelluksen luominen Koodin siistiminen Vinkkejä

TAMPEREEN TEKNILLINEN KORKEAKOULU Automaatiotekniikan koulutusohjelma

8. Näppäimistöltä lukeminen 8.1

Laiteläheinen C-kieli, yleistä

Linux. 00 Keskeiset piirteet. Unix ja Linux Helsingin ammattikorkeakoulu Stadia Vesa Ollikainen (muokannut M.Mäki-Uuro) Kysymyksiä

Funktionaalisten kielten oppimisesta ja valinnasta

815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset

7. Product-line architectures

11/20: Konepelti auki

TTY TKT-1110 Mikroprosessorit TKT. HEW-ohjeet ver 1.0

12. Näppäimistöltä lukeminen 12.1

Luento 11 Tulkinta ja emulointi

8. Näppäimistöltä lukeminen 8.1

Juhannuksena Arkkitehtuureilla YHTEISET RAKENNUSPUUT. Java/J2EE vastaan. Microsoft.Net OHJELMISTOT ARKKITEHTUURIT ESITTELYSSÄ

Rajapinta (interface)

C++ Kuva 1-1. C- ja C++ kielien perustana olevat kielet.

Scratchbox ja Maemo. Nokia 770 Internet Tablet-ohjelmistokehitys. Timo Savola. Movial Oy. FUUG:in kevätristeily

1 Tavoitteet. 2 Periaatteet ja ominaisuudet. 2.1 Tyyppipäättely

Clojure, funktionaalinen Lisp murre

15. Ohjelmoinnin tekniikkaa 15.1

Tietorakenteet ja algoritmit

Dynaaminen muisti. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät 2017.

5. HelloWorld-ohjelma 5.1

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

Dokumentin nimi LOGO:) Tampereen teknillinen yliopisto. Ryhmä XXX: Projektiryhmän nimi Projektin nimi

Chapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen

Tietojärjestelmäarkkitehtuurit

Tulkinta ja emulointi

Transkriptio:

.NET ajoympäristö Juha Järvensivu juha.jarvensivu@tut.fi 2007

Käännösprosessi C# lähdekoodi C# kääntäjä CILtavukoodi JITkäännös Ajettava natiivikoodi Kehitysympäristössä ohjelmoijan toimesta Ajonaikana.NET ajoympäristön toimesta

Käännösprosessi 2-vaiheinen Kääntäminen CIL-välikielelle Common Intermediate Language CIL Kääntäminen ajettavaksi binääriksi ajonaikana JIT-kääntää CIL-koodin ajonaikaisesti konekoodiksi Kerran käännetty natiivikoodi säilyy muistissa ohjelman suorituksen loppuun asti.

JIT-käännös CIL välikoodi CLR Execution engine MyApp.exe MyApp.code MyLib.dll JIT COMPILER MyLib.code

Common Language Runtime (CLR).NET ajonaikainen suoritusympäristö (vrt javan virtuaalikone) Tehtävät Kääntää CIL-välikoodin ajonaikaisesti konekoodiksi Huolehtii muistinhallinnasta Tietotyyppitarkistuksista Turvallisuustarkistuksista Poikkeuskäsittelystä

Termistöä

CIL Common Intermediate Language CIL = MSIL = IL Välikieli (vrt Java bytecode) Käännetään suorituksen aikana konekoodiksi käyttäen JIT-käännöstä

Assembly Pienin yksittäinen asennettava yksikkö dll tai exe tiedosto Koostuu CIL-koodista Metadatasta Manifestista Resurssitiedostoista (optionaalinen)

Metadata Sisältää metatietoa CIL-koodista Kuvaa assemblyn sisällön ohjelmointikieliriippumattomalla tavalla Tyyppien kuvaukset (luokka, rajapinta jne) Nimi, näkyvyys, kantaluokka, toteutetut rajapinnat. Jäsenet (metodit, muuttujat, propertyt, eventit). Kääntäjä generoi metadatan automaattisesti

Manifesti Assemblyn metadataa Sisältö Versionumero Culture information Lista assemblyn sisältämistä tyypeistä Lista viittauksista muihin assemblyihin Kääntäjä generoi manifestin automaattisesti

Assembly Manifest Metadata CIL code Resources (optional)

Termistöä Hallittu koodi (Managed code) CLR:n hallinnassa ajettava koodi Ei hallittu koodi (Unmanaged code) Natiivikoodi, jota ei ajeta clr:n hallinnassa Managed heap CLR:n prosessille sen luontivaiheessa varaama muistialue Multi-file Assembly Assembly, joka koostuu useammasta tiedostosta (primary ja secondary modules)

Tyyppijärjestelmä

Ohjelmointikieliriippumattomuus.NET ohjelmia voidaan toteuttaa yli 20 ohjelmointikielellä APL Fortran Oberon Scheme C++ Haskell Oz SmallTalk C# Java Pascal Standard ML COBOL JScript Perl Visual Basic Forth Eiffel Mercury Python Lähde: http://msdn.microsoft.com/netframework/technologyinfo/overview/

CTS Common Type System.NET tyyppijärjestelmä Määrittelee kaikki.net ajoympäristön tukemat tietotyypit

CTS Types ClassType Structure Type Interface Type Enumeration Type Delegate Type

CLS Common Language Specification Yleinen kielimääritys Joukko tyyppejä, jotka kaikkien ohjelmointikielten pitää vähintään toteuttaa CLS compliant code [assembly: System.CLSCompoliant(true)]

Ympäristöriippumattomuus

Standard ECMA-335 Common Language Infrastructure (CLI) 4th edition (June 2006) Kansainvälinen standardi, joka mahdollistaa koodin suorittamisen erilaisissa ympäristöissä Sisältö Part 1: Concepts and Architecture Part 2: Metadata Definition Part 3: CIL Instruction Set Part 4: Profiles and Libraries Part 5: Debug Interchange Format. Part 6: Annexes Contains some sample programs written in CIL Assembly Language http://www.ecmainternational.org/publications/standards/ecma-335.htm

.NET ja Linux Mono-projekti www.mono-project.com Tavoitteena luoda OSS-versio.NETympäristöstä, joka mahdollistaa.net sovellusten ajon linux ja unix ympäristöissä

Esimerkki dll-kirjasto Ajastimen käyttö eventin luonti

Lähteitä ECM 335 http://www.ecma-international.org/publications/standards/ecma-335.htm Common Type System (wiki) http://en.wikipedia.org/wiki/common_type_system Common Type System (msdn) http://msdn.microsoft.com/library/default.asp?url=/library/enus/cpguide/html/cpconthecommontypesystem.asp Common Language Runtime (CLR) http://msdn.microsoft.com/library/default.asp?url=/library/enus/cpguide/html/cpconthecommonlanguageruntime.asp Inside.NET Framework http://msdn.microsoft.com/library/default.asp?url=/library/enus/cpguide/html/cpconinsidenetframework.asp Raising an event http://msdn.microsoft.com/library/default.asp?url=/library/enus/cpguide/html/cpconprovidingeventfunctionality.asp