#はじめに
ネイティブプラグインを作る必要が出てきて色々と調べているうちに
マネージコードとかアンマネージコードとか出てきて、
何それとなったので、関連用語含めてメモ。
#「マネージコード(マネージドコード)」とは
マネージコードとは、.NET Frameworkの共通言語ランタイム環境で実行されるコードのことである。対義語として「アンマネージドコード」がある。
(IT用語辞典バイナリ)
https://www.sophia-it.com/content/%E3%83%9E%E3%83%8D%E3%83%BC%E3%82%B8%E3%82%B3%E3%83%BC%E3%83%89
なるほどわからん。
偏差値が3なので何もわかりませんでした。
というわけで、出てきたワードを読み解いていきます。
##「.NET Framework」とは
ひとことで言うと、ランタイム(実行環境)。
Windowsに入っているランタイム。
以下のサイトで.NET Frameworkについて簡単に説明しています。
https://wa3.i-3-i.info/word13559.html
以下は、ちょっと難しく書いてあります(IT用語辞典バイナリ)。
https://www.sophia-it.com/content/.NET+Framework
.NET Frameworkで利用できるもっとも特徴的な機能として、.NET Framework対応アプリケーションのための実行エンジンであるCLR(共通言語ランタイム)がある。
なるほど?
いや、共通言語ランタイム環境ってなんやねん。
##「共通言語ランタイム環境(CLR)」とは
CLRは、Java仮想マシンと同じように、実行に際して特定のアーキテクチャに依存しない。
(IT用語辞典バイナリ .NET Frameworkの説明より抜粋)
うーん、わかるようなわからないような・・・。
###では、「Java仮想マシン」とは
ひとことで言うと、Javaで作ったプログラムを動かすためのソフトウェア。
Javaで作ったプログラムをどのPCで動かそうとも、Java仮想マシン上で動かすだけだから動く、という仕組みらしいです。
また丸投げになってしまいますが、以下のサイトがわかりやすいです。
https://wa3.i-3-i.info/word12704.html
Java仮想マシン、なるほど。
つまり、共通言語ランタイム環境(CLR)は同じように、仮想マシン上で動くっぽい。
ということは
マネージコードとは、.NET Frameworkの共通言語ランタイム環境で実行されるコードのことである。
=.NET Frameworkの仮想マシン上で実行されるコードである。
わかった。
いや、嘘です。や、なんとなくはわかりましたけれども。つまり・・・だから何・・・?
##ということで、一旦「アンマネージドコード」について調べました
.NET Frameworkの登場以前から使用されているコードはすべてアンマネージドコードとなり、例えばActiveXやWin32 APIなどを用いるコードはアンマネージドコードに該当する。アンマネージドコードはCLRによって管理されないため、CLRのセキュリティ機能やガベージコレクションなどの機能を利用することができない。
(IT用語辞典バイナリ)
https://www.sophia-it.com/content/%E3%82%A2%E3%83%B3%E3%83%9E%E3%83%8D%E3%83%BC%E3%82%B8%E3%83%89%E3%82%B3%E3%83%BC%E3%83%89
.NET Framework登場以前から使用されているコードはすべてアンマネージドコード、それはそうだがよくわからん・・・。
と思っていたら、例えばってのも書いてあった・・・!
以下、なんとなくの解釈
アンマネージドコード:めんどくさい後始末系の処理とかをプログラマが書かなきゃいけないコード
冷静に考えたら「.NET Frameworkさんに管理(manage)されてないコード」だからそうだわ。
#つまり「マネージコード」とは
.NET Frameworkさんがめんどいことやってくれてるからプログラマが楽できるコード。
Microsoftさんのとこにわかりやすいページがありました。
https://docs.microsoft.com/ja-jp/dotnet/standard/managed-code
具体的に言語を挙げると(一番知りたかったのはコレ)
・C#はマネージコード
・CとかC++はアンマネージコード
#最後に
なんか遠回りして理解した気がするけど、関連用語への理解が深まったしいいや。
(間違っている部分ございましたら、ご指摘いただけますと幸いです。)