Movatterモバイル変換


[0]ホーム

URL:


Przejdź do zawartości
Wikipediawolna encyklopedia
Szukaj

Mono (oprogramowanie)

Z Wikipedii, wolnej encyklopedii
Ten artykuł od 2013-09 zawiera treści, przy którychbrakuje odnośników do źródeł.
Należy dodaćprzypisy do treści niemających odnośników do źródeł. Dodanie listyźródeł bibliograficznych jest problematyczne, ponieważ nie wiadomo, które treści one uźródławiają.
Sprawdź w źródłach:Encyklopedia PWN •Google Books • Google Scholar •BazHum •BazTech •RCIN • Internet Archive (texts /inlibrary)
Dokładniejsze informacje o tym, co należy poprawić, być może znajdują się wdyskusji tego artykułu.
Po wyeliminowaniu niedoskonałości należy usunąć szablon{{Dopracować}} z tego artykułu.
Ten artykuł dotyczy mono jako projekt oprogramowania. Zobacz też:inne znaczenia słowa „mono”.
Mono
Logo Mono
Logo programu
ilustracja
AutorXamarin (wcześniejXimian przejęty później przezNovell) oraz społeczność Mono
Pierwsze wydanie30 czerwca 2004
Aktualnawersja stabilna6.12.0.206
(13 lutego 2024) [±]
Aktualnawersja testowa6.12.0.184
(4 sierpnia 2022) [±]
Platforma sprzętowax86,x86-64,ARM,MIPS,PowerPC,SPARC,IA-64
System operacyjnyWindows,GNU/Linux,OS X,Unix,BSD,Solaris,iOS,Android,Windows Phone
Rodzajśrodowisko uruchomieniowe
LicencjaGPLv2,LGPLv2 iMIT
Strona internetowa

Mono – zestaw narzędzi umożliwiający uruchamianie programów stworzonych dla platformy.NET Framework, w skład których wchodzi między innymikompilator językaC# oraz środowisko CLR (Common Language Runtime).

Celem Mono jest nie tylko umożliwienie uruchamiania aplikacji stworzonych dla platformy Microsoft .NET na różnych platformach, ale również umożliwienie twórcom oprogramowania dla systemuGNU/Linux znacznie szerszego rozwoju[1].

Mono może być uruchamiane na wielu systemach operacyjnych, włączając w toAndroida,Windows Phone, większośćdystrybucji GNU/Linuksa,BSD,OS X,Windows,Solaris. Wspierane są również konsole do gier, takie jak:PlayStation 3,Nintendo Wii iXbox 360.

Logiem Mono jest głowa małpy widziana z profilu. Z języka hiszpańskiegomono oznacza właśnie małpę.

Historia Mono

[edytuj |edytuj kod]

Historia Mono sięga roku 2000, w którym toMicrosoft opublikował .NET Framework, określając go jako „nową platformę bazującą na internetowych standardach”[2]. W grudniu tego roku CLI, czyliCommon Language Infrastructure, została ogłoszona jako otwarty standardECMA-335[3], otwierając tym samym drogę do powstania niezależnych i otwartychimplementacji tego standardu[4].

Miguel de Icaza z firmyXimian zauważył, że w platformie .NET drzemie potencjał, który umożliwi zwiększenie produktywności powstającego kodu i ułatwi pracę programistów. Dodatkowo umożliwi ona tworzenie aplikacji wieloplatformowych bez konieczności korzystania z natywnego języka dla danej platformy. W związku z tym rozpoczęto prace nad przygotowaniem implementacji platformy .NET dla systemu Linux. Wkrótce okazało się, że projekt ten jest zbyt obszerny, aby poradziła sobie z nim niewielka garstka programistów. W związku z tym, 19 lutego 2001 roku, na konferencjiO’Reilly ogłoszono rozpoczęcie prac nad otwartym projektem Mono.

Po trzech latach pracy, 30 stycznia 2004 roku opublikowano Mono 1.0. Z małego projektu, którego początkowym założeniem było stworzenie platformy programistycznej dla desktopowej wersji systemu Linux, stało się ono platformą programistyczną, która umożliwiała uruchamianie aplikacji przystosowanych dla środowiska .NET Framework na szerokiej gamie platform sprzętowych i na wielu systemach operacyjnych, wliczając w tosystemy wbudowane.

