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

07/10/2019

0

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

Responder

Posts

07/10/2019

Sadasd

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).
Responder

07/10/2019

Sadasd

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.
Responder

07/10/2019

Wellington Domiciano

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
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar