Java para .NET en Linux y Windows
Hay una gran cantidad de programadores de Java que están cada vez más interesados en la plataforma .NET.
Sin embargo, muchos de ellos son reticentes al cambio, otros sin embargo están más abiertos al cambio sabedores entre otras cosas, que C# es casi igual a Java en cuanto a nomenclatura, por lo que la curva de adaptación es más pequeña de lo que sería el cambio a VB u otros lenguajes de desarrollo.
Sin embargo, no muchos han oído hablar de IKVM.NET, o lo que es lo mismo, la implementación de Java en Mono y .NET Framework.
IKVM es un proyecto de código abierto que tiene como objetivos principales la implementación en .NET de la máquina virtual de Java, la implementación en .NET de las clases de Java, y un conjunto de herramientas que permitan la interoperabilidad entre Java y .NET.
Esto puede llegar a ser realmente útil en el caso de querer por ejemplo convertir jars a .NET o de querer ejecutar dinámicamente clases java. Todo con la cautela que esto implica.
Pero lo llamativo realmente para los programadores de Java que quieren pasar a .NET y no se atreven a dar el salto definitivo, es que estas librerías les facilitarán definitivamente ese salto.
Si quieres saber más acerca de IKVM, haz clic en este enlace.
Si quieres descargar la última versión de IKVM, haz clic en este otro enlace.
Si quieres estar informado a la última del avance de IKVM, haz clic en el enlace del blog de IKVM.
4 Responsesso far
MMMmmm…
Yo cuando veo proyectos de este tipo siempre digo lo mismo: son interesantes para la interoperabilidad, pero ni mucho menos para dar el salto, en este caso de Java a .NET.
Conocer una _plataforma_ no es lo mismo que conocer un lenguaje: alguien puede ser muy bueno en C#, conocer a fondo la sintaxis pero no conocer apenas nada de la BCL ni del resto del framework. Dirías que esta persona conoce .NET? No, verdad? En todo caso: conoce C#.
Si vienes de Java y quieres desarrollar en .NET, usar IKVM no ayudará que aprendas .NET. Programar contra la API de Java, aunque uses C# es… bueno, es algo un poco raro, pero no es programar en .NET.
Así que, en mi opinión, si alguien de Java quiere aprender .NET, debe obviar completamente herramientas de este tipo.
Otra cosa distinta es si hablamos de migraciones, interoperabilidad, etc, etc… 🙂
Un saludo!
Hola Eduard, gracias por comentar.
No he dicho en ningún momento que conocer una plataforma sea lo mismo que conocer un lenguaje, y mucho menos que usar IKVM sea aprender .NET, sino que los programadores de Java que son reticentes al cambio, encontrarán en IKVM un aliado ya que la nomenclatura de sus clases les quitará esos prejuicios, y por lo tanto se adaptarán de una forma menos dramática.
No hablo de conocer .NET como plataforma, hablo de iniciar la toma de contacto con .NET que es algo muy diferente.
A partir de aquí, lo que hace IKVM es pasar a .NET la misma nomenclatura y traducir las clases de Java a .NET. Es una idea más.
Incluso desde el punto de la migración, podría servir bastante.
En VB para .NET por ejemplo, se utilizan wrappers dentro del lenguaje y librerías de compatibilidad con .NET. Es decir, lo que en C# se puede hacer llamando a una librería concreta de .NET se puede hacer en VB para .NET llamando a dos, una la misma que llama C# y otra la que el equipo de VB ha creado como wrapper de la primera.
¿EStá mal?. No. Es simplemente otra forma de acercar el mundo de .NET a los programadores de VB.
Exactamente ocurre o al menos así lo veo yo con IKVM.
Un saludo,
Jorge
@Jorge
No quería dar a entender que tu hubieses dicho que conocer una plataforma sea lo mismo que conocer un lenguaje 🙂
Solo quería matizarlo porque en mi opinión IKVM no ayuda a «aprender .NET».
Si que ayuda en casos concretos, migraciones e interoperabilidad.
Lo que dices de VB.NET, es a otro nivel, pero viene a ser lo mismo. Creo que es más fácil desarrollar en VB.NET para alguien que viene de C#, que al revés. Y no porque quien sea de C# «sea mejor» ni mucho menos: C# oculta menos del framework que VB.NET, y quien pase de VB.NET a C# quizá encuentre a faltar cosas como Left().
Lo que yo quería matizar, simplemente, es que si conoces Left() conoces VB.NET, pero para conocer .NET como _plataforma_ debes conocer Substring.
Simplemente era una matización 🙂
Un saludo, figura!
Gracias Eduard por tus matizaciones (ahora me queda más claro). 🙂
Perdón por no haberlo entendido bien.
Y hablando de esto que comentas, totalmente revelador lo que dices de: «Creo que es más fácil desarrollar en VB.NET para alguien que viene de C#, que al revés. Y no porque quien sea de C# «sea mejor» ni mucho menos: C# oculta menos del framework que VB.NET, y quien pase de VB.NET a C# quizá encuentre a faltar cosas como Left().»
No puedo estar más de acuerdo contigo. Soy MVP de VB pero trabajo por igual con los dos, y he trabajado con personas que vienen de C# y VB y he podido constatar de mi experiencia con estas personas y conmigo mismo esto que justamente dices. 🙂
Un saludo,
Jorge