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

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

Common Language Runtime

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

WINE API ja Virtualisointiohjelmistot

4. Lausekielinen ohjelmointi 4.1

TIE PRINCIPLES OF PROGRAMMING LANGUAGES Eiffel-ohjelmointikieli

Visual Basic -sovelluskehitin Juha Vitikka

C# ja oliot. Santtu Viitanen Niko Mononen Jyri Leinonen

ELM GROUP 04. Teemu Laakso Henrik Talarmo

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

KYMENLAAKSON AMMATTIKORKEAKOULU Wine API ja Virtualisointiohjelmistot. Markku Yli-Kiikka OH06

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

812341A Olio-ohjelmointi, I Johdanto

Luento 1 Tietokonejärjestelmän rakenne

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

11/20: Konepelti auki

Luento 1 Tietokonejärjestelmän rakenne

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

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

Älysopimusten kehittäminen. Sopimus suuntautunut ohjelmointi

C# ja.net. Juha Järvensivu 2007

Integrointi. Ohjelmistotekniikka kevät 2003

Ohjelmoinnin peruskurssien laaja oppimäärä

4. Lausekielinen ohjelmointi 4.1

Chapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen

Microsoft Visual J++ ohjelmointiympäristö

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

Ohjelmistojen mallintaminen, mallintaminen ja UML

1. Olio-ohjelmointi 1.1

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. II Johdanto olio-ohjelmointiin

TIE Principles of Programming Languages CEYLON

KYMENLAAKSON AMMATTIKORKEAKOULU

S11-09 Control System for an. Autonomous Household Robot Platform

CUDA. Moniydinohjelmointi Mikko Honkonen

Common Lisp Object System

J2EE vs..net Olli Sakari

Android ohjelmointi. Mobiiliohjelmointi 2-3T5245

Sisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki

Ohjelmistojen mallintaminen

TIE Ohjelmistojen suunnittelu

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

Sovellusarkkitehtuurit

Soveltuvuustutkimus Lifebelt-ohjelman ideologian käytettävyydestä olioorientoituneeseen

Tietokoneen toiminta (Computer Organization I)

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

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

Johdatus ohjelmointiin

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

Ohjelmointi 1 / syksy /20: IDE

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

Solidity älysopimus ohjelmointi. Sopimus suuntautunut ohjelmointi

Tietokoneen toiminta (Computer Organization I)

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

Luento 1 (verkkoluento 1) Tietokonejärjestelmä

Qt kaikkialla?

Ohjelmistojen mallintaminen. Luento 11, 7.12.

SISÄLLYSLUETTELO. Sisällysluettelo. ALKUSANAT... III Palaute... III Kirjailijat... III

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

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

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

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

Tietokoneen toiminta (Computer Organization I)

Ohjelmoinnin peruskurssien laaja oppimäärä

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

Web Services tietokantaohjelmoinnin perusteet

TI10 Joni Hämäläinen & Jan Lampikari

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

Tietokoneen toiminta (Computer Organization I)

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Rajapinnat ja sisäluokat

12. Monimuotoisuus 12.1

Käyttöjärjestelmät. Teemu Saarelainen Tietotekniikka

Copyright by Haikala. Ohjelmistotuotannon osa-alueet

Rajapinta (interface)

Miten voin selvittää säästömahdollisuuteni ja pääsen hyötymään niistä?

samalla seuraavaan puoliavaruuteen (sukupolveen), jota siivotaan harvemmin.

Tähtitieteen käytännön menetelmiä Kevät 2009

Ohjelmoinnista. Ohjelmien toteutukseen tarjolla erilaisia välineitä:

ITKA203 Käyttöjärjestelmät, kesä Kesäkurssi Opettaja: Paavo Nieminen

Asynkroninen ohjelmointi.net 4.5 versiolla

C#-luokkien perusteet

Virtuaalikoneiden generointi Vmgen-kääntäjällä

Ohjelmoinnin peruskurssien laaja oppimäärä

Ylläpitodokumentti. Boa Open Access. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Dynaaminen kääntäminen ja Java HotSpot

Tietojärjestelmä tuotantoympäristössä. Sovellusohjelmat Helsingin ammattikorkeakoulu Stadia / Tekniikka ja liikenne Vesa Ollikainen

