Bagikan melalui


Apa itu "kode terkelola"?

Saat bekerja dengan .NET, Anda akan sering menemukan istilah "kode terkelola". Artikel ini menjelaskan apa artinya kode terkelola dan memberikan informasi tambahan tentangnya.

Sederhananya, kode terkelola memang seperti itu: kode yang eksekusinya dikelola oleh waktu proses. Dalam hal ini, runtime yang dimaksud disebut Common Language Runtime atau CLR, terlepas dari implementasinya (misalnya, Mono, .NET Framework, atau .NET Core/.NET 5+). CLR bertugas mengambil kode terkelola, mengkompilasinya ke dalam kode mesin dan kemudian mengeksekusinya. Selain itu, runtime menyediakan beberapa layanan penting seperti manajemen memori otomatis, batas keamanan, dan keamanan jenis.

Berbedakan ini dengan cara Anda akan menjalankan program C/C++, juga disebut "kode tidak terkelola". Di dunia yang tidak terkelola, programmer bertanggung jawab atas semuanya. Program yang sebenarnya adalah pada dasarnya program biner yang dimuat oleh sistem operasi (OS) ke dalam memori dan dijalankan. Segala sesuatu yang lain, mulai dari manajemen memori hingga pertimbangan keamanan adalah beban programmer.

Kode terkelola ditulis dalam salah satu bahasa tingkat tinggi yang dapat dijalankan di atas .NET, seperti C#, Visual Basic, F# dan lainnya. Ketika Anda mengkompilasi kode yang ditulis dalam bahasa tersebut dengan pengkompilasi masing-masing, Anda tidak mendapatkan kode mesin. Anda mendapatkan kode Bahasa Perantara yang kemudian dikompilasi dan dijalankan oleh runtime. C++ adalah satu pengecualian untuk aturan ini, karena juga dapat menghasilkan biner asli yang tidak dikelola yang berjalan di Windows.

Eksekusi & Bahasa Perantara

Apa itu "Bahasa Perantara" (atau IL singkatnya)? Ini adalah produk kompilasi kode yang ditulis dalam bahasa .NET tingkat tinggi. Setelah Anda mengkompilasi kode Anda yang ditulis dalam salah satu bahasa ini, Anda akan mendapatkan biner yang terbuat dari IL. Penting untuk dicatat bahwa IL independen dari bahasa apapun yang beroperasi menggunakan runtime; bahkan ada spesifikasi terpisah untuk itu yang dapat Anda pelajari jika Anda tertarik.

Setelah Anda menghasilkan IL dari kode tingkat tinggi Anda, Anda kemungkinan besar ingin menjalankannya. Di sinilah CLR mengambil alih dan memulai proses kompilasi Just-In-Time, atau JIT-ing kode Anda dari IL ke kode mesin yang benar-benar dapat dijalankan pada CPU. Dengan cara ini, CLR tahu persis apa yang dilakukan kode Anda dan dapat secara efektif mengelola.

Bahasa Perantara terkadang juga disebut Common Intermediate Language (CIL).

Interoperabilitas kode tidak terkelola

Tentu saja, CLR memungkinkan melewati batas antara dunia terkelola dan tidak terkelola, dan ada banyak kode yang melakukan itu, bahkan di pustaka kelas .NET . Ini disebut interoperabilitas , atau interop singkatnya. Ketentuan ini akan memungkinkan Anda untuk, misalnya, membungkus pustaka yang tidak dikelola dan memanggilnya. Namun, penting untuk dicatat bahwa setelah Anda melakukan ini, ketika kode melewati batas runtime, manajemen aktual eksekusi lagi di tangan kode yang tidak dikelola, dan dengan demikian berada di bawah batasan yang sama.

Mirip dengan ini, C# adalah salah satu bahasa yang memungkinkan Anda menggunakan konstruksi yang tidak dikelola seperti pointer langsung dalam kode dengan menggunakan apa yang dikenal sebagai konteks yang tidak aman, yang menunjuk sepotong kode yang eksekusinya tidak dikelola oleh CLR.

Sumber daya lainnya