Visual J# (prononcé « jay- sharp ») est une implémentation abandonnée du langage de programmation J# qui était un langage de transition pour les programmeurs des langages Java et Visual J++ , afin qu'ils puissent utiliser leurs connaissances et applications existantes avec le .NET Framework . Il a été introduit en 2002 et abandonné en 2007, le support de la version finale du produit se poursuivant jusqu'en octobre 2017.
J# fonctionnait avec le bytecode Java ainsi qu'avec la source, il pouvait donc être utilisé pour la transition d'applications qui utilisaient des bibliothèques tierces , même si leur code source d'origine n'était pas disponible. Il a été développé par le Microsoft India Development Center basé à Hyderabad à HITEC City en Inde.
L'implémentation de Java dans Visual J++ , MSJVM, n'a pas passé les tests de conformité de Sun , ce qui a conduit à un procès de Sun, le créateur de Java, et à la création de J#. Microsoft a cessé ce support pour MSJVM le 31 décembre 2007 (plus tard Oracle a acheté Sun, et avec lui Java et ses marques). Microsoft a cependant officiellement recommencé à distribuer Java en 2021 (bien que non fourni avec Windows ou ses navigateurs Web comme auparavant avec J++), c'est-à-dire leur version d'OpenJDK d'Oracle, que Microsoft prévoit de prendre en charge pendant au moins 6 ans, pour les versions LTS, c'est-à-dire jusqu'en septembre 2027 pour Java 17.
Différences fondamentales entre J# et Java
Java et J# utilisent la même syntaxe générale, mais il existe des conventions non Java dans J# pour prendre en charge l'environnement .NET. Par exemple, pour utiliser les « propriétés » .NET avec une classe JavaBean standard , il est nécessaire de préfixer les méthodes getter et setter avec l' annotation de type Javadoc :
/** @beanproperty */
…et modifiez le nom de la variable privée correspondante pour qu’il soit différent du suffixe des noms getXxx/setXxx .
J# ne compile pas le code source du langage Java en bytecode Java (fichiers .class) et ne prend pas en charge le développement d'applets Java ni la possibilité d'héberger des applets directement dans un navigateur Web , bien qu'il fournisse un wrapper appelé Microsoft J# Browser Controls pour les héberger en tant qu'objets ActiveX . Enfin, l'interface native Java (JNI) et l'interface native brute (RNI) sont remplacées par P/Invoke ; J# ne prend pas en charge l'invocation de méthode à distance (RMI).
InfoWorld a déclaré : « L'interface de J# avec le framework .NET est solide, mais pas aussi transparente que celle de C# . En particulier, le code J# ne peut pas définir de nouveaux attributs, événements, types de valeur ou délégués .NET. J# peut utiliser ces constructions de langage si elles sont définies dans un assemblage écrit dans un autre langage, mais son incapacité à en définir de nouvelles limite la portée et l'interopérabilité de J# par rapport aux autres langages .NET. »
Au contraire, la documentation Microsoft pour Visual Studio 2005 détaille la définition des délégués .NET, des événements et des types de valeur directement en J#.
Histoire de J#
En janvier 2007, Microsoft a annoncé :
- Microsoft produirait une version mise à jour de Visual J# 2.0, comprenant une version redistribuable 64 bits , appelée J# 2.0 Second Edition pour répondre à la demande des clients pour la prise en charge de l'exécution 64 bits. Microsoft a publié Visual J# 2.0 Second Edition en mai 2007.
- Suppression du langage J# et de l'assistant de conversion de langage Java dans les futures versions de Visual Studio . La dernière version, fournie avec Visual Studio 2005, était prise en charge jusqu'en 2015.
- L'appel de code J# à partir de code .NET 4.0 échouerait à moins que vjsnativ.dll ne soit préchargé.
Le téléchargement de Visual J# 2005 Express Edition n'est plus disponible sur le site Web de Microsoft.
Visual J# n'est plus pris en charge, y compris la deuxième édition redistribuable de Visual J# 2.0 publiée en 2007, qui était prise en charge jusqu'en 2017 « (5 ans de support standard et 5 ans de support étendu) sur les paramètres régionaux EN-US. »