Programiranje u C

2. Uvod u .NET okru enje (.NET Framework)

to je .NET okru enje
‡ Okru enje za razvoj i izvo enje programa na razli itim operacijskim sustavima i hardverskim platformama, neovisno o programskom jeziku u kojem su ti programi pisani
± izvorni kôd iz vi eg programskog jezika ne prevodi se izravno u strojni izvedbeni kôd, ve u me ukod - Common Intermediate Language (CIL, zajedni ki me ujezik) te se tako distribuira ± na odredi nom ra unalu se me ukôd prilikom pokretanja aplikacije prevodi u mati ni strojni kôd

Programiranje u C

- 2. Uvod u .NET okru enje

2

Rasprostranjenost
‡ Podr ane platforme: MS Windows i Linux ‡ Microsoft je razvio prevoditelje za C++/CLI (managed C++), C , Visual Basic, F#, Iron Python, Iron Ruby,J ‡ Postoje prevoditelji i za mno tvo drugih jezika na .NET okru enju (APL, COBOL, Eiffel, Fortran, Scheme, Smalltalk«) koje su razvili nezavisni proizvo a i ili akademske zajednice

Programiranje u C

- 2. Uvod u .NET okru enje

3

Primjena
‡ Iako je .NET okru enje prvenstveno zami ljeno za izradu Internet aplikacija i Web servisa, mogu a je izrada i drugih tipova aplikacija: XML Web servisa, Web formi, Windows aplikacija s grafi kim su eljem (GUI), Windows konzolnih aplikacija (CUI), Windows servisa ‡ Na raspolaganju je bogata biblioteka klasa koja olak ava izradu aplikacija razli itih tipova

Programiranje u C

- 2. Uvod u .NET okru enje

4

Pogodnosti pri razvoju aplikacija
‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ dosljedan objektno-orijentirani model programiranja pobolj ana uskla enost verzija (nema vi e ³DLL pakla´) pojednostavljena distribucija mogu a ve a kompatibilnost s razli itim platformama povezivanje razli itih programskih jezika automatsko upravljanje memorijom (garbage collection) provjera sigurnosti tipa (type-safe verification) dosljedan pristup prijavi pogre aka pobolj ana sigurnost zdru ivost s postoje im kôdom
Programiranje u C - 2. Uvod u .NET okru enje 5

