SóProvas


ID
234349
Banca
NC-UFPR
Órgão
UFPR
Ano
2010
Provas
Disciplina
Programação
Assuntos

Sobre Plataforma .NET, considere as afirmativas abaixo:

1. O código gerenciado gerado é interpretado para executar na linguagem nativa da máquina do sistema.

2. A compilação just-in-time (JIT) compila os códigos não gerenciados.

3. É executada sobre uma Common Language Runtime (CLR).

4. O CTS (Common Type System) assegura que todo código gerenciado é autodescritivo.

Assinale a alternativa correta.

Alternativas
Comentários
  • O .NET Framework consiste em dois componentes mestres: A Common Language Runtime e a .NET Framework Class Library.

    Common Language Runtime (CLR) – gerencia a execução do código, fornecendo os principais serviços como gerenciamento de memória, gerenciamento de segmento, arquitetura de comunicação remota etc. Dessa forma, promove segurança e robustez para a aplicação. O código que visa ao Runtime é conhecido como código gerenciado, enquanto o código que não visa ao Runtime é conhecido como código não gerenciado. Biblioteca de classes do .NET Framework – fornece uma coleção de tipos úteis e reutilizáveis que foram desenvolvidos para interagir com a Common Language Runtime.

    Quando uma aplicação .NET é compilada, ela não é compilada para o código nativo da máquina e sim para Microsoft Intermediate Language (MSIL), MSIL é uma linguagem de baixo-nível que a CLR (Common Language Runtime) pode ler e entender. Todos os códigos são convertidos para MSIL. Por isso as aplicações escritas em diferentes linguagens interagem facilmente:
    O CLR implementa uma infraestrutura Type-and-Code-Verification chamada Common Type System (CTS). O CTS assegura que todo código gerenciado é autodescritivo. Os diversos compiladores de linguagem da Microsoft e de terceiros geram códigos gerenciados que estão em conformidade com a CTS.


     

    No momento da execução, o código necessário para a execução ocorrer é carregado na memória e compilado para o código nativo da máquina pelo JIT (Just-in-time compiler). Apenas as partes executadas são compiladas. Dessa forma, o desempenho da aplicação é maximizado.

    Fontes: http://msdn.microsoft.com/pt-br/library/zw4w595w.aspx e http://www.juliobattisti.com.br/tutoriais/almirrivas/vbdotnet001.asp
  • 1 - Quando se compila uma aplicação .NET ela é convertida para uma linguagem intermediária, MSIL ou IL. Na hora de executar o programa um novo compilador, chamado JIT, o converte para linguagem de máquina. Portanto a compilação é feita duas vezes e de maneira alguma é interpretado, diferentemente das aplicações JAVA que são hibrídas (compiladas e interpretadas).

    2 - Todo código que visa a plataforma .NET é chamado de código gerenciado. Se o código não for suportado pelo .NET, chamado de código não gerenciado, ele  não será nem mesmo compilado para uma linguagem intermediária e assim não será executado pela JIT.
  • Bruno,

    Confesso que achei estranho quando mencionou que C# é compilada (e não interpretada).

    Fazendo algumas buscas cheguei a este artigo:
    http://www.mas.com.br/Artigos/Java_e_CSharp_part2.htm

    Bons estudos.
  • A CLR está inserida na plataforma .Net, e não, o contrário - Número 3 errada!