CLR na platformie .NET Tomasz Kostarski.

Slides:



Advertisements
Podobne prezentacje
C++ wykład 2 ( ) Klasy i obiekty.
Advertisements

C++ wykład 4 ( ) Przeciążanie operatorów.
Język C/C++ Funkcje.
Programowanie obiektowe
Programowanie obiektowe
Wzorce.
Generics w .NET 2.0 Łukasz Rzeszot.
Wprowadzenie do C++ Zajęcia 2.
PROGRAMOWANIE STRUKTURALNE
PROGRAMOWANIE STRUKTURALNE
Wydajne aplikacje na platformie .NET
Platforma .Net i Vs.Net.
Biblioteki i przestrzenie nazw
C++ wykład 2 ( ) Klasy i obiekty.
Pakiety i ATD 1 Definicja. Pakietem albo jednostką programową nazywamy grupę logicznie powiązanych elementów, które mogą być typami, podtypami, obiektami.
ASP.NET i platforma.NET Technologie internetowe ( ) Tomasz Popów
P I OTR SKOŁYSZ. POCHODZENIE I CELE CZYM JEST.NET ? CO IMPLEMENTUJE MONO ? ŚRODOWISKO PRACY [MONODEVELOP] SYTEMY OPERACYJNE CO PROGRAMOWAĆ ? JĘZYKI PRZYKŁADOWY.
Wstęp do programowania obiektowego
Java – programowanie obiektowe
Język Java Wielowątkowość.
Wprowadzenie do programowania w języku Turbo Pascal
SZPIF – Harmonogram, Opis narzędzi, Schemat bazy danych
C# Windows Forms Zastosowania Informatyki Wykład 2
Podstawy C# Grupa .NET PO.
Podstawy programowania
Podstawy programowania II
Rozwój aplikacji przy wykorzystaniu ASP.NET
Witold Bołt Wprowadzenie do .NET Witold Bołt
Podstawy programowania. Język C i C++– podstawy Temat: 1
Janusz ROŻEJ GENERATORY APLIKACJI Generatory aplikacji Janusz ROŻEJ
Programowanie strukturalne i obiektowe
Programowanie obiektowe – zastosowanie języka Java SE
5 Etapów Pracy Kompilatora
Inicjalizacja i sprzątanie
JAVA.
Programowanie obiektowe Wykład 3 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21 Dariusz Wardowski.
Programowanie obiektowe Wykład 6 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14 Dariusz Wardowski.
Maszyna wirtualna ang. virtual machine, VM.
Koncepcja procesu Zadanie i proces. Definicja procesu Process – to program w trakcie wykonywania; wykonanie procesu musi przebiegać w sposób sekwencyjny.
Programowanie obiektowe – język C++
Technologie Programowania seminarium
ZWIĄZKI MIĘDZY KLASAMI KLASY ABSTRAKCYJNE OGRANICZENIA INTERFEJSY SZABLONY safa Michał Telus.
Projektowanie stron WWW
Podstawy programowania
Model obiektowy bazy danych
System plików.
Kurs języka C++ – wykład 4 ( )
Procesor, pamięć, przerwania, WE/WY, …
Podstawy języka skryptów
Programowanie w środowisku sieciowym W. Bartkiewicz 1. Wprowadzenie do platformy.NET.
Waldemar Bartyna 1 Programowanie zaawansowane LINQ to XML.
Platforma .Net.
Podstawy programowania
Struktura systemu operacyjnego
Dokumentacja programu komputerowego i etapy tworzenia programów.
PHP jest językiem skryptowym służącym do rozszerzania możliwości stron internetowych. Jego składnia jest bardzo podobna do popularnych języków programowania.
Waldemar Bartyna Pytania egzaminacyjne 1.
Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego Matuszyka Podstawy.
Języki i technologie wytwarzania stron WWW Autor: Michał Walkowski Referat.
T ESTY JEDNOSTKOWE W C# Alicja Majka, A GENDA Wprowadzenie do środowiska Czym są testy jednostkowe i po co je stosować? XUnit, NUnit Pokrycie.
Testy jednostkowe. „Test jednostkowy (unit test) to fragment kodu, który sprawdza inny fragment kodu”
Programowanie strukturalne i obiektowe Klasa I. Podstawowe pojęcia dotyczące programowania 1. Problem 2. Algorytm 3. Komputer 4. Program komputerowy 5.
Programowanie Obiektowe – Wykład 2
Programowanie obiektowe – zastosowanie języka Java SE
Podstawy programowania
Założenia projektowe Javy
Haskell Składnia funkcji.
Język C++ Typy Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego.
Zapis prezentacji:

CLR na platformie .NET Tomasz Kostarski

O czym będzie? Co to jest CLR? Obsługa typów danych (CTS i Pakowanie) Zarządzanie pamięcią (Odzyskiwanie i Finalizatory) Wspólna specyfikacja języka (CLS) Kod zarządzalny (MSIL, Metadane, Podzespoły, Wykonywanie kodu)

Co to jest CLR? Wspólne środowisko uruchomieniowe (Common Language Runtime) Wybór kompilatora dla języka Kompilacja do MSIL Wykonanie kodu zarządzanego

Obsługa typów danych Różne języki, różna składnia Podobne podstawowe pojęcia: Liczba całkowita Napis Zbieranie kodu w metody Grupowanie danych i metod w klasy

CTS - Wspólny zestaw typów danych Common Type System Zestaw typów, niezależny od składni języka Każdy język zgodny z CLR musi używać chociaż części typów z CTS, ale może mieć dowolną składnię W każdym języku można definiować własne typy danych spoza CTS Typy skalarne i referencyjne, wszystkie dziedziczą po Object Wszystkie typy skalarne to typy proste, na stosie pamiętamy ich wartość Typy referencyjne przechowują na stosie wskaźnik do swych wartości umieszczonych gdzieś w pamięci

