Array
(
)

.NET Framework vs JVM

Geane Oliveira
   - 16 ago 2015

O .NET Framework é como se fosse uma "virtual machine" comparando ele com o JVM (Java Virtual Machine) no verdadeiro sentido da palavra? As duas estão em pé de igualdade para o aprendizado, no sentido amplo?

Jothaz
   - 16 ago 2015

Sinceramente não entendi o que você que quer dizer seu questionamento:

Citação:

As duas estão em pé de igualdade para o aprendizado, no sentido amplo?


Com relação a sua dúvida entre o .Net e JVM, apesar de ser um assunto complicado e extenso, tetarei resumir o que eu entendo a respeito. E provavelmente pode suscitar mais dúvidas que esclarecimentos.

Acho que a resposta seria depende de sua perspectiva!

E principalmente o que é um Maquina Virtual para você?

.NET não é uma linguagem, e sim uma plataforma da Microsoft que permite a utilização de diversas linguagens, como C#, Visual Basic, J# e ASP.

O cenário típico para execução no de uma aplicação .net se parece com isso:

1 - Você escrever um programa em C # .Net, VB.Net, F #, ou alguma outra linguagem compatível.
2 - Esse código é compilado para CLR (Common Language Runtime) e para uma linguagem intermediária (IL), que é semelhante ao bytecode do Java, que é distribuído para máquinas do usuário final.
3 - Um usuário final invoca o programa pela primeira vez em um computador com a versão correta do .NET instalado.
4 - O computador vê esta "versão" é faz uma montagem de Net em vez de "raw" código de máquina, e passa-lo para o compilador JIT (Just in Time).
5 - O compilador JIT compila o IL para código de máquina totalmente nativa.
6 - O código nativo é guardado na memória para a execução do programa.
7 - O código nativo salvo é chamado, e a IL, não importa.

Em nenhum momento qualquer código é interpretado. Em vez disso, você pode ver no passo 5 que ele é compilado para código nativo. Esta é uma enorme diferença de carregá-lo em uma máquina virtual, por várias razões:

1 - O código totalmente compilado é executado pelo CPU diretamente em vez de interpretado ou traduzido por uma camada de abstração de software adicional, que deve ser mais rápido.
2 - O compilador JIT pode tirar proveito de otimizações específicas para a máquina individual ao executar o programa, em vez de se contentar com um menor denominador comum.
3 - Se você quiser, pode até mesmo pré-compilar o código e, em essência esconder a etapa 5 do usuário completamente.

Um ponto a ser considerado é a falta de um processo de VM. Quando você executar seu aplicativo, não há nenhuma "sandbox" comum processo que é executado. Compare isso com Java, onde se você abrir o gerenciador de tarefas quando um programa está sendo executado, você verá um processo especificamente para o Java VM, e processo real do aplicativo é um fio no interior da caixa de areia criada pela VM. Na Net, você vê o processo do aplicativo no gerenciador de tarefas do Windows diretamente.

Agora, o termo Máquina Virtual tem vindo a ser um termo geral que descreve ambientes de execução abstratos como o CLR, a JVM, o Smalltalk VM, etc. O termo "máquina virtual" é realmente um termo muito mais velho do mundo do hardware (IBM virtualizou seu modelo 360 foi o primeiro, na década de 1960), que usado para significar uma emulação da máquina subjacente software / hardware para realizar o mesmo tipo de coisa que a Microsoft faz com VirtualPC .

Finalizando você poderia dizer que a IL, CLR e JIT juntos de alguma forma fazer-se uma máquina virtual.
Mas acho que não faz a muyita diferença e é um discussão que só gera mais discussão e é um questão de perspectiva e abstração de cada um.

Geane Oliveira
   - 16 ago 2015

Boa noite Jothaz, não precisa tanto, me desculpe se errei no "malabarismo" na construção da minha duvida, queria apenas saber a diferença entre as duas, mas você foi muito claro e completo.

Jothaz
   - 16 ago 2015

Não tem que se desculpar em nada, talvez eu é que tenha que me desculpar por não entender! kkk

Infelizmente não tem como ser sucinto em um assunto com complexidade igual a este e como ressaltei talvez a explicação ou tentativa de explicação gerasse mais dúvidas.

Geane Oliveira
   - 16 ago 2015

No meu caso não, a resposta não foi bem fundamentada, entendi bem! Por enquanto as perguntas são essas, talvez virão outras mais complexas, tambem sobre .NET Framework, mas acredito que por hoje é só.

Fernanda Acacia
   - 16 ago 2015

É muita informação para as duas, a JVM e o .NET Framework.

Jothaz
   - 17 ago 2015


Citação:
É muita informação para as duas, a JVM e o .NET Framework.


Particularmente acho importante conhecer os conceitos, apesar de ser muita informação.

E normalmente acho mais proveitoso mostrar o contexto gera e deixar que os postantes exercer sua visão critica e decidir qual o caminho tomar.

Fernanda Acacia
   - 17 ago 2015

Sim, muito importante, saber as caracteristicas de cada linguagem é muito importante. no java os "imports" e no .net os "using".

Geane Oliveira
   - 17 ago 2015

Estou vendo algumas video aulas, mas tenho que ler tambem!