Po tym, jak w kwietniu 2011 rokuNovell został wykupiony przezAttachmate i rozpoczęła się fala zwolnień pracowników Novella, istnienie i dalszy rozwój projektu Mono stanął pod znakiem zapytania. 16 maja 2011 roku po tym, jak został zwolniony z firmy Novell, Miguel de Icaza ogłosił na swoim blogu, że prace nad Mono będą kontynuowane przez firmęXamarin, którą właśnie założył. Grupa, która w Novellu pracowała nad projektem Mono, została zatrudniona w Xamarinie. Wtedy też pojawiła się informacja, że Xamarin będzie nie tylko kontynuował prace nad Mono w swojej pierwotnej formie, ale również stworzy od podstaw port komercyjnego środowiska .NET dla systemy iOS i Android, gdyż Novell posiadał prawa doMonoTouch dla iOS iMono for Android dla systemu mobilnego firmyGoogle.

Po tym wpisie na blogu głównego twórcy Mono pojawiło się wiele komentarzy na temat dalszego rozwoju projektu, gdyż MonoTouch i Mono for Android były własnością Attachmate, które przejęło Novella. Nowej inicjatywie zarzucano, że pojawią się trudności z udowodnieniem tego, że nie będzie ona bezpośrednio wykorzystywać technologii, które zostały wcześniej opracowane przez tych samych pracowników, którzy tworzyli je w Novellu.

Jednak w lipcu 2011 roku Novell będący już częścią Attachmate i Xamarin zawarły porozumienie, w którym udzielono wieczystej licencji na Mono, MonoTouch i Mono for Android firmie Xamarin. Dzięki temu Xamarin może oficjalnie wykorzystywać wcześniejsze prace i gospodarować całym projektem.

Aktualny status prac i plany na przyszłość

[edytuj |edytuj kod]

Wersja 3.2.1 (wydana w sierpniu 2013 roku) oferuje podstawowe API .NET Framework, wsparcie dla językówVisual Basic.NET iC# w wersjach 2.0, 3.0 i 4.0, technologięLINQ to Objects,XML iSQL.

W chwili obecnejC# 4.0 jest domyślnie wykorzystywany przez kompilator językaC# dostępny w Mono. Dodatkowo wspierany jestgraficzny interfejs programowania aplikacjiWindows Forms 2.0, ale jego implementacja nie jest jeszcze kompletna. Obecnie głównym celem Mono jest zapewnienie pełnego wsparcia dla wszystkich udogodnień .NET 4.0 takich jak WF (Windows Workflow Foundation) oraz w pewnym stopniu WCF (Windows Communication Foundation). Wyjątkiem jest tutaj WPF (Windows Presentation Foundation), który nie jest wspierany ze względu na ogrom pracy, jaki należałoby włożyć, aby funkcjonował on poprawnie.

Część z funkcjonalności .NET Framework będących w fazie rozwoju jest częścią subprojektu Mono, któremu nadano nazwę Olive. W projekcie Mono znalazło się również miejsce dla kompilatora i środowiska uruchomieniowegoVisual Basic .NET. Pracami nad portem VB.NET zajmuje sięRolf Bjarne Kvinge.

Moonlight

[edytuj |edytuj kod]

W skład projektu Mono wchodzi również otwarta implementacja technologiiSilverlight, która nazwana zostałaMoonlight. Jest ona dostępna od wersji Mono 1.9. Moonlight 1.0, które wspiera API Silverlight 1.0 zostało udostępnione w 20 stycznia 2009 roku. Moonlight 2.0 daje możliwości Silverlight 2.0 oraz część z funkcjonalności Silverlight 3.0. Wersja preview Moonlight 3.0, ogłoszona w lutym 2010 roku, dodała wsparcie Silverlight w wersji 3. Jednak rozwój Moonlight został oficjalnie zakończony 29 maja 2012 roku. Oficjalnym powodem była decyzja Miguela, który stwierdził, iż istnieją dwa czynniki, które powodują, że dalszy rozwój skazany jest na porażkę – sztuczne ograniczenia Microsoft, które powodują, że Silverlight jest bezużyteczny przy tworzeniu aplikacji nakomputery osobiste oraz brak wystarczającej popularności w Internecie, która napędzałaby dalszy rozwój.

