El_Rulas dijo:
Viejo versiones de Visual Basic la 6.0, y anteriores trabajan con una maquina virtual, es un grupo de DLL's con las funciones de VB esas que menciono, pero maquina virtual fue el bautizo a esas DLL's y controles ActiveX con los controles VB ... actualmente funciona similar en .NET, pero se llama Framework ...
Hombe, tienes un error en la terminología. Lo que dices es correcto, pero el grupo de DLLs de VB 6.0 y anteriores no es una máquina virtual sino los RunTime Libraries (RTL) o librerías de tiempo de ejecución. En cambio, el .NET Framework sí es una máquina virtual.
Las RTL son un grupo de DLLs a las que hace referencia el lenguaje VB durante la ejecución de un programa. El VB 4.0 y anteriores eran interpretados y necesitaban de estas RTL para su ejecución. En el caso de estas versiones, se trataba de una única DLL. Para la versión 4.0, eran dos DLL: una para código de 16 bits y otra para código de 32 bits.
A partir de VB 5.0, los programas de VB ya podían compilarse en código nativo de máquina, ya no necesitaban un interpretador en una DLL. Pero a cambio, las RTL se convirtieron en un grupo de archivos que contenían muchas de las funciones intrínsecas del lenguaje (similar a las Class Libraries de C++). Estas librerías deben estar instaladas en el PC para que el programa VB 5 o 6 funciones, pero sólo es necesario instalarlas una vez. Es posible crear un instalador sólo con estos archivos.
El concepto de máquina virtual lo introdujo Java: La JVM es una capa de software intermediario entre la aplicación y el procesador. El código de Java se compila en un lenguaje intermedio, no en código nativo de máquina. Esto brinda la posibilidad de crear aplicaciones multiplataforma: si en un programa Java no se utiliza ninguna función específica de un SO, la aplicación funcionará en cualquier máquina que tenga instalada una JVM, independientemente del SO y el procesador.
Sobre esta idea, Microsoft cambió el paradigma de sus lenguajes de programación, incluido VB, para utilizar una máquina virtual, que es el .NET Framework. Los programas en VB 6.0 están compilados en lenguaje de máquina y acceden a funciones en las RTL, que también están compiladas en lenguaje de máquina. En cambio, los programas en VB.NET están compilados en un lenguaje intermedio (IL), que es compilado a lenguaje de máquina por el compilador en tiempo real (JIT) la primera vez que se ejecuta la aplicación. El JIT no compila la aplicación completa sino las partes que se van ejecutando. Si no hay cambios en la aplicación, el JIT no vuelve a compilar y se ejecuta el código nativo de máquina, con lo que la aplicación .NET se ejecuta más rápidamente la segunda vez que la primera.
Los lenguajes de desarrollo de Microsoft eran independientes, con lo que habían problemas y limitaciones para acceder a clases de C++ desde VB, por ejemplo. Ahora, todos los lenguajes .NET son una capa de software que va montada sobre el Framework, de manera que comparten los mismos tipos de datos, manejo de memoria, etc. Por eso el cambio de VB 6.0 a VB.NET fue tan fuerte, ahora VB comparte el mismo nucleo con C# y Visual C++, lo que le permitió convertirse por fin en un lenguaje completamente OO.
En Windows Server 2003, Windows Mobile 2003 y todos los Windows proyectados de Longhorn en adelante, viene el .NET Framework integrado al OS y se que hay un proyecto de crear una versión del Framework para linuk, pero no se qué tan avanzado vaya.