NET okru enje podr ava dosljedan objektnoorijentirani pristup programiranju: ± sav kôd pi e se unutar klasa ± Win API metode smje tene su u klase u . napravljene su objektno-orijentirane ovojnice oko Win API metoda) Programiranje u C .Dosljedan o-o model programiranja ‡ .2.NET okru enje 6 . Uvod u .NET biblioteci (tj.

Pobolj ana uskla enost verzija ‡ esto razli ite aplikacije koriste iste DLL-ove. Programiranje u C .NET okru enje 7 . ‡ . Uvod u .2. Nadogradnjom aplikacija DLL-ovi se nadomje taju novijim verzijama te se mo e dogoditi da starije aplikacije vi e ne rade zbog toga (tzv.NET okru enje ovaj problem rje ava striktnim kori tenjem verzija (verzioniranje ± versioning). ³DLL pakao´ ± ³DLL hell´).

Uvod u .2.NET okru enju razvijaju se za to no odre enu verziju DLL-a ± unutar samog modula precizno je zapisano koje druge module i koje njihove verzije koristi. tako da starije aplikacije i dalje mogu raditi ispravno. ‡ Prilikom nadogradnje DLL-a.Pobolj ana uskla enost verzija ‡ Aplikacije u . Programiranje u C . nova verzija ne ³prepisuje´ postoje u (razli ite verzije mogu koegzistirati).NET okru enje 8 .

Programiranje u C .NET aplikacija nije potrebna zasebna instalacijska procedura ± dovoljno je prekopirati datoteke na odredi no ra unalo i pokrenuti aplikaciju.2. Uvod u .Pojednostavljena distribucija ‡ Danas mnoge aplikacije zahtijevaju instalacijske procedure koje rade promjene u registru (registry).NET okru enje 9 . ‡ Uklanjanje takvih aplikacija zahtijeva pokretanje deinstalacijske procedure. a ponekad su takve deinstalacije nemogu e zbog DLL-ova koje zajedni ki koriste druge aplikacije. ‡ Za instalaciju jednostavnih .

NET okru enje 10 .NET aplikacija. izvorni kôd se ne prevodi u strojni kôd za odre eni procesor ili operacijski sustav. ‡ Naprotiv. Uvod u .Ve a kompatibilnost s razli itim platformama ‡ U ³klasi nim´ aplikacijama se prilikom prevo enja mora navesti za koji procesor ili platformu se izvedbeni kôd mora generirati. prilikom prevo enja . Programiranje u C . ve u me ukôd.2.

2. Programiranje u C .NET okru enje na doti nom stroju i ono osigurava da se dobije odgovaraju i izvedbeni kôd.NET okru enje 11 . Uvod u .Ve a kompatibilnost s razli itim platformama ‡ Tek se tijekom izvo enja aplikacije na odredi nom ra unalu me ukod prevodi u strojni kôd ± to radi . ‡ Stoga e se npr. ista aplikacija optimalno izvoditi na 32-bitnim kao i na 64-bitnim Windows-ima.

NET okru enje 12 .NET okru enja mogu biti instalirane i funkcionalne na jednom ra unalu.NET okru enjima ‡ Sve postoje e verzije .NET okru enja mogu se izvoditi na novijim verzijama okru enja. Uvod u .Kompatibilnost me u razli itim .2. Programiranje u C . ‡ Osigurana je kompatibilnost ³prema nazad´: aplikacije napravljene na starijim verzijama .

NET okru enje 13 . Uvod u .NET aplikacije nije druga ije navedeno: ± prilikom pokretanja. Programiranje u C . aktivirat e se . pokre e se najnovija instalirana verzija okru enja. ± ako nema doti nog okru enja.Kompatibilnost me u razli itim .NET okru enje za koje je aplikacija izvorno napravljena.2.NET okru enjima ‡ Ako u konfiguracijskoj datoteci .

2.NET okru enje 14 .Povezivanje razli itih programskih jezika esto se doga a da se dijelovi koda pi u u razli itim programskim jezicima. Uvod u . program pisan u VB-u koristi DLL koji se razvija u jeziku C++ ‡ . Npr.NET jezici moraju zadovoljavati ‡ Programiranje u C . CTS) ± specifikaciji koju svi .NET svojim dosljednim modelom omogu ava jednostavno povezivanje modula pisanih u razli itim programskim jezicima ‡ Mogu e je da kôd u C definira klasu naslije enu iz kôda pisanog u C++-u ‡ Ovo je omogu eno zahvaljuju i zajedni kom tipskom sustavu (Common Type System.

2. Programiranje u C . programer prilikom pisanja koda mora voditi ra una da pravovremeno oslobodi memorijski prostor za objekte koji vi e nisu dostupni ‡ U protivnom dolazi do curenja memorije (memory leak) ± raspolo iva memorija se smanjuje ‡ Upravljane (managed) aplikacije su pod kontrolom .NET okru enja koje preko sustava za automatsko skupljanje sme a vodi ra una o osloba anju memorije.Automatsko upravljanje memorijom ‡ U ³klasi nim´ neupravljanim (unmanaged) aplikacijama (koje nisu pod kontrolom .NET okru enje 15 . Uvod u .NET okru enja).

Uvod u .Provjera sigurnosti tipa ‡ .2.NET okru enje onemogu ava me usobno pridru ivanje ili proslje ivanje metodama nekompatibilnih tipova podataka ‡ Nemogu e je referencirati pogre nu adresu koja bi mogla naru iti jedinstvenost aplikacije ili cijelog sustava Programiranje u C .NET okru enje 16 .

NET okru enju pogre ke se prijavljuju bacanjem iznimki (exception throwing) Programiranje u C . Uvod u .2.NET okru enje 17 .Dosljedan pristup prijavi pogre aka ‡ U dosada njim aplikacijama se nepravilnost obi no dojavljivala povratnom vrijedno u metode ‡ Takav pristup nepotrebno optere uje kôd mnogobrojnim provjerama ‡ U .

Uvod u .2. u objektu koji se proslje uje prilikom bacanja) sadr ana je informacija o pogre ki ‡ Hvatanje iznimke i oporavak se obavlja na odgovaraju em mjestu koje je redovito odvojeno od glavne logike ± razdvaja se glavna logika od dijela kôda koji obra uje pogre ke Programiranje u C .Dosljedan pristup prijavi pogre aka ‡ U samoj iznimci (tj.NET okru enje 18 .

Pobolj ana sigurnost ‡ .NET okru enje 19 .2.NET okru enje ima ugra ene mehanizme koji onemogu avaju neovla teni pristup resursima ‡ To je naro ito bitno kod aplikacija koje se distribuiraju preko Interneta Programiranje u C . Uvod u .

Zdru ivost s postoje im kôdom ‡ Ve postoji mno tvo provjerenog kôda koji nema smisla prepisivati da radi pod .NET okru enje 20 .2.NET okru enjem ‡ Iako je ve i dio Win API-a dobio objektno-orijentiranu ovojnicu.NET aplikacija ‡ . Uvod u . postoje metode i strukture koje je potrebno izravno koristiti unutar .NET omogu ava jednostavno kori tenje COM objekata kao i poziv Win API metoda i kori tenje Win API struktura Programiranje u C .

NET okru enja ‡ Common Language Runtime (CLR) ± ³izvedbena okolina´ ± upravlja izvo enjem kôda (pod uvjetom da je taj kôd generiran kao upravljani kôd ± managed code) ‡ Framework Class Library (FCL) ± ³biblioteka klasa´ ± biblioteka klasa (tipova) koje aplikacije mogu koristiti bez obzira na jezik u kojem su pisane Programiranje u C .Osnovne komponente .NET okru enje 21 . Uvod u .2.

2. Windows Communication Foundation Programiranje u C . Uvod u . Windows Presentation Foundation. ADO.Osnovne komponente . LINQ.NET okru enje 22 . ASP.NET.NET okru enja ‡ Common Language Runtime (CLR) jest Microsoftova implementacija CLI-a za Windows OS ‡ Framework Class Library (FCL) uklju uje: ± Base Class Library (BCL) ± jezgru biblioteke dostupnu u svim implementacijama ± Dodatne klase uklju uju i WinForms.NET.

NET 2.0 3. Uvod u .NET okru enje .5 3.NET ADO.0 LINQ WPF WCF WF Card Space WinForms ASP.Osnovne komponente .0 23 .NET Base Class Library Common Language Runtime Programiranje u C .NET (entity framework) 4.2.NET okru enja Parallel LINQ Task Parallel Library ADO.

NET prevoditelj Upravljani modul (IL i metapodaci) IL izvorni kôd IL Assembler Upravljani modul (IL i metapodaci) Upravljani modul (IL i metapodaci) Programiranje u C .2. Uvod u .Prevo enje kôda C C izvorni kôd prevoditelj VB.NET okru enje 24 .NET izvorni kôd VB.

no podr ava operacije na objektima. CIL).NET okru enje 25 . jeziku koji je sli an asemblerskom. bacanje i hvatanje iznimki ‡ Izvorni naziv za me ujezik je bio Microsoft Intermediate Language (MSIL). Uvod u .2. pozive virtualnih metoda. ali je taj naziv nakon standardizacije promijenjen Programiranje u C .Prevo enje kôda ‡ Prilikom prevo enja izvorni kôd se ne prevodi u strojni kôd za odredi no ra unalo nego u me ukôd ‡ Me ukôd je kod u me ujeziku (Common Intermedate Language.

Upravljani modul ‡ Prevo enjem se dobiva upravljani modul (managed module) ‡ To je datoteka koja ima format PE (Portable Executable) datoteke ‡ PE format imaju sve izvedbene (³exe´) i DLL datoteke kao i datoteke objektnog kôda (³obj´) na Windows OS-ovima Programiranje u C .2.NET okru enje 26 . Uvod u .

polaznu metodu Tablice s opisom tipova i lanova kori tenih u izvornom kôdu te s tipovima i lanovima koji se pozivaju iz njega Kôd kojeg je prevoditelj generirao iz izvornog kôda i kojeg CLR prevodi u mati ne strojne instrukcije. Sadr i podatke potrebne CLR-u na kojem se kôd izvodi.Dijelovi upravljanog koda PE zaglavlje Zaglavlje koje definira da li je datoteka GUI. Uvod u .NET okru enje 27 CLR zaglavlje Metapodaci IL kôd . npr. Programiranje u C . tada ovo zaglavlje sadr i i podatke o tom kôdu. CUI ili DLL.2. verziju CLR-a potrebnu za izvo enje modula. Ako modul sadr i i strojni izvedbeni kôd.

Povezivanje upravljanih modula Upravljani modul (IL i metapodaci) Upravljani modul (IL i metapodaci) Alat koji povezuje vi e upravljanih modula i datoteka resursa u jedan skup (assembly) prevoditelj (csc.) 28 Datoteka resursa (jpeg. resx itd.) Datoteka resursa (jpeg. gif.NET prevoditelj (vbc.exe) C Skup (assembly) Manifest popisuje datoteke u skupu Upravljani modul (IL i metapodaci) Upravljani modul (IL i metapodaci) Datoteka resursa (jpeg. VB. Uvod u . resx itd.exe).2. resx itd.NET okru enje .) Programiranje u C .) Datoteka resursa (jpeg. al. gif. gif. Poveziva (assembly linker. resx itd.exe). gif.

NET\Framework\vX.X.X kazalu Programiranje u C .dll je klju na komponenta za pokretanje . a u SysWOW64 32-bitna verzija ‡ Sve ostale datoteke .2. Uvod u .NET okru enja nalaze se u Microsoft.Da li je instalirano okru enje ‡ MSCorEE.dll u system32 kazalu unutar sistemskog windows kazala (Windows ili Winnt) ‡ Na 64-bitnim Windows-ima.NET okru enje 29 .NET aplikacija ‡ MSCorEE. zbog kompatibilnosti se u system32 nalazi 64-bitna verzija.

NET okru enja instaliraju se u Microsoft.NET\Framework kazalo ‡ Svaka instalirana verzija ima svoje kazalo s nazivom koje odgovara broju verzije Programiranje u C .NET okru enje 30 .2. Uvod u .Gdje se nalazi na disku ‡ Sve ostale datoteke .

NET okru enje 31 .Koje su verzije instalirane ‡ Klju u registru (registry): HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ NET Framework Setup\NDP Programiranje u C .2. Uvod u .

Uvod u .dll koji se nalazi u podkazalu odgovaraju e verzije Programiranje u C .2.NET okru enje 32 .NET-a ‡ MSCorEE.Vi e verzija okru enja ‡ Na istom ra unalu mo e biti instalirano vi e verzija .dll prilikom pokretanja programa provjerava koju verziju CLR-a treba aktivirati te poziva odgovaraju i MSCorWks.dll je od najnovije verzije ‡ MSCorEE.

Uvod u .NET okru enje 33 .idata odjeljak DLL: MSCorEE.2. pretra i metapodatke Main metode da bi na ao adresu IL-a unutar EXE 3. ska e na Main u mati nom strojnom kôdu (u primarnoj izvedbenoj níti) izvo enje aplikacije zapo inje Programiranje u C . pretra i CLR zaglavlje da bi dohvatio simbol Main metode u metapodacima 2.dll funkcija: _CorExeMain JMP _CorExeMain Adresni prostor Upravljani EXE CLR zaglavlje IL metapodaci MSCorEE. prevodi Main iz IL-a u mati ni strojni kôd 4.dll MSCorEE: 1.text odjeljak .Pokretanje programa Upravljani EXE PE zaglavlje .

prevodi se kôd sljede e metode Programiranje u C .Izvo enje programa ‡ Kada se .NET okru enje 34 . kori tenjem JIT (Just-In-Time ± ³to no na vrijeme´) prevoditelja ‡ Prevodi se samo kôd metode koja se treba izvesti ± prije ulaska u sljede u metodu.NET program pokrene.NET okru enje ‡ . aktivira se . Uvod u .2.NET okru enje zadu eno je za prevo enje IL kôda u strojni kôd odredi nog ra unala ‡ Prevo enje se obavlja prije ulaska u pojedinu metodu.

Uvod u .2. promijeni ulaznu adresu metode u tablici tipa (Console) tako da sada pokazuje na memorijski blok sa izvedbenim k ôdom 6. preko metapodataka dohvati me ukôd za tu metodu 3.WriteLine("Izbavitelju"). Console..dll JITCompiler metoda { 1.Izvo enje programa (2) Upravljani EXE static void Main() { Console. } Consol e static void WriteLine() JITCompiler static void WriteLine(string) JITCompiler (ostali lanovi) . u skupu (assembly) koji implementira tip (Console ) potra i odgovaraju u metodu (WriteLine) 2. alocira memorijski prostor za izvedbeni kôd 4. prevede me ukôd u izvedbene instrukcije procesora i pohrani u taj alocirani prostor 5.WriteLine("Pozdrav").. ska e na izvedbeni kod u memorijskom bloku } Programiranje u C . Izvedbeni strojni kôd MSCorEE.NET okru enje 35 .

Uvod u . promijeni ulaznu adresu metode u tablici tipa (Console ) tako da sada pokazuje na memorijski blok sa izvedbenim k ôdom 6.. preko metapodataka dohvati me ukôd za tu metodu 3.Izvo enje programa (3) Upravljani EXE static void Main() { Console.2. alocira memorijski prostor za izvedbeni kôd 4.WriteLine("Izbavitelju"). MSCorEE. u skupu (assembly) koji implementira tip (Console ) potra i odgovaraju u metodu (WriteLine) 2. } Console static void WriteLine() JITCompiler static void WriteLine(string) Izvedbeni strojni k ôd Izvedbeni strojni kôd (ostali lanovi) ..NET okru enje 36 .dll JITCompiler metoda { 1.WriteLine("Pozdrav"). Console. ska e na izvedbeni kod u memorijskom bloku } Programiranje u C . prevede me ukôd u izvedbene instrukcije procesora i pohrani u taj alocirani prostor 5.

aktivirat e se . pokre e se najnovija instalirana verzija okru enja ‡ Konfiguracijskom datotekom aplikacije mo e se eksplicitno navesti koja verzija . Uvod u .NET okru enja e biti aktivirana Programiranje u C .NET okru enje za koje je aplikacija izvorno napravljena ‡ Ako nema doti nog okru enja.NET okru enje 37 .Odabir verzije .2.NET okru enja pri pokretanju aplikacije ‡ Prilikom pokretanja.

Konfiguracijska datoteka aplikacije ‡ Konfiguracijska datoteka mora imati naziv imeAplikacije. gdje je imeAplikacije naziv izvedbenog (exe) modula ‡ Prije pokretanja aplikacije.config datoteka u istom kazalu gdje je aplikacija ± ako postoji. njen sadr aj se ita prije pokretanja same aplikacije ‡ Konfiguracijska datoteka je u XML formatu i sadr i podatke bitne za izvo enje aplikacije Programiranje u C .2.config.NET okru enje 38 . provjerava se postoji li odgovaraju a . Uvod u .

3705" /> Programiranje u C .4322" /> <supportedRuntime version="v1.config datoteka: <configuration> <startup> <supportedRuntime version="v1.1.4322" /> </startup> </configuration> --------------------------------------------<configuration> <startup> <supportedRuntime version="v1.3705" /> </startup> </configuration> --------------------------------------------<requiredRuntime version="v1. Uvod u .1.2.NET okru enje 39 .0.0.Konfiguracijska datoteka aplikacije ‡ .

Uvod u .NGen ‡ U okviru .NET okru enja nalazi se i Ngen.NET okru enje 40 . aplikacije treba ponovno prevesti ± JIT prevoditelj mo e bolje optimizirati kôd za konkretne situacije Programiranje u C .2. tako da prilikom izvo enja aplikacije ne treba koristiti JIT prevoditelj ± takav program e se u ve ini slu ajeva br e izvoditi (nema JIT prevo enja) ‡ Nedostaci: ± odr avanje: kada se a uriraju moduli.exe (Native Image Generator) koji omogu ava prevo enje aplikacije iz IL koda u strojni kod ‡ Ona omogu ava da se prilikom instalacije aplikacije na odredi no ra unalo generira odmah strojni kod.

Uvod u . biblioteka je raspodijeljena hijerarhijski u razli ite imenike (namespace) ± korijenski je imenik System ‡ U sljede oj tablici su navedeni neki od imenika. ine Base Class Library) Programiranje u C .2. FCL) sadr i nekoliko tisu a klasa.NET okru enje 41 . su elja i vrijednosnih tipova ‡ Radi preglednosti. Ve ina sadr i i ³podimenike´ ‡ Crveno su ozna eni imenici koji su standardizirani (tj.Biblioteka klasa ‡ Biblioteka klasa (Framework Class Library.

stoga (stack). polja bitova (bit array). Obrada transakcija. Rukovo enje sustavom. Definiranje regionalnih podataka. poput jezika. dr ave.EnterpriseServices System. sigurnost. asocijativnih tablica (hashtable) i imenika (dictionary).Globalization System. Diagnosticiranje (otkrivanje pogre aka).Diagnostics System.Drawing System. doga aja i rukovatelja doga ajima. Crtanje. object pooling. atributa i procesnih iznimki.Forms aplikacije.Management Programiranje u C . ure ajima i aplikacijama. U itavanje i zapis tokova podataka i datoteka.2. repa (queue).NET okru enje 42 . su elja. Uvod u . System. aktiviranje JIT. nov arskih iznosa.Collections System. Kolekcije poput liste.Biblioteka klasa (2) System Osnovni tipovi i definicije esto kori tenih vrijednosti i referenci. redovito se koriste za Windows.IO System. formata zapisa datuma.

Biblioteka klasa (3) System. Uvod u . mati nom Win API-u. Unicode).Reflection System.Security System. Pohranjivanje u i rekreiranje objekata iz toka.2. Uvid u metapodatke te dinami ko kreiranje i pozivanje tipova.Threading System.Forms System. Udaljeni pristup objektima.Runtime.Text System.NET okru enje 43 .Runtime. raznovrsna kodiranja teksta (ASCII.Web System.Xml Komunikacija preko mre e. Vi enítno izvo enje aplikacija.NET) Rad s grafi kim dijelom Windows API-a Podr ka za XML podatke.InteropServices System. Programiranje u C . Web su elje (ASP.Windows. Za tita podataka i resursa Rad s tekstom.Runtime.Remoting System. Kreiranje regionalno-specifi nih resursa Pristup COM objektima.Resources System.Serialization System. UTF8.Net System.

Uvod u .NET okru enje 44 .Zajedni ki tipski sustav (1) ‡ Common Type System (CTS): formalna specifikacija kako su tipovi definirani i kako se pona aju ‡ Svaki tip mo e sadr avati nula ili vi e lanova: ± ± ± ± Polje (field) Metoda (method) Svojstvo (property) Doga aj (event) Programiranje u C .2.

Uvod u .2.Zajedni ki tipski sustav (2) Dohvatljivost lana Privatni (private) Familijarni (family) Familijarni i skupni (family and assembly) Skupni (assembly) Familijarni ili skupni (family or assembly) Javni (public) Programiranje u C C# modifikator private protected internal protected internal public .NET okru enje 45 .

Uvod u .NET okru enje 46 .Zajedni ki tipski sustav (3) Svi tipovi su izvedeni iz System.Object: ‡ mo e napraviti usporedba dviju instanci i utvrditi njihova jednakost ‡ dobiti hash kôd za instancu objekta (kojim se taj objekt mo e jednozna no razlu iti od druge instance) ‡ dobiti stvarni tip instance ‡ mo e napraviti plitka (bitovna) preslika instance ‡ mo e dobiti prikaz tog objekta i njegovog trenutnog stanja u obliku znakovnog niza.2. Programiranje u C .

CLS) definira skup pravila koje mora zadovoljavati svaki jezik koji eli koristiti zajedni ku infrastrukturu (Common Language Infrastructure.Zajedni ka jezi na specifikacija ‡ Zajedni ka jezi na specifikacija (Common Language Specification. CLI) ‡ Svaki program koji zadovoljava CLS.2. Uvod u . neovisno u kojim su jezicima pisani Programiranje u C . mo e sura ivati s drugim takvim programom.NET okru enje 47 .

NET okru enje 48 .Zajedni ka jezi na specifikacija (2) ‡ Primjer: VB ne radi razliku izme u velikih i malih slova u imenima objekata. dok ih C razlikuje ‡ Da bi VB.2. Uvod u .NET mogao koristiti kôd pisan u C . taj kôd mora zadovoljavati CLS CLR / CTS C# NekiJezik CLS Visual Basic Programiranje u C .

2. Uvod u . mo e se osigurati da prevoditelj prijavi upozorenja za kod koji ne zadovoljava CLS: [assembly: CLSCompliant(true)] public class Moja { // upozorenje: uint nije CLS tip public uint metoda() { « } // upozorenje: razlika samo malo/veliko slovo public int Metoda() { « } } Programiranje u C .Zajedni ka jezi na specifikacija (3) ‡ Kori tenjem atributa CLSCompliant.NET okru enje 49 .

.NET okru enje 50 . Uvod u .NET u CIL. Java u bytecode) ‡ Prevo enje u strojni kôd se izvodi tijekom izvo enja aplikacije na odredi nom stroju ‡ Na raspolaganju velika biblioteka klasa ‡ Ugra eni sustav za upravljanje memorijom ‡ Organizacija kôda u pakete (Java) / imenike (.sli nosti ‡ Koncept virtualnog stroja ‡ Ne prevodi se u strojni kôd (.NET ² Java VM .2.NET) Programiranje u C .

Mac OS X) Programiranje u C .NET ² Java VM .NET podr ava jednostavno povezivanje niza jezika ‡ JVM je multiplatforman ...2.NET okru enje 51 . Solaris.razlike ‡ JVM je orijentirana na programski jezik Java i povezivanje s drugim jezicima je komplicirano .NET je orijentiran prvenstveno na Windows platforme (iako postoje djelomi ne implementacije za Linux. Uvod u ..

NET okru enje 52 .razlike ‡ JVM je vlasni tvo kompanije Oracle (ima nadzor nad kori tenjem imena i certificiranju) ± .NET ² Java VM .. koristiti niti dalje distribuirati Programiranje u C . Uvod u .NET je standardiziran od strane ECMA i ISO ‡ izvorni kod .NET okru enja je dostupan na uvid.2. ali se ne smije mijenjati.