Java pode ser considerado uma linguagem de programação gerenciada?

8

Estou curioso; Java pode ser chamado de linguagem gerenciada? Estou pensando principalmente no modelo da Microsoft quando se trata de código não gerenciado versus código gerenciado (digamos, vc ++ nativo para c #). Com as semelhanças entre C # e Java como linguagens de alto nível, também é correto chamar Java de linguagem gerenciada?

KaiserJohaan
fonte
4
Por favor, defina "idioma gerenciado". É impossível responder a essa pergunta sem uma definição precisa do que é uma "linguagem gerenciada".
Jörg W Mittag

Respostas:

21

Sim. Java é considerado uma linguagem de programação gerenciada, pois é bem protegida pela JVM. Mas o termo "código gerenciado" é específico da Microsoft.

shadowfoxmi
fonte
1
O @ S.Lott Mono também usa essa terminologia em plataformas não Windows. Então, não, não é "Windows-Only".
Konrad Rudolph
4
@ S.Lott Acho que a Microsoft usa "código gerenciado" mais como um termo abrangente, em vez de vinculá-lo a uma implementação específica (IL, CLR). Eu posso estar enganado embora. "Gerenciado" para mim simplesmente implica que a execução do código é "segura" porque depende da verificação de acessos a ponteiros etc. Por essa definição, a execução da JVM também seria gerenciada.
Konrad Rudolph
2
@ Konrad: Eu concordo - "gerenciado" é muito mais um termo de marketing do que técnico. Eu iria um pouco mais longe: programadores e projetos de programação são amplamente considerados quase incontroláveis, e acho que a verdadeira intenção é sugerir que, se você usar o "gerenciado" (código ou qualquer outra coisa) da Microsoft, ambos se tornarão mais gerenciáveis ​​- e, aliás, os gerentes também se tornarão uma parte mais importante dos projetos. Em resumo, a Microsoft está fazendo marketing diretamente para as pessoas que controlam o dinheiro, e não para os programadores, e esperando convencer os gerentes a comprar da Microsoft.
21411 Jerry Coffin
1
Desse ponto de vista, eu diria que sim, o Java é semelhante. Ambos assumem a posição de que os programadores são incompetentes, não confiáveis ​​e precisam ser "controlados". Ambos também definem basicamente "gerenciamento" como sendo realizado pela força - em vez de convencer alguém a fazer as coisas bem, eles assumem que o que está sendo gerenciado fará o máximo de errado possível, portanto o "gerente" deve garantir tudo o que conseguiu definido como "errado". Em suma, ambos pretendem apelar aos instintos mais básicos dos piores gerentes.
21411 Jerry Coffin
7
Nem Java nem .Net assumem incompetência por parte dos desenvolvedores, eles apenas abstraem o gerenciamento de memória. O termo código gerenciado vem do gerenciamento automático de memória, ou seja, coleta de lixo. Não é um termo de marketing (".Net" é o termo de marketing).
30711 Steve
9

Sim. Um idioma gerenciado é um idioma executado em seu próprio contêiner.

Java é uma linguagem gerenciada porque você possui a JVM e, no .NET, o CLR .

O termo "código gerenciado" parece ser algo específico da Microsoft. Consulte o seguinte artigo da wikipedia.

Kevin
fonte
3
Eu não acho que nenhuma definição de "gerenciado" realmente depende da presença de um coletor de lixo.
Konrad Rudolph
2
@ Konrad: Eu atualizei minha resposta.
27411 Kevin
O último parágrafo desta resposta parece contradizer os outros dois. O artigo da Wikipedia é bastante específica sobre "administrado" relativo ao CLR VM, não apenas qualquer VM
Ben Aaronson