Unity&C#/C#

[C#] dotNet

리네엔 2024. 10. 14. 22:44

.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. 이를 포함하기위한 다양한 배포방법이 존재함.

'Unity&C# > C#' 카테고리의 다른 글

[C#] Operator Precedence  (0) 2024.10.14
[C#] Literal  (0) 2024.10.14
[C#] BitOperation  (1) 2024.10.14
[C#] Reflection  (0) 2024.10.14
[C#] Enum  (0) 2024.10.14