Sam rozwój Silverlight został porzucony przez Microsoft w 2012 roku.

Komponenty Mono

[edytuj |edytuj kod]

Mono składa się z trzech grup komponentów:

  1. Głównych komponentów (Core Components)
  2. Stosu deweloperskiego Mono/Linux/GNOME
  3. Stosu zgodności z systemami Microsoft

Główne komponenty

[edytuj |edytuj kod]

Główne komponenty zawierają kompilator C#, wirtualną maszynę dla CLI oraz główne biblioteki klas .NET. Bazują one na standardachEcma-334 iEcma-335, przez co Mono jest wolną i otwartą wirtualną maszyną CLI.

Oba standardy na których bazuje projekt mono, zostały udostępnione przez Microsoft jako OSP (Open Specification Promise), czyli zobowiązanie Microsoft do otwartego rozpowszechniania specyfikacji.

Mono/Linux/GNOME

[edytuj |edytuj kod]

Stos rozwojowy Mono/Linux/GNOME dostarcza narzędzi i aplikacji deweloperskich z wykorzystaniem istniejącego środowiska GNOME oraz wolnych i otwartych bibliotek kodu. W jego skład wchodzą:

Gtk# umożliwia integrację aplikacji tworzonych w Mono z pulpitemGnome jako aplikacji natywnych. Bibliotekibaz danych dostarczają możliwość połączenia z najpopularniejszymi bazami danych, takimi jak:db4o,Firebird,Microsoft SQL Server (MSSQL),MySQL,ODBC,Oracle,PostgreSQL,SQLite oraz z innymi popularnymi silnikami baz danych. O tym, jakie bazy danych są obsługiwana twórcy projektu informują na bieżąco na swojej stronie internetowej.

Zgodność z systemami Microsoft

[edytuj |edytuj kod]

Stos zgodności z produktami firmy Microsoft zapewnia możliwość portowania aplikacji MS.NET Framework do systemuGNU/Linux. Ta część umożliwia wykorzystanieADO.NET,ASP.NET iWindows Forms. Komponenty te nie są ustandaryzowane przezEcma, część z nich możliwa była do udostępnienia dzięki umowom między Novellem a Microsoftem.

Architektura frameworka

[edytuj |edytuj kod]

Główne komponenty Mono zawierają;

  • Silnik wykonania kodu (Code Execution Engine)
  • Biblioteki klas
    • Podstawowe biblioteki klas
    • Biblioteki zapewniające zgodność z platformą.NET
    • Charakterystyczne dla Mono biblioteki klas:
      • Międzyplatformowe biblioteki klas dla Mono i .NET Framework (Gtk#, Mono.Cecil, Mono.CSharp, Text.Templating)
      • Charakterystyczne dla Unixa biblioteki klas (POSIX,FUSE (Filesystem in Userspace))
      • Specyficzne dla danej platformy biblioteki klas (umożliwiające połączenie Mono z Mac, iOS, Android i MeeGo)
    • Kompilatory CLI
    • Metadane CLI
    • MonoCLR (Mono Common Language Runtime)
      • Zgodne ze standardamiECMA CLI/.NET CLR
      • Rozszerzenia typowe dla Mono:
        • Wsparcie dla Mono.SIMD
        • Dodatkowe funkcje, metody, kontynuacje i podproframy
    • Charakterystyczne dla Mono rozszerzenia
    • Natywne usługi do współpracy z istniejącymi już komponentami i obiektami COM
    • Wsparcie dla Microsoftowego Security – Transparent Code Framework (.NET 4.5)

Code Execution Engine

[edytuj |edytuj kod]

Środowisko uruchomieniowe Mono zawiera silnik, który umożliwia tłumaczenie kodu bitowego ECMA CIL do kodu natywnego, który może zostać wykonany na różnych architekturach procesorów:ARM, MIPS (jedynie wersji 32-bit), SPARC, PowerPC, S390 (w trybie 64-bit), x86, x86-64 I IA-64 w trybie 64-bit.

Generator kodu może działać w trzech trybach:

  • JIT (Just-in-time) – środowisko uruchomieniowe może w locie zamieniać kod ECMA CIL do natywnego kodu, który może zostać wykonany na urządzeniu
  • AOT (Ahead-of-Time) – w tym trybie kompilator zamienia kod ECMA CIL na kod natywny, który przechowywany jest w formacie charakterystycznym dla danego systemu operacyjnego, architektury systemu komputerowego i CPU) (np. dla plików *.exe, w systemie Linux zostaną wygenerowane pliki *.exe.so). Ten sposób generowania kodu jest najszerzej stosowany, gdyż większość kodu jest kompilowana przed jego użyciem, a nie tak jak ma to miejsce w przypadku kompilatora JIT, tuż przed użyciem. Oczywiście część kodu nadal potrzebuje kompilatora JIT (np. obsługa trampolin czy kodu zarządzającego), także powstałe pliki nie są do końca samowystarczalne.
  • Pełna kompilacja statyczna – w tym przypadku kod kompilowany jest całkowicie. Wykorzystane są wszystkie elementy z kompilacji AOT oraz dodatkowo wszelkie trampoliny, funkcje obudowujące (wrappery) i dane Proxy, które zostały wykorzystane są wkompilowane do ostatecznego pliku, który może zostać podłączony do programu i kompletnie wyeliminować użycie kompilatora JIT. Możliwość takiej kompilacji istnieje tylko na niektórych z platform, wykorzystana jest w szczególności na systemie iOS i na konsolach PlayStattion 3 i Xbox 360.

