Introdução ao .Net Framework – Parte 2 – CLR, CTS, FCL e CLS

Fala galera, blz?

Este é o segundo post sobre introdução ao .Net Framework. Com essa leitura você será capaz de ter uma ideia, superficial, da estrutura do .Net, falarei sobre Common Language Runtime, Framework Class Library, Common Type System e a Common Language Specification. Continuar lendo

Anúncios

Introdução ao .Net Framework – Parte 1 – Do que é composto, compilação.

Fala galera, blz?

Começa agora a primeira de uma série de publicações sobre o .NET Framework. Com essa leitura você será capaz de ter pelo menos uma ideia de como é composto o Framework .Net e como funciona a compilação das linguagens .Net.

INTRODUÇÃO

O Microsoft .Net Framework ou simplesmente .Net é uma plataforma de desenvolvimento gerenciado que visa a criação e execução de programas e serviços. Seu lançamento foi em 13/02/2002, sua versão atual é a 4.5.  Essa poderosa ferramenta de desenvolvimento foi uma iniciativa da Microsoft para tornar o desenvolvimento de aplicações realmente fáceis.

O .Net basicamente é composto por duas partes:

  1. Common Language Runtime (CLR); e o
  2. Framework Class Library (FCL)

O CLR é o coração do .Net, ele é quem gerencia a execução das aplicações, dedicarei um post para falar somente do CLR posteriormente.

A FCL é a biblioteca de classes do .Net, nela está contida praticamente tudo o que torna nossa programação mais rápida e fácil, são milhares de classes e métodos

Essas duas grandes partes são a base do Framework. Net. Elas fornecem para os desenvolvedores um modelo de programação consistente e simplificado, os programadores não precisam mais entender de registros e ficar alocando, desalocando memória (puts, programar em C era tenso).

COMPILANDO CÓDIGO

Um conceito muito legal do .net é “Executou uma vez, executará sempre”, isso ocorre porque um programa desenvolvido na plataforma .net é compilado duas vezes! Como assim? É simples, cada linguagem desenvolvida para o .Net (atualmente existem mais de trinta) tem o seu próprio compilador, todos esses compiladores fazem a mesma coisa, que é transformar o código fonte que você digitou em uma linguagem intermediaria chamada Microsoft Intermediate Language (MSIL ou IL). Então, entende-se que todos esses compiladores geram código para o CLR. Além de gerar IL, cada compilador precisa também gerar metadados (resumidamente são tabelas com informações usadas pelo CLR para executar um código IL). Os metadados junto com a IL formam um módulo gerenciado, que nada mais é do que um arquivo portable executável (um exe gerenciado). Veja na ilustração da imagem 1 o processo de compilação de uma linguagem .Net e a geração do módulo gerenciado.

teste

Figura 1 – Compilação de código para IL

Observando a figura 1 fica claro entender como o .Net Framework suporta que uma mesma aplicação utilize código fonte de linguagens diferentes, no final tudo será transformado em IL, pois, é a linguagem que o CLR entende, e é a IL que é usada para a segunda compilação.

Todos nós sabemos que o cpu só entende linguagem de máquina, certo? Certo! O CLR possui um compilador de IL chamado JIT (just-in-time). Fica por conta do JIT o trabalho de converter IL para linguagem de máquina. Como a própria referencia do nome diz, o JIT compila o código em tempo de execução, ou seja, a IL só é compilada quando for usada e isso acontece somente uma vez. Lembram do termo  “Executou uma vez, executara sempre”? Então, é aqui que ele se encaixa.

O processo de compilação do JIT tem 6 passos, são eles:

  1. Procurar nos metadados o método que está sendo chamado.
  2. A partir dos metadados, trazer a IL referente a esse método.
  3. Alocar memória.
  4. Compile a IL para código de máquina e salve na memória alocada.
  5. Vá nos metadados novamente e troque a informação que me disse aonde estava a IL referente ao método em questão pela informação do endereço de memória alocado no passo3.
  6. Desvie para o agora código nativo que está salvo na memória.

Simples né? Pra que ficar executando toda vez a mesma coisa sendo que eu posso salvar o que foi feito na primeira vez? Rs

Aqui eu finalizo o primeiro post da serie .Net Framework, já temos uma noção do que é formado o Framework e como funciona a compilação das linguagens .Net. No próximo post eu falarei um pouco mais sobre CLR e FCL, consequentemente os assuntos tratados acarretarão na explicação do Common Type System (CTS) e da Common Language Specification (CLS).

 

Até o próximo post!

 

Refrências

Livro Programação Aplicada com MICROSOFT .NET FRAMEWORK – Jeffrey Ritchter

Guia de introdução do .Net – http://msdn.microsoft.com/pt-br/library/zw4w595w(v=vs.110).aspx