.NET Framework vs JVM
16/08/2015
0
Geane Oliveira
Posts
16/08/2015
Jothaz
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.
16/08/2015
Geane Oliveira
16/08/2015
Jothaz
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.
16/08/2015
Geane Oliveira
16/08/2015
Fernanda Acacia
17/08/2015
Jothaz
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.
17/08/2015
Fernanda Acacia
17/08/2015
Geane Oliveira
Clique aqui para fazer login e interagir na Comunidade :)