.Net Framework
CLR이라는 공용언어 런타임을 사용해서 다양한 언어로 작성된 코드로 윈도우 데스크탑 애플리케이션을 구축하기 위해 최적화 됨
.Net core
.Net Framework의 멀티 플랫폼 버전
Mono
Mono는 작은 런타임이 필요할 때 주로 사용되는 .NET 구현
Android, macOS, iOS, tvOS 및 watchOS에서 Xamarin 애플리케이션의 성능을 향상하는 런타임
주로 작은 사용 공간에 초점을 맞춤
또한 Mono에서는 Unity 엔진으로 만든 게임이 동작
일반적으로 Mono는 Just-In-Time 컴파일러에서 사용되지만 iOS 같은 플랫폼에 사용되는 전체 정적 컴파일러(Ahead-Of-Time 컴파일) 기능도 제공
C++ 프로그램:
- 컴파일 및 링크 과정:
- C++ 코드 → 컴파일러(code ->(어셈블리어->) 네이티브 코드 ) → 목적 파일 → 링커 → 실행 파일(EXE)
- 실행 과정:
- 실행 파일(EXE)은 운영 체제에서 로드되어 CPU에서 직접 실행
JAVA 프로그램:
- 컴파일 과정:
- java 코드 → javac 컴파일러 →바이트 코드(.class)
- 실행 과정:
- 바이트 코드(.class) → JVM 로딩 → JIT 컴파일(바이트코드 → 네이티브 코드) → 실행
C# .NET 프로그램:
- 컴파일 과정:
- C#(F#...) 코드 → C#(F#...) 컴파일러 → 어셈블리(CIL)(EXE or dll)
- 실행 과정:
- 어셈블리(EXE or DLL) → CLR 로딩 → JIT 컴파일(CIL → 네이티브 코드) → 실행
특징 | C/C++ | C# / Java | |
---|---|---|---|
*컴파일 결과물 * | 기계어 | 중간언어 (CIL/바이트코드) | -> C#/Java는 플랫폼 간 이식성을 높일 수 있었음 |
*실행 파일 * | 플랫폼 종속적 | 플랫폼 독립적 (런타임 환경 필요) | |
*실행 시점 컴파일 * | 없음 | 있음 (JIT 컴파일러 사용) | -> C#/Java는 초기 실행 속도가 느릴 수 있음. |
*메모리 관리 * | 수동 | 자동 (GC) |
Q1. 그럼 A컴퓨터에서 외부라이브러리 A.dll을 사용해서 작성한 C# 프로그램이 있다고할때 B컴퓨터에서 그 프로그램을 돌릴려면 B컴퓨터의 실행환경에 A.dll이 깔려있어야하나?
A. Yes. 이를 포함하기위한 다양한 배포방법이 존재함.
'Language > C#' 카테고리의 다른 글
[C#] Operator Precedence (0) | 2024.10.14 |
---|---|
[C#] Literal (0) | 2024.10.14 |
[C#] BitOperation (1) | 2024.10.14 |
[C#] Reflection (1) | 2024.10.14 |
[C#] Enum (0) | 2024.10.14 |