abcDe titel van deze pagina kan door technische beperkingen van de MediaWiki-software niet juist worden weergegeven. De correcte titel luidt J#.
J# (uitgesproken als J sharp) is Microsofts implementatie van SunsJava. J# is in feite een kopie van Java, zodat het voor Java-programmeurs eenvoudig is hun bestaande Java-applicaties over te zetten naar het .NET-framework. Dit geldt echter niet voor gebruikte Java-utilityklassen. Het sterke van J# is dat het zowel met Java bytecode (door de compiler gegenereerde code die wordt uitgevoerd door een virtuele machine) als met Java-broncode zelf overweg kan. Dit eerste is een groot voordeel als de originele broncode niet (meer) beschikbaar is.
Er is voor J# minder achtergrondinformatie voorhanden dan voor C# of VB.NET. J# heeft echter toegang tot alle functionaliteit die in de CLR (Common Language Runtime) geboden wordt. Als er slechts Java bytecode hoeft worden uitgevoerd, dan is IKVM.NET (een Java-framework dat boven op het .NET-framework draait) een goed alternatief.
Verschillen tussen J# en Java
In het algemeen is de syntaxis hetzelfde, maar er zijn in J# bepaalde aanpassingen gedaan om de functionaliteit van .NET te ondersteunen. Standaard ondersteunt Java geen property's; om toch deze functionaliteit te bieden moeten getters en setters in J# aan bepaalde voorwaarden voldoen.
Voorbeeld van een klasse met een setter en een getter:
Zoals hierboven moet een property voorzien zijn van het sleutelwoord property in Javadoc-stijl, dus met een @ ervoor. Verder moeten de functies beginnen met get_ en set_, en moet de variabelenaam zoals die gebruikt wordt in de functie verschillen met de variabele naam zoals die binnen de klasse gedefinieerd is. De namen van de functies die bij dezelfde property horen, moeten hetzelfde zijn om lees- en schrijffunctionaliteit te verkrijgen, maar om een property bijvoorbeeld alleen-lezen te maken kan de setter weggelaten worden.
Een aantal verschillen met Java zijn dat J# niet compileert naar Java-bytecode, dat het ontwikkelen van Java-applets niet wordt ondersteund, en ook niet de mogelijkheid om Java-applets uit te voeren in een webbrowser. Als laatste worden de Java Native Interface en de Raw Native Interface vervangen door P/Invoke, en wordt het gebruik van remote method invocation niet ondersteund.
privatevoidbutton1_Click(Objectsender,System.EventArgse){booleanpriem=true;StringstrGetal,delers="";doubledblGetal;intdeler=2;// Inlezen van tekstboxtextBox1.SelectAll();strGetal=textBox1.get_SelectedText();dblGetal=System.Convert.ToDouble(strGetal);// Werkwijze :// we delen het getal door een deler.// Indien de rest van deze deling 0 is, hebben we niet te// maken met een priemgetal en onthouden we de deler.// We voeren dit uit voor delers gaande van 2 tot de helft// van het deeltal.// indien we op het einde nog steeds geen rest = 0 hebben// gevonden, is het een priemgetalwhile(deler<=dblGetal/2){doublerest=dblGetal%deler;if(rest==0){priem=false;delers+=System.Convert.ToString(deler)+", ";}deler++;}if(priem){label2.set_Visible(false);label3.set_Visible(true);label4.set_Visible(true);delers="De delers zijn 1, "+strGetal;label4.set_Text(delers);}else{label2.set_Visible(true);label3.set_Visible(true);label4.set_Visible(true);delers="De delers zijn 1, "+delers+strGetal;label4.set_Text(delers);}}