Objective-C. Ryhmä 35: Ilpo Kärki Aleksi Pälä

Visma Software Oy

Directory Information Tree

Backup Exec 3600 Appliance

Rajapinnat ja olioiden välittäminen

Käyttöjärjestelmien historia. Joni Herttuainen Henri Jantunen Markus Maijanen Timo Saksholm Johanna Tjäder Eetu Turunen

7. Oliot ja viitteet 7.1

UML-kielen formalisointi Object-Z:lla

PERL. TIE Principles of Programming Languages. Ryhmä 4: Joonas Lång & Jasmin Laitamäki

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin peruskurssien laaja oppimäärä

Ruby. Tampere University of Technology Department of Pervasive Computing TIE Principles of Programming Languages

A TIETORAKENTEET JA ALGORITMIT

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

Prolog kielenä Periaatteet Yhteenveto. Prolog. Toni ja Laura Fadjukoff. 9. joulukuuta 2010

Transkriptio:

.NET ja C# Virtuaalikone Periaate Virtuaalikone on tapa abstrahoida allaoleva toteutus yhteisen rajapinnan taakse. Virtuaalikoneet muodostavat hierarkian. Hierarkiassa ylempänä oleva käyttää alemman tarjoamaa rajapintaa ja tarjoaa omat palvelunsa ylöspäin. Etuja Vaikka allaoleva toteutus (esim. laitteisto) muuttuu radikaalisti, hierarkian ylemmät osat (esim. ohjelmat) voivat toimia välissä olevien (esim. käyttöjärjestelmän) kerrosten päällä muutumattomina. Abstraktion vahvistuminen hierarkiassa noustessa helpottaa työtä (esim. sovelluskehitystä) Haittoja Pääsyä alemman virtuaalikoneen ohi ei välttämättä ole tarjolla. Jokainen kerros kuluttaa tehoa. Jos jokin kerros on tehoton, se heijastuu suoraan kaikkiin ylempiin kerroksiin. Common Language Infrastructure (CLI) Mikä on CLI Microsoftin avoin määrittely, joka kuvaa ajettavan koodin ja ajoympäristön. Muodostaa.NET Frameworkin ytimen. Sallii useiden eri korkean tason ohjelmointikielien käytön eri ympäristöissä. Virtuaalikonehierarkiassa käyttöjärjestelmän ja sovelluksen välissä (kuten Java VM). CLI standardin merkitys (CLS, Ecma) CLI on Microsoftin kehittämä ja Ecman standardoima (Ecma-335) spesifikaatio. Ecman standardi mahdollistaa avoimen ohjelmistokehityksen CLI:n pohjalta. Microsoftin alkuperäinen ajatusmalli oli luoda käyttöjärjestelmäriippumaton standardi. Tällä hetkellä merkittävin CLI:n toteuttava implementaatio on Microsoftin.NET Framework..NET tukee vain Microsoft Windows ympäristöä.

Muita CLI:n mukaisia toteutuksia ovat mm. MONO ja, Portable.NET, jotka toimivat mm. Windows, NetBSD, FreeBSD, Solaris, BeOS, Linux ja Mac OS X ympäristöissä..net ja CLI Välikieli (CIL) CLI määrittelee.net-kääntäjien generoiman välikielen. Ajonaikainen suoritusympäristö kääntää välikielen konekielelle. Common Language Specification (CLS) Määrittelee rakenteet, joita CLS-yhteensopivissa ohjelmointikielissä on mahdollista olla Metodit, rajapinnat, taulukot, kentät, enumeraatiot, tapahtumat, arvotyypit, luokat, alustimet, poikkeukset, näkyvyys Common Type System (CTS) Määrittää kielestä riippumattoman muuttujatyyppirakenteen eli virtuaalisen suoritusympäristön sisäiset tyypit, jotka kielen on toteutettava ollakseen CLS-yhteensopiva Metadata Sisältää kielestä riippumatonta tietoa ohjelmasta ja sen suorituksesta Voidaan hyödyntää sekä kielissä että työkaluissa Esim. versiotiedot Voidaan laajentaa ohjelmoinnillisesti Virtual Execution System (VES) Lataa ja suorittaa CLI-yhteensopivia ohjelmia Yhdistää koodisegmenttejä metadatan avulla Kääntää välikielen konekielelle Garbage Collection (GC) Huolehtii muistin siivouksesta Pitää yllä tietoa olioviittauksista.net ohjelmoijalle Historiaa Delphin kehittäjä Anders Hejlsberg palkattiin vuonna 1996 Borlandilta Microsoftille kehittäämään MS:n Java-virtuaalikonetta (JVM) ja Visual Studion J++:aa. Sun ja Microsoft ajautuivat erimielisyyksiin siitä, kuinka paljon MS saa laajentaa JVM:ää. Microsoftilla kehitettiin J++:n ohessa myös omaa kieltä, jonka projektinimi oli Cool

