Diferenças e semelhanças entre maquinas virtuais do Java e do C sharp

Java

C#

JVM

07/10/2019

Ola pessoal, me chamo Leonardo e sou estudante de ciência da computação, este semestre tenho um trabalho onde apresento e comparo as semelhanças e diferenças entre as maquinas virtuais do Java e do C#, gostaria que vocês me ajudassem nessa pesquisa compartilhando oque sabem dobre o assunto aqui, isso me ajudaria muito!

agradeço desde já! :)
Leonardo

Leonardo

Curtidas 1

Respostas

Sadasd

Sadasd

07/10/2019

A principal diferença, na minha opinião é que a jvm é universal, enquanto que o .net não, para windows temos o .net, que é a versão "completa" da máquina virtual c#, e o .net core, uma versão para mac e linux(nota .net core também pode ser baixado no windows, mas não faz sentido fazer isso já que o .net completo está a disposição).

Outra diferença que eu acho gritante são as linguagens que rodam(ou que são compiladas) em cada uma das máquinas virtuais no caso do .net você pode rodar c#, f# e vb(visual basic), já na jvm você pode usar java, groovy, scala e kotlin, um ponto interessante que vale ser ressaltado é que no caso do .net todas as linguagens são da mesma empresa(microsoft) apesar de terem sido desenvolvidas por equipes diferentes da microsoft, enquanto na jvm cada linguagem é desenvolvida por uma empresa diferente, com exceção do java que é desenvolvido por duas empresas desde que a oracle cedeu o java ee(https://www.devmedia.com.br/jakarta-ee-o-futuro-do-java-ee/40322).

Para finalizar, o .net trabalha exclusivamente com o backend, enquanto na jvm você têm a opção de utilizar kotlin ou scala no front-end(nota, apesar de ser possível a utilização dessas linguagens no front end ninguém faz isso, pois são linguagens muito novas, ainda não há todo o ecossistema que o javascript tem em torno delas, então a falta de frameworks, bibliotecas e outros recursos feitos pela comunidade reduz o mercado dessas linguagens no front end a zero, ou seja, na teoria você pode trabalhar com front end na jvm, mas na prática ninguém faz isso).
GOSTEI 0
Sadasd

Sadasd

07/10/2019

A principal diferença, na minha opinião é que a jvm é universal, enquanto que o .net não, para windows temos o .net, que é a versão "completa" da máquina virtual c#, e o .net core, uma versão para mac e linux(nota .net core também pode ser baixado no windows, mas não faz sentido fazer isso já que o .net completo está a disposição).

Outra diferença que eu acho gritante são as linguagens que rodam(ou que são compiladas) em cada uma das máquinas virtuais no caso do .net você pode rodar c#, f# e vb(visual basic), já na jvm você pode usar java, groovy, scala e kotlin, um ponto interessante que vale ser ressaltado é que no caso do .net todas as linguagens são da mesma empresa(microsoft) apesar de terem sido desenvolvidas por equipes diferentes da microsoft, enquanto na jvm cada linguagem é desenvolvida por uma empresa diferente, com exceção do java que é desenvolvido por duas empresas desde que a oracle cedeu o java ee(https://www.devmedia.com.br/jakarta-ee-o-futuro-do-java-ee/40322).

Para finalizar, o .net trabalha exclusivamente com o backend, enquanto na jvm você têm a opção de utilizar kotlin ou scala no front-end(nota, apesar de ser possível a utilização dessas linguagens no front end ninguém faz isso, pois são linguagens muito novas, ainda não há todo o ecossistema que o javascript tem em torno delas, então a falta de frameworks, bibliotecas e outros recursos feitos pela comunidade reduz o mercado dessas linguagens no front end a zero, ou seja, na teoria você pode trabalhar com front end na jvm, mas na prática ninguém faz isso).


Edit:

Esqueci de dizer que só o .net tem suporte ao desenvolvimento de apps mobile, na jvm temos que baixar a sdk do android separadamente, além de que é só para android, e no .net você desenvolve para android e ios.
GOSTEI 0
Wellington Domiciano

Wellington Domiciano

07/10/2019

Olá, Leonardo! Em que semestre vc está?

Não sei se vc já viu, mas aqui estão alguns materiais que acredito que serão bastante úteis na sua pesquisa:

A VM do C#/.Net é o CLR (Common Language Runtime).

- https://en.wikipedia.org/wiki/Common_Language_Runtime
- https://docs.microsoft.com/en-us/dotnet/standard/clr

Tudo a respeito do CLR é especificado neste documento:

http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-335.pdf

Aqui tem mais documentos úteis:

https://visualstudio.microsoft.com/license-terms/ecma-c-common-language-infrastructure-standards/

E aqui nós temos as especificações da linguagem de programa Java e da Java Virtual Machine:

https://docs.oracle.com/javase/specs/index.html

Sobre a diferença entre eles, encontrei uma resposta no StackOverflow que achei bem interessante:

https://stackoverflow.com/a/480362/3334365

E aqui um artigo legal:

https://medium.com/@uadnan/difference-between-jvm-and-clr-e300e1597d2d

Há 4 diferenças que, pra mim, são bem interessantes e gostaria de citar:

1. JVM não tem noção de números sem sinal
2. CLR permite criar os chamados value types, a JVM apenas reference types
3. CLR tem suporte para ponteiros
GOSTEI 0
POSTAR