Począwszy od wersji Mono 2.6, istnieje możliwość takiej konfiguracji środowiska, aby używaćLLVM (ang. Low Level Virtual Machinemaszyna wirtualna niskiego poziomu) jako głównego silnika generowania kodu, zamiast silnika Mono. Ta funkcjonalność jest bardzo przydatna w przypadku programów wykorzystujących duże zasoby komputera oraz w przypadku, gdy szybkość i wydajność wykonania kodu jest ważniejsza niż wydajność uruchomienia aplikacji.

Od Mono w wersji 2.7 Preview nie ma już potrzeby wyboru silnika generującego kod w trakcie konfiguracji, gdyż może on zostać wybrany jako parametr startowy środowiska (jako jedna z dwóch opcji startowych: –llvm lub –nollvm). Dzięki temu w szybki sposób można wybrać potrzebny w danej chwili generator kodu.

Garbage Collector

[edytuj |edytuj kod]

Od Mono 2.8 dostarczane były 2 wersjegarbage collectora: wielopoziomowy garbage collector (generational collector) oraz konserwatywnygarbage collector Bohema (Bohem conservative collector).

Przed wersją Mono 3.1.1 domyślny garbage collector (Bohem-Demers-Weiser GC) zawierał kilka poważnych ograniczeń w stosunku do komercyjnych silników GC zaimplementowanych w środowiskach takich jak maszyna wirtualna Javy czy .NET Framework.

Użycie garbage collectora w długo działających aplikacjach serwerowych może powodować poważne błędy, ze względu na fakt, iż silniki GC mogą wywoływać chwilowe wycieki pamięci w niektórych typach aplikacji.

W październiku 2010 roku zaprezentowano garbage collector nowej generacji – Sgen-GC (Simple Generational Garbage Collector). Stał się on integralną częścią Mono 3.1.1 i jest on tam domyślnym silnikiem GC. W wersjach Mono 2.8 – 3.1.0 może on zostać wybrany przez użytkownika jako silnik garbage collectora poprzez argument, z którym zostanie uruchomione środowisko (–gc=sgen). Nowy garbage collector ma wiele udogodnień w stosunku do swoich poprzedników, w szczególności do najbardziej rozpowszechnionego sinika CG Bohema. Wykorzystuje on mechanizm generational garbage collection.

Biblioteki klas

[edytuj |edytuj kod]

Biblioteki klas dostarczają kompleksowy zestaw narzędzi do tworzenia aplikacji. Są one w większości napisane w języku C#, ale zgodnie ze specyfikacją CLS (Common Language Specification) mogą one zostać użyte w którymkolwiek języku dostępnym na platformę .NET. Biblioteki klas zebrane są wprzestrzenie nazw i opublikowane w postaci współdzielonych bibliotek zebrane w większe zestawy.Odwoływanie się do jakichkolwiek klas .NET Framework powoduje właśnie wywołanie wspomnianych bibliotek.