Ilmeisesti Java-kielen kehittämisen mahdottomuus ajoi MS:n julkaisemaan Coolin, josta tuli C# Julkaisunsa jälkeen vuonna 2000 C# ja CLI annettiin Ecmalle (European Computer Manufacturers Association) standardoitavaksi ja se standardoitiin vuonna 2002.NET tänään Nykypäivänä lukuisista kielistä on olemassa.net toteutus Sisäänrakennettuina kielinä C# JScript.NET J# C++.NET (Managed C++) Visual Basic.NET Lisäksi kolmannen osapuolen toteuttamia.net yhteensopivia kieliä on useita, esimerkiksi: A# (Ada) APL Boo, based on Python COBOL Component Pascal Delphi 8 ja Delphi 2005 Eiffel F# Forth FORTRAN IKVM (Java) IronPython (Python) Lexico Lisp Mercury Mondrian Nemerle Oberon Perl RPG Smalltalk Lisäksi.NETiin kuuluvat ASP.NET, joka on.netiin perustuva kehittyneempi versio Active Server Pages -teknologiasta sekä ADO.NET, joka on.netin toteutus Microsoftin ADO (ActiveX Data Objects) -teknologiasta Ohjelmistokehitys.NETillä Useiden kielien toimiminen yhteen helpottaa ohjelmistokehitystä Eri kielten osaajat voivat toimia suoraan samassa ympäristössä Voit periä C#-luokan C++:ssa, instantioida sen Eiffelissä ja kutsua sen metodia COBOLissa Kieli ja sen.net-versio saattavat erota toisistaan huomattavasti

Kielten suorituskyky ei myöskään välttämättä vastaa alkuperäistä C++.NET Hallittu koodi Tuo C++:aan.NET:in vaatimat ominaisuudet Pystyy sekoittamaan hallittua ja hallitsematonta koodia Nopein.NETin sisäänrakennetuista kielistä CLI-standardin mukaista koodia, jonka suoritusta hallinnoidaan erilaisin turvallisuusmenettelyin, esimerkiksi Rajoittamalla suoritusoikeuksia Tarkastamalla taulukoiden indeksit ajonaikaisesti, mikä estää puskuriylivuodot Ilmoittamalla ylivuodoista aritmeettisissa operaatioissa Hallitusta koodista ei ole mahdollista päästä tekemään suoria muistiosoituksia eikä käsittelemään prosessorin rekistereitä. Hallitussa koodissa ei ole myöskään perinteisiä funktioosoittimia Ajoympäristön suorittamat turvallisuustarkastukset sekä oikeuksien hallinta toimii ainoastaan silloin kun on kyse hallitusta koodista CLI-standardi mahdollistaa hallitusta koodista tehtävät kutsut hallitsemattomaan koodiin eli perinteiseen käyttöjärjestelmässä ajettavaan ohjelmakoodiin Helpottaa ohjelmointia ja ylläpitoa C# kielenä C# vs Java vs C++ Keskimäärin C# on suorituskyvyltään C++:n ja Javan välillä C#:ssa on enemmän ominaisuuksia kuin Javassa Syntaktisesti enemmän Javan kuin C++:n kaltainen C# on näistä kolmesta nopeiten kehittyvä C# 2.0 Julkaistiin 7.11.2005 Uusia ominaisuuksia esimerkiksi Generics Iteraattorit Osittaiset luokat Nimettömät metodit Nollattavat tyypit Closures

C# 3.0 Lambda expressions Kieleen rakennetut tietokantakyselyt Laajennusmetodit