La información sobre la estructura del programa es independiente del lenguaje , de modo que se puede hacer referencia a ella entre lenguajes y herramientas, lo que facilita trabajar con código escrito en un lenguaje que el desarrollador no está usando.
La especificación del lenguaje común (CLS)
Las CLS, un subconjunto de las CTS, son reglas que deben cumplir los componentes desarrollados con/para los lenguajes compatibles.
Se aplican a consumidores (desarrolladores que acceden mediante programación a un componente compatible con CLS), marcos (desarrolladores que utilizan un compilador de lenguaje para crear bibliotecas compatibles con CLS) y extensores (desarrolladores que crean una herramienta como un compilador de lenguaje o un analizador de código que crea componentes compatibles con CLS).
El VES carga y ejecuta programas compatibles con CLI, utilizando los metadatos para combinar fragmentos de código generados por separado en tiempo de ejecución.
Todos los lenguajes compatibles se compilan en lenguaje intermedio común (CIL), que es un lenguaje intermedio que se abstrae del hardware de la plataforma. Cuando se ejecuta el código, el VES específico de la plataforma compilará el CIL en el lenguaje de máquina según el hardware y el sistema operativo específicos.
En el estándar CLI desarrollado inicialmente por Microsoft, el VES se implementa mediante Common Language Runtime (CLR).
Un conjunto de bibliotecas que proporcionan muchas funciones comunes, como la lectura y escritura de archivos. Su núcleo es la biblioteca de clases base (BCL).
Normalización y licenciamiento
En agosto de 2000, Microsoft , Hewlett-Packard , Intel y otros trabajaron para estandarizar la CLI. En diciembre de 2001, fue ratificada por la ECMA y, en abril de 2003, se estandarizó según la ISO / IEC .
Microsoft y sus socios poseen patentes para CLI. ECMA e ISO/IEC exigen que todas las patentes esenciales para la implementación estén disponibles bajo " términos razonables y no discriminatorios (RAND) ". Es común que las licencias RAND requieran el pago de regalías, lo que podría ser motivo de preocupación con Mono . A enero de 2013, ni Microsoft ni sus socios han identificado ninguna patente esencial para las implementaciones de CLI sujeta a los términos RAND.
A partir de julio de 2009, [5] Microsoft agregó C# y CLI a la lista de especificaciones a las que se aplica la Promesa de la Comunidad de Microsoft , [6] de modo que cualquiera puede implementar de manera segura ediciones específicas de los estándares sin temor a una demanda de patentes de Microsoft. Para implementar el estándar CLI se requiere conformidad con uno de los perfiles admitidos y definidos del estándar, el mínimo de los cuales es el perfil de kernel. El perfil de kernel es en realidad un conjunto muy pequeño de tipos para admitir en comparación con la biblioteca central bien conocida de las instalaciones .NET predeterminadas. Sin embargo, la cláusula de conformidad de la CLI permite extender el perfil admitido agregando nuevos métodos y tipos a las clases, así como derivando de nuevos espacios de nombres. Pero no permite agregar nuevos miembros a las interfaces. Esto significa que las características de la CLI se pueden usar y extender, siempre que la implementación del perfil conforme no cambie el comportamiento de un programa destinado a ejecutarse en ese perfil, al tiempo que permite un comportamiento no especificado de los programas escritos específicamente para esa implementación.
En 2012, Ecma e ISO/IEC publicaron la nueva edición del estándar CLI. [1] [2]
Implementaciones
.NET Framework es la implementación comercial original de la CLI de Microsoft. Solo es compatible con Windows. Fue reemplazado por .NET en noviembre de 2020.
.NET , anteriormente conocido como .NET Core, es el sucesor multiplataforma gratuito y de código abierto de .NET Framework, publicado bajo la licencia MIT.
.NET Micro Framework es una implementación de código abierto de la CLI para dispositivos con recursos limitados.
Mono es una implementación alternativa de código abierto de CLI y tecnologías que la acompañan, utilizada principalmente para el desarrollo de dispositivos móviles y juegos.
^ ab "ISO/IEC 23271:2012 - Tecnología de la información - Infraestructura de lenguaje común (CLI)". ISO . Archivado desde el original el 2 de julio de 2023.
^ ab "ECMA-335". ECMA International . Junio de 2012. Archivado desde el original el 16 de octubre de 2023.
^ "Introducción al desarrollo avanzado de aplicaciones para la Tienda Windows con HTML5 y JavaScript". Microsoft Press Store . 15 de octubre de 2013. Archivado desde el original el 30 de marzo de 2023.
^ de Icaza, Miguel (15 de septiembre de 2011). «WinRT desmitificado». Archivado desde el original el 30 de noviembre de 2023.
^ Galli, Peter (6 de julio de 2009). "Los estándares de C# y CLI de ECMA". Puerto 25. Archivado desde el original el 9 de julio de 2009. Consultado el 26 de septiembre de 2009 .
^ v-alje (16 de marzo de 2023). «[MS-DEVCENTLP]: Promesa de la comunidad de Microsoft». Microsoft Learn . Consultado el 1 de mayo de 2023 .
Referencias
«Estándar ECMA-335, Infraestructura de lenguaje común (CLI)». Ecma International . Consultado el 1 de noviembre de 2023 .
"ISO/IEC 23271, Infraestructura de lenguaje común". ISO/IEC . Consultado el 27 de septiembre de 2006 .
"Estándares de infraestructura de lenguaje común y C# de Ecma". Microsoft Corporation . Consultado el 13 de octubre de 2009 .
"Independencia del lenguaje y componentes independientes del lenguaje". Microsoft Learn . 21 de diciembre de 2022 . Consultado el 19 de mayo de 2023 .
Enlaces externos
ISO/IEC 23271:2012 Tecnología de la información: Infraestructura de lenguaje común (CLI)