Przestrzenie nazw i klasy

[edytuj |edytuj kod]

Przestrzenie nazw (ang.namespaces) są mechanizmem logicznego zebrania podobnych do siebie klas w hierarchiczną strukturę. Dzięki temu o wiele łatwiej uniknąć jest konfliktów w nazewnictwie. Przestrzenie nazw zaimplementowane są z wykorzystaniem notacji słów oddzielonych kropkami, dzięki czemu zawsze wiadomo, z której przestrzeni nazw w danej chwili się korzysta. Dodatkowo w większości przypadków nadrzędną przestrzenią nazw jest przestrzeń System, więc podrzędne przestrzenie otwierane są jako System.IO (dla operacji wejścia/wyjścia) czy System.Net (dla elementów składowych .NET Framework). Oczywiście istnieje o wiele więcej nadrzędnych przestrzeni nazw, jak na przykład Accessibility czy Windows.

Środowisko MonoDevelop

[edytuj |edytuj kod]

MonoDevelop jest darmowym,zintegrowanym środowiskiem programistycznym dla środowiska graficznegoGNOME, które zostało zaprojektowane do współpracy z językiemC# i innymi językami .NET, takimi jakNemerle,Boo iJava (poprzezIKVM.NET). Dodatkowo wspiera ono takie języki jakC,C++,Python, Java czyVala.

Początkowo MonoDevelop było portem środowiskaSharpDevelop doGtk#, ale później wyewoluowało w narzędzie, które miało sprostać potrzebom bardzo szybko rozrastającej się społeczności użytkowników. Obecnie IDE zawiera system zarządzania klasami, wbudowaną pomoc, uzupełnianie kodu, programStetic umożliwiający tworzenie interfejsu użytkownika, wsparcie dla projektów i zintegrowany debugger.

PrzeglądarkaMonoDoc daje dostęp do dokumentacji API i do przykładowego kodu. Dokumentacja wykorzystuje stylwiki, umożliwiając dostęp do edycji i poprawek dla każdego użytkownika.

MonoTouch i Mono for Android

[edytuj |edytuj kod]

MonoTouch iMono for Android są implementacjami Mono dla smartfonów opartych na systemachiOS iAndroid. Są one wydane jedynie na licencji komercyjnej, za którą należy zapłacić.

Xamarin.iOS (MonoTouch)

[edytuj |edytuj kod]

Xamarin.iOS (wcześniej nazywane MonoTouch) jest biblioteką, która umożliwia programistom tworzenie aplikacji w językuC# opartych na platformie .NET, które można uruchomić na urządzeniach firmyApple, takich jak:iPhone,iPod czyiPad. Bazuje ona na frameworku Mono i powstaje przy współpracy firmyXamarin z firmąNovell.

Niestety poprzez architekturę systemu na urządzeniach wyprodukowanych przez firmę Apple, aplikacje nie mogą wykorzystywać kompilatoraJIT. Wynika to z faktu, że jądro systemuiOS nie umożliwia uruchomienia maszyny wirtualnej. Aplikacje tworzone z użyciem bibliotek zawartych wXamarin.iOS są kompilowane do kodu maszynowego, który może zostać zinterpretowany przeziPada,iPhone’a czyiPoda.

W składXamarin.iOS wchodzą:

  • Kompilatory:
    • KompilatorC# (ten sam, który wchodzi w skład Mono)
    • Kompilatory firm trzecich, takie jakRemObject's Oxygene, który może być nakierowany na kompilacjęXamarin.iOS
  • Biblioteki .NET
  • DeweloperskieSDK:
    • Linker – wykorzystany do powiązania kodu wykorzystanego w ostatecznej wersji aplikacji
    • Mtouch – natywny kompilator i narzędzie, które umożliwia opublikowanie aplikacji na urządzeniu końcowym
    • Interface Builder – narzędzie do budowy interfejsu graficznego
  • Biblioteki, które umożliwiają wykorzystanie natywnegoCocoaTouch API
  • Xamarin Studio IDE – IDE do pracy z kodem

Xamarin Studio używane jest jako domyślne IDE, ale korzystając z systemuMac OS X można użyć programuXcode i wbudowanego w niego symulatora systemuiOS.

