Mono

Mono는 .NET Framework 호환 환경을 크로스 플랫폼으로 구현한 Xamarin(회사)의 핵심 제품이다. 공통 언어 런타임(CLR), C# 컴파일러, 그리고 장대한 .NET 클래스 라이브러리로 이루어져 있다.

 

런타임 'mono' CLI(공통 중간 언어) 메타 데이터 파서, JIT 엔진, 가베지 컬렉션 등 .NET 프로그램 실행에 필요한 기능 대부분을 구현하고 있다. 또한 IronPython, IronRuby 등의 동적 언어도 동작한다.

mono  C 언어로 작성되어 있고 라이브러리로서 애플리케이션이 이용할 수 있는 내장 API도 공개하고 있다.

 

C# 컴파일러 'mcs' 2013년 말 기준으로 async/await 키워드나 caller info C# 5.0 기능을 모두 구현하고 있다. mcs C# 언어로 작성되고 코드는 다른 프로젝트에서도 재 이용되고 있다.

 

클래스 라이브러리는 ECMA 335에서 표준화 되어 있는 부분을 중심으로 주로 Windows 고유가 아닌 부분을 대부분 구현하고 있다. 또한 Windows Forms 등도 구현하고 있어서 Linux X11 환경이나 MacOS X 환경에서도 동작한다.

 

Mono Windows 에서도 동작한다(.NET Framework에 의존 없이 동작한다). 구현 아키텍처는 java에 비슷하다고 할 수 있다. 단 표준적인 환경에서는 .NET Framework와 같이 .exe 파일을 자연스럽게 실행하는 것을 불가능하다.

 

 

 

Gtk#

Mono 프로젝트는 역사적으로 Linux GNOME 데스크탑 상에서 .NET 애플리케이션 개발을 쉽게 하기 위해 시작되어 GNOME GUI 툴킷인 'Gtk+'와 밀접하게 연결되어 있다. Mono를 사용하여 개발된 애플리케이션의 대부분은 Gtk+ .NET 바인딩인 'Gtk#'을 사용하여 개발되고 있다.

 

Gtk# 아키텍처는 .NET에 있어서 Windows Form 아키텍처와 크게 다르지 않다. Mono에서는 네이티브 코드와의 상호 운용을 구현하는 P/Invoke가 지원 되며 Gtk#은 이 P/Invoke를 사용하여 Gtk+ API를 호출하고 있다. Windows Form Windows API P/Invoke 하고 있다.

 

 

 

출처

http://www.buildinsider.net/mobile/insidexamarin/01

 

저작자 표시
신고
by 흥배 2014.02.21 08:00

티스토리 툴바