Skaper | Miguel de Icaza |
---|---|
Utviklet av | Xamarin , Ximian og Novell |
Første versjon | 30. juni 2004 |
Siste versjon | 6.12.0 (30. juli 2020) |
Innskudd | github.com/mono/mono |
Skrevet i | C , C # og Extensible Markup Language |
Operativsystem | Linux , Microsoft Windows og macOS |
Type |
Framework IT-plattform |
Tillatelse | GNU General Public License Versjon 2 , GNU Lesser General Public License og X11 License ( d ) |
Nettsted | www.mono-project.com |
Mono er en åpen kildekode- implementering (lisensiert under GNU GPL , GNU LGPL, eller X11 avhengig av elementet) av Microsoft .NET CLI- basert utviklingsplattform .
Mono ble initiert av Miguel de Icaza i sitt Ximian- selskap som ble kjøpt opp av Novell i 2003 . Etter oppkjøpet av Novell av Attachmate i 2011 ble Mono overtatt av et selskap opprettet for anledningen: Xamarin .
Mono er en komplett utviklingsplattform basert på implementering av .NET -kodekjøringsmiljøet og kjerne- API-er definert i ECMA (også ISO- standarder ). Mono støtter for øyeblikket versjon 4.0 av Microsofts .NET-rammeverk.
Mono tilbyr blant annet:
Ofte sammenlignet med Java- plattformen , deler denne plattformen mange tekniske aspekter, for eksempel bruk av et mellomspråk (IL for Intermediate Language , tilsvarende Java bytecode ), støtte for webapplikasjon , bærbarhet og et utvidet API. Leveres som standard.
Mono skiller seg ut fra Oracles løsning, men :
Plattformen er designet for kompilerte og objektorienterte språk. Implementeringen av IronPython har imidlertid vist at det er mulig å oppnå lignende ytelse med et historisk tolket språk. Plattformen kan også ha grensesnitt med andre språk som er samlet på en tradisjonell måte, for eksempel C-språket.
Mono består av fire grupper av komponenter:
De hovedkomponenter omfatter den C # kompilatoren, den virtuelle maskin, og de basisklassebibliotek. Disse komponentene er bygget i henhold til Ecma-334 og Ecma-335 standardene, slik at Mono kan tilby en standard-kompatibel, gratis og åpen kommandolinjemaskin.
Den Mono / Linux / GNOME kompatibilitet Layer tilbyr verktøy for programutvikling ved å supplere eksisterende GNOME og andre gratis bibliotekene . Dette laget inkluderer: Gtk # for grafisk utvikling av brukergrensesnitt , biblioteker for samhandling med Mozillas Gecko-gjengivelsesmotor , Unix-integrasjonsbiblioteker, databaseforbindelsesbiblioteker, et sikkerhetslag og RelaxNG XML-språkskjemaet . Gtk # lar mono-applikasjoner integreres naturlig i skrivebordsmiljøet GNOME. Databaseforbindelsesbiblioteker tillater interaksjon med MySQL , SQLite , PostgreSQL , Firebird , Open Database Connectivity (ODBC), Microsoft SQL Server (MSSQL), Oracle , db4o og mange andre. Mono-prosjektet sporer utviklingen av databasekoblingskomponenter på nettstedet.
Den Microsoft Compatibility Layer gir en enkel måte å port Windows .NET applikasjoner til GNU / Linux. Denne gruppen av komponenter inkluderer blant annet ADO.NET , ASP.NET og Windows.Forms . Siden disse komponentene ikke dekkes av ECMA-standardene, er de fortsatt underlagt bekymring fra patenter og lisenser som Microsoft eier.
De verktøyene bringe sammen de nødvendige verktøy for utvikling av .NET applikasjoner på andre enn Windows-plattformer. Dette inkluderer MonoDevelop IDE samt dets komponenter, for eksempel feilsøkingsprogrammet .
Diagrammet nedenfor oppsummerer situasjonen for prosjekt med hensyn til Framework så vel som separasjonene mellom de forskjellige komponentene og deres tilgjengelighet på hoved operativsystemer :
Mono distribueres under en dobbel lisens fra Novell , som andre produkter som Mozilla-pakken . Monos C # -kompilator og verktøy distribueres under GNU GPL- lisensen (kun v2; fra og med Mono versjon 2.0 vil kildekoden for C # -kompilatoren også være tilgjengelig under MIT X11-lisensen ). Runtime-biblioteker frigjøres under GNU LGPL- lisens (kun v2) og klassebiblioteker frigjøres under MIT-lisensen . Alle disse lisensene er gratis og åpen kildekode, noe som gjør Mono-prosjektet til et gratis og åpen kildekode-prosjekt.
Overføringen til Mono av .NET- komponenter som ikke ble sendt til ECMA for standardisering var fra begynnelsen en kilde til bekymring for programkrenkelser. Spesielt har det vært diskusjoner om en mulighet for at Microsoft kan ødelegge Project Mono gjennom søksmål om patentbrudd.
Teknologiene som ligger til grunn for Mono, sendt til ECMA, er ikke problematiske. Dette inkluderer også kompatibilitetslaget Mono / Linux / GNOME, som ikke bruker teknologier som kan være dekket av patenter fra Microsoft. Så C # , biblioteker og andre programvarelag i GNU Project blir ikke berørt av disse bekymringene.
Imidlertid er det annerledes for Microsofts kompatibilitetslag, som gjelder teknologiene som utgjør .NET- rammeverket . Disse inkluderer blant annet ASP.NET, ADO.NET, kommunikasjonslaget til .NET 3.0 framework (Windows Communication Foundation) og Windows.Forms. Disse teknologiene er ennå ikke fullt ut implementert i Mono; Richard Stallman sa at det kan være "farlig" å bruke Mono på grunn av muligheten for Microsofts patentbrudd. Imidlertid er bruk av potensielt problematiske komponenter ikke nødvendig for å programmere Mono-applikasjoner.
Microsoft og Novell kunngjorde 2. november 2006signering av en avtale der Microsoft godtar å ikke saksøke Novell eller deres kunder for brudd på programvarepatenter. I følge Miguel de Icaza, Monos utviklingssjef, påvirkes Mono-prosjektet av denne avtalen, men bare for Novell-utviklere og deres kunder. Dette har blitt kritisert av mange i bevegelsen av fri programvare, da det bryter med prinsippene om like rettigheter mellom alle brukere av et bestemt program definert for fri programvare.