Od kwietnia do września 2010 roku, dalsze losyMonoTouch stanęły pod znakiem zapytania. Powodem tego były zapowiedziane przez Apple nowe warunki dla twórców aplikacji, które jednoznacznie zabraniały korzystania z innych języków niżC,C++ czyObjective-C na tej platformie oraz zakazywały stosowania dodatkowej warstwy wirtualizacji pomiędzy platformą iOS a aplikacjami. Te same restrykcje miały objąć również inne technologie, jak na przykładUNITY. Jednak we wrześniu 2010 roku Apple zniosło te restrykcje i umożliwiło dalszy rozwój projektu.

Xamarin.Android (Mono for Android)

[edytuj |edytuj kod]

Xamarin.Android (pierwotnie znano jakoMono for Android) zostało stworzone przez firmęNovell, a następnie rozwinięte przez firmęXamarin jako implementacja Mono dla smartfonów bazujących na systemieAndroid.

Pierwsze wydanie pojawiło się 6 kwietnia 2011 roku. Mono for Android zostało stworzone, aby umożliwić twórcom oprogramowania w znacznie łatwiejszy sposób pisanie multiplatformowych aplikacji, które mogą zostać uruchomione na urządzeniach mobilnych.

W wywiadzie udzielonym dlaH-Online, Miguel de Icaza powiedział:

Our vision is to allow developers to reuse their engine and business logic code across all mobile platforms and swapping out the user interface code for a platform-specific API.

Miguel de Icaza

Słowa te utorowały drogę do rozwoju implementacji platform .NET dla system Android.

W sierpniu 2010 roku rzecznik firmy Microsoft,Tom Hanrahan pracujący wMicrosoft Open Source Technology Centre odniósł się do pozwu sądowego wniesionego przeciwko Google, które używało w AndroidzieJavy rozwijanej przezOracle:

The type of action Oracle is taking against Google over Java is not going to happen. If a .NET port to Android was through Mono it would fall under the Microsoft Community PromiseAgreement.

Tom Hanrahan

Przyczyniło się to do szybkiego rozwoju implementacji .NET dla Androida.

W składXamarin.Android wchodzą:

  • Środowisko uruchomieniowe Mono
  • Edytor interfejsu graficznego dla systemu Android
  • Biblioteki:
    • Bazowe biblioteki klas .NET
    • Biblioteki, które umożliwiają połączenie z natywnym Android/Java API
  • NarzędziaSDK do tworzenia wynikowych projektów, publikacji na urządzeniach i debugowania aplikacji
  • Oprogramowanie integrująceXamarinStudio iVisual Studio 2010, dzięki czemu z poziomu VS 2010 można zarówno publikować, jak i debugować aplikacje.

Systemy operacyjne

[edytuj |edytuj kod]

Mono współpracuje zsystemami operacyjnymiGNU/Linux,UNIX,Mac OS X,Solaris,FreeBSD,OpenBSD,NetBSD,Wii,PlayStation 3,iOS,Android iMicrosoft Windows.

Języki programowania

[edytuj |edytuj kod]

Możliwe jest uruchamianie aplikacji przeznaczonych dla .NET. Z platformą Mono mogą być używane m.in.kompilatory następującychjęzyków programowania:C#,Java,Boo,Nemerle,Visual Basic.NET,Python,JavaScript,Oberon,PHP,Object Pascal,Lua orazCobra.

Zobacz też

[edytuj |edytuj kod]

Przypisy

[edytuj |edytuj kod]
  1. Caton, Michael: Mono Project aims to bring.Net apps to Linux. ZDNet. [dostęp 2015-04-28]. (ang.).
  2. Bonisteel, Steven: Microsoft sees nothing but .NET ahead. ZDNet.
  3. Standard ECMA-335 Common Language Infrastructure (CLI) Partitions I to IV. [dostęp 2015-04-28]. (ang.).
  4. Wilcox, Joe; Shankland, Stephen: Microsoft edges into sharing code.

Linki zewnętrzne

[edytuj |edytuj kod]
Źródło: „https://pl.wikipedia.org/w/index.php?title=Mono_(oprogramowanie)&oldid=78212264
Kategorie:
Ukryta kategoria:

[8]ページ先頭

©2009-2026 Movatter.jp