¿Se puede considerar Java un lenguaje de programación administrado?

8

Tengo curiosidad; ¿Se puede referir a Java como un lenguaje administrado? Estoy pensando principalmente en el modelo de Microsoft cuando se trata de código no administrado versus administrado (por ejemplo, vc ++ nativo a C #). Con las similitudes entre C # y Java como lenguajes de alto nivel, ¿es correcto llamar a Java también un lenguaje administrado?

KaiserJohaan
fuente
44
Defina "lenguaje administrado". Es imposible responder a esta pregunta sin una definición precisa de lo que es un "lenguaje administrado".
Jörg W Mittag

Respuestas:

21

Si. Java se considera un lenguaje de programación administrado, ya que está bien protegido por la JVM. Pero el término "código administrado" es específico de Microsoft.

shadowfoxmi
fuente
1
@ S.Lott Mono también usa esta terminología en plataformas que no son de Windows. Así que no, no "solo para Windows".
Konrad Rudolph
44
@ S.Lott Creo que Microsoft usa el "código administrado" más como un término general en lugar de vincularlo a una implementación específica (IL, CLR). Sin embargo, puedo estar equivocado. "Administrado" para mí simplemente implica que la ejecución del código es "segura" porque se basa en la comprobación de accesos de puntero, etc. Según esa definición, la ejecución de JVM también se administraría.
Konrad Rudolph
2
@Konrad: Estoy de acuerdo: "administrado" es mucho más un término de marketing que técnico. Sin embargo, iría un poco más lejos: los programadores y los proyectos de programación se consideran en gran medida casi inmanejables, y creo que la verdadera intención es implicar que si usas el "código" o "administrado" de Microsoft, ambos serán más manejables. e, incidentalmente, los gerentes también se convertirán en una parte más importante de los proyectos. En resumen, Microsoft está comercializando directamente a las personas que controlan el dinero en lugar de a los programadores, y con la esperanza de convencer a los gerentes de comprar a Microsoft.
Jerry Coffin
1
Desde ese punto de vista, diría que sí, Java es similar. Ambos toman la posición de que los programadores son incompetentes, no confiables y necesitan ser "controlados". Básicamente, ambos definen la "gestión" como la que se lleva a cabo por la fuerza; en lugar de persuadir a alguien para que haga las cosas bien, suponen que lo que se está gestionando hará todo lo mal posible, por lo que el "gerente" debe asegurarse de todo lo que tiene definido como "incorrecto". En resumen, ambos están destinados a apelar a los instintos más bajos de los peores gerentes.
Jerry Coffin
77
Ni Java ni .Net asumen incompetencia por parte de los desarrolladores, simplemente abstraen la administración de memoria. El término código administrado viene de la administración automática de memoria, es decir, recolección de basura. No es un término de marketing (".Net" es el término de marketing).
Steve
9

Si. Un lenguaje administrado es un lenguaje que se ejecuta en su propio contenedor.

Java es un lenguaje administrado porque tienes la JVM y en .NET tienes el CLR .

El término "código administrado" parece ser algo específico de Microsoft, eche un vistazo al siguiente artículo de Wikipedia.

Kevin
fuente
3
No creo que ninguna definición de "administrado" realmente dependa de la presencia de un recolector de basura.
Konrad Rudolph
2
@ Konrad: He actualizado mi respuesta.
Kevin
El último párrafo de esta respuesta parece contradecir a los otros dos. El artículo de Wikipedia es bastante específico sobre "administrado" en relación con la VM CLR, no cualquier máquina virtual
Ben Aaronson