Najważniejsze typy danych w CTS

Pakowanie (boxing) Konwersja typów skalarnych na typy referencyjne Używane np. przy przekazywaniu wartości skalarnej do metody oczekującej typu referencyjnego Możliwa powtórna konwersja przez rozpakowanie Większość języków z CLR wykonuje to automatycznie Oczywisty wpływ na wydajność

Zarządzanie pamięcią Pamięć dla danych przydzielana na stosie lub stercie – zmienne skalarne lub referencyjne Pamięć ze stosu zwalniana jest automatycznie Pamięć ze sterty po zapełnieniu zwalnia odśmiecacz (garbage collector) GC działa automatycznie, nie zaleca się jawnego uruchamiania go w aplikacji

Odzyskiwanie pamięci Tworzenie aktualnej listy „osiągalnych” obiektów Usuwanie obiektów spoza listy Porządkowanie sterty w spójny blok zajętej pamięci Poprawianie istniejących odwołań Najwięcej śmieci wśród najmłodszych obiektów Najstarsze obiekty przesuwane są ku końcowi sterty Odśmiecanie najmłodszych obiektów, a jeśli nadal brakuje pamięci przeglądanie starszych

Przed: Po:

Finalizatory Każdy obiekt na stercie posiada finalizator (domyślnie pusty) Kiedy GC znajdzie obiekt do usunięcia umieszcza go na liście oczekujących na finalizację Po przeszukaniu całej pamięci, dla każdego obiektu z listy wykonuje się jego finalizator Finalizator to nie destruktor – nie wiadomo kiedy i czy się wykona (aplikacja może zakończyć się wcześniej) Dla ważnych czynności sprzątających lepiej stworzyć odpowiednią metodę

CLS - Wspólna specyfikacja języka Common Language Specification Wywołanie kodu napisanego w jednym języku, z kodu napisanego w innym Wymaga to obsługi w różnych językach typów danych w ten sam sposób Określa jak duży podzbiór CTS musi byś zaimplementowany w języku, by osiągnąć zgodność Niektóre wymagania: obsługa większości typów skalarnych, najniższy indeks w tablicy musi być zerem

Kod zarządzany Kompilatory zamieniają kod źródłowy napisany w dowolnym języku na: Kod wykonywalny zapisany w MSIL Metadane, czyli informacje na temat kodu wykonywalnego i danych przez niego używanych W czasie wykonania aplikacji, CLR tłumaczy kod MSIL na kod natywny procesora Ta konwersja daje możliwość zarządzania wykonaniem aplikacji, stąd nazwa

MSIL - standardowy język pośredni Microsoft Intermediate Language Kod podobny do zestawu instrukcji procesora Polecenia MSIL bazują bezpośrednio na pojęciach zdefiniowanych w CTS Kod źródłowy z języków wyższego poziomu, kompilowany jest do wspólnego kodu pośredniego Dodatkowa warstwa abstrakcji daje nam potencjalną przenośność Możliwość sprawdzenia bezpieczeństwa typów przed uruchomieniem

Metadane Szczegółowy opis typów zdefiniowanych w kodzie zarządzanym, z którym są związane Przechowywane w tym samym pliku co kod MSIL Opisują między innymi: nazwy typów, zasięgi, po kim dziedziczy, interfejsy, metody, obsługiwane zdarzenia Z metadanych korzysta funkcja IntelliSense w Visual Studio .NET W metadanych opisane są też atrybuty

Podzespoły/Złożenia (assembly) Aplikacja składa się z różnych plików, kod/grafika/tekst Grupowanie plików stanowiących jeden logiczny moduł, udostępniający określoną funkcjonalność Manifest – odpowiednik metadanych dla pojedynczego podzespołu, zawiera: nazwę podzespołu (może to być nazwa silna), numer wersji podzespołu (wspólny i taki sam dla wszystkich modułów, które stanowią podzespół), informacje na temat kultury (lub języka) obsługiwanej przez podzespół, listę wszystkich plików, które stanowią podzespół, wraz z ich sumami kontrolnymi, listę innych wymaganych do pracy podzespołów wraz z numerami ich wersji.

Podzespoły c.d. Silna nazwa – unikatowa w całym systemie W CLR nazwa typu danych, to nazwa nadana + nazwa podzespołu w którym został zdefiniowany Większość podzespołów to pojedynczy plik DLL Instalacja podzespołu to po prostu skopiowanie plików nie wymaga dodania wpisów do rejestru

Wykonywanie kodu zarządzanego Przy uruchomieniu aplikacji, potrzebne podzespoły są odnajdywane i ładowane do pamięci Jeśli aplikacja nie wywoła żadnej metody z podzespołu, nie zostanie on w ogóle załadowany Podzespoły są najpierw szukane w GAC (Global Assembly Cache) - globalna pamięć podręczna podzespołów, dopiero później w innych miejscach Po załadowaniu podzespołów potrzebna jest jeszcze ich kompilacja z MSIL na kod natywny

Dwie metody kompilacji JIT (just-in-time compilation) - kompilacją w samą porę Każda metoda kompilowana jest dopiero w czasie pierwszego uruchomienia Kompilacja następuje przy każdym uruchomieniu aplikacji Przy użyciu NGEN (Native Image Generator) Kompiluje kod całego podzespołu do kodu binarnego Kod maszynowy umieszczany jest w pamięci podręcznej obrazów kodu natywnego (Native Image Cache) Pozwala to na szybsze uruchamianie aplikacji

Źródła www.microsoft.com KONIEC