El lenguaje de programación J# (o J-sharp) es un lenguaje transicional para programadores del lenguaje de programación Java y del lenguaje J++ de Microsoft, creado con la intención de que ambos puedan usar sus conocimientos actuales para crear aplicaciones en la plataforma .NET de Microsoft.
J# se supone compatible con Java, tanto a nivel código fuente, como binario.
En teoría, J# puede ser usado para transicionar aplicaciones que usan bibliotecas de terceros, aun cuando el código de estas no esté disponible.
Si se desea ejecutar código de Java, como en un ambiente real de Java, en un entorno .NET, debe considerarse IKVM.
Mientras que J# proporciona compatibilidad con la sintaxis de Java en el contexto de un ambiente .NET, IKVM es en realidad un ambiente Java ejecutándose en el contexto de un ambiente .NET.