C# julkaistiin 6/2000
Julkaisun yhteydessä CLI (common language infrastructure) ECMA.n standartoitavaksi
Kehittelyn taustalla Anders Hejlsberg (palkattiin Borlandilta kehittämään Java-virtuaalikonetta)
Sun ja Microsoft erimielisyyksiin JVM:stä
.NET
Suurin muutos sitten DOS Win
MS:n taisteluase Javaa vastaan satsattu paljon
Sovelluskehittäjälle
Yhteinen runtime
Uusi komponenttimalli
Uudet kielet ?.NET
Parempi kehitysympäristö
XML-tuki
Tukihenkilölle
DLL ongelmat poistuu
Tietoturva
Uusi integreointimalli
.NET perhe
C#
VB.NET
ASP.NET
ADO.NET
J#
(C++)
… muut .NET kielet
Käsitteitä
CLS – Common Language Specifigation, määrittää millainen .NET kielen tulee olla
CTS – Common Type System, määrittää kielen muuttujatyyppirakenteen kaikille .NET kielille
BCL – Base Class Library, kaikille kielille yhteinen perusluokkakirjasto
CLR – Common Language Runtime on ajonaikainen ympäristö (lataa sovellukset, suorittaa JIT käännökset, huolehtii suoritusoikeuksista, muistin hallinta, kutsuu käyttöjärjestelmän palvelut)
JIT – Just In Time
Mitä uutta
Managed koodia suoritetaan CLR:n alla ei enää bin-koodia, vaan MSIL-kieltä (Microsoft Intermediate Language, assembly-kieli) koodi ajetaan frameworkissä (vrt. Javan VM…) { C# FrameWork käyttöjärjestelmä }
Alusta riippumaton hajautustekniikka (Web Services)
Helpompi hallita… asennus on xcopyä (on dll-tiedostoja, muttei tarvitse rekisteröintiä)
FrameWork
Windows COM+ Services Common Language Runtime Base Class Library ADO.NET and XML ASP.NET Windows Forms Common Language Specification VB.NET C++ C# J# Jne..
Koodista sovellukseksi…
Kirjoita lähdekoodi
Käännä lähdekoodi exeksi (csc.exe)
C# kääntäjä kirjoittaa MSIL-koodin ja luettelon (manifest), jossa on PE (Win32 portable executable) otsikko koodiin tulee _CorExeMain ajonaikainen tiedosto
Kun sovellus käynnistetään, otetaan PE ja tarvittavat DLL:t, myös mscoree.dll (CorExeMainiä varten)
Käyttöjärjestelmän lataaja hyppää PE:n aloituskohtaan = aloituskohta on _CorExeMain-funktion aloituskohta
… koodista sovellukseksi
CorExeMain käynnistää MSIL koodin suorituksen
MSIL-koodia ei voi suorittaa suoraan, vaan se on käännettävä CLR:n avulla konekieleksi. Käännöksessä käytetään JIT täsmäkääntäjää
JITeistä on käytössä kolme erilaista vaihtoehtoa
Asennusaikainen (PreJIT) – kääntää asennuksen aikana bin-koodiksi
JIT – suorituksen aikainen käännös
EconoJIT – koneille joissa vähän muistia eli käännetään osia sitä mukaa kuin tarvitaan
CLR käännös, suoritus kuvana
Lähdekoodi Kääntäjä Code / Metadata JIT compiler Native code Käännös tehdään
Metodikohtaisesti
JIT valinnan mukaisesti;
Ensimmäisellä kutsu-
Kerralla tai asennetta-
essa
ILDASM
IL Disassembler
Tee sovellus ja käännä exe
Aja ildasm
Start – Programs – MS Visual Studio.NET 2003 – Visual Studio.NET Tools – Visual Studio.NET 2003 Command Promt
Avaa File/Open toiminnolla exe
Tutustu Manifestiin ja assembler koodiin
Comments