brunch

You can make anything
by writing

C.S.Lewis

by 김은지 Mar 14. 2017

끄적끄적.. 특강 들은 내용 정리

런타임이 뭐지? 먹는건가? 우걱우걱

C#으로 작성되는 코드와 JavaScript로 작성된 코드가 실제 기계에서 동작되는 방식

1. C# 

C#은 컴파일 과정을 거쳐서 MSIL이라는 중간언어로 바뀌고 이를 기계어(바이너리, 0101)로 해석하여 기계가 실행한다. 근데 메모리에 로드 될때는 기계어로 로드되는게 아니다. 중간언어인 MSIL로 로드가 되고 이를 프로그램이 실행되는 중인 런타임에 기계어로 번역해서 실행한다.

그리하여 JIT(Just In Time) 컴파일 방식으로 불린다. 


2. JavaScript - Old Version

원래는 JavaScript(줄여서 JS라고 부르면..!!)는 메모리에 JS가 로드되면 JavaScript Engine이 그 모든 것들을 바로 다 한다.

-> 근데 문제가 있었다. 좀 느렸다... ;;


3. JavaScript - New Way

JavaScript도 마치 C#처럼 비슷한 과정을 거치게 개선이 되었다.

JS가 메모리에 로드가 되면, 이를 JavaScript 엔진이 런타임에 컴파일을 하여 수행이 되도록 바뀌었다.

이러면서 속도 및 성능이 많이 개선이 되었다고 한다. 

유명한 JavaScript Engine 으로는 V8(구글꺼) 이나 Chakra(마소꺼) 가 있다.


4. C++ / C

C++과 C 언어의 경우 컴파일이 되면 메모리에 바로 기계어로 로드가 되어서 굉장히 속도가 빠르다. 

하지만 컴파일 시점에 이미 ARM 기반인지 x86 기반인지 알아야 하기 때문에 불편한 점이 있다. 


5. Mono

마이크로소프트 응용 프로그램들.. 예를들면 C# 이나 VB로 작성된 코드들을 수행하기 위해서는 .NET Framework가 필요하다.

근데 사실 이거는 마이크로 소프트가 만들면서 규격화를 해 놓았다.(ECMA 334, ECMA 335) 

이를 CLI(Common Language Infrastructure)라고 부른다.

이 내용에는 가비지 컬렉션에 관한 이야기, 메모리 관리 등에 관한 이야기 등등이 들어있다.


CLI를 구현한 것이 CLR - 닷넷의 런타임이다.

CLR은 윈도우 운영체제에서 동작하니까, 다른 운영체제(리눅스 라던지..) 에서 닷넷 프로그램을 사용하고 싶었던 사람들이 알음알음 모여서 만든것이, Mono 프레임워크이다.

이게 Xamarin 프로젝트의 조상님격인 프로젝트이다.


그래서 Xamarin이 모바일 크로스플랫폼 기술이 될 수 있었던 것이다.

왜냐면 C#이라는 언어가 윈도우 운영체제 뿐만 아니라, 리눅스 운영체제에서도 Mono 프레임워크때문에 동작이 가능해졌으니...


작가의 이전글 C# 제네릭, 언뜻보기에 복잡하지만 정말최강인...
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari