J# | |
Paradigma | objektumorientált programozási nyelv |
Megjelent | 2002 |
Fejlesztő | Microsoft |
Utolsó kiadás | v2.0 Second edition[1] |
Operációs rendszer | Windows |
Weboldal |
A J# egy, a Microsoft által fejlesztett objektumorientált programozási nyelv, mely a Java- és Visual J++-programozóknak az át- és a belépést kívánta megkönnyíteni a .NET keretrendszer környezetébe. Hosszú ideig dolgoztak a Java-fejlesztők, hogy a C#-ben a .NET minden funkcióját használni tudják. A J# célja volt az is, hogy a Java-fejlesztők könnyebben tudjanak megfelelő Java-kódot a környezetbe átvinni, hogy új projektekben másik .NET-nyelven, például C# nyelven fel tudják használni.
A Microsoft 2007. január 10-én bejelentette a J# fejlesztésének végét, és hogy nem jelenik meg új verzió a Visual Studio 2008-ban. A Visual Studio 2005 volt így a J#-t tartalmazó utolsó verzió.[2] 2015-ig tartott a kiterjesztett támogatás, mely hibajavításokból állt.
Mindkét nyelv hasonló alapszintaxissal működik, de eltérő futásidejű környezeten alapulnak. A J# a CLR (Common Language Runtime) rendszert használja, a Java az ahhoz hasonló Oracle JRE (Java Runtime Environment) rendszert.
A Visual Studio 2005-ben a Microsoft a Javából származó névterek és osztályok nagy részét átvette, megkönnyítendő a .NET keretrendszerrel való munkát Javában- Különösen a szabvány- és a Swing-osztályok átváltására került nagy hangsúly. Ezenkívül van egy fordító, mely a J#-forrásokat C#-ba fordítja.
A J# nem fordít Java nyelvű forráskódot Java bájtkódra (.class fájlok), és nem támogatja Java appletek fejlesztését vagy böngészőben való tárolását, azonban a Microsoft J# Browser Controlsban ActiveX-objektumokként tárolhatók. A Java Native Interface (JNI) és nyers natív felület (RNI) helyett P/Invoke van, és a J# nem támogatja a távoli metódusinvokációt (RMI).[3]
Az InfoWorld szerint „A J# felülete a .NET keretrendszerhez szilárd, de nem olyan, mint a C#-é. Például a J#-kódban nem definiálhatók új .NET-attribútumok, események, értéktípusok vagy függvénymutatók. A J# akkor használhatja őket, ha másik nyelvben írt összerakó nyelvben írják, de az újak definiálásának hiánya korlátozza a J# működését és használhatóságát más .NET-nyelvekhez képest.”[4]
Azonban a Microsoft Visual Studio 2005-dokumentációja részletezi a .NET-függvénymutatók[5] events,[6] és értéktípusok J#-ban való definiálását.[7]
Az alábbi példák a J# felépítését és használatát mutatják be:
import System.Console;
import System.Windows.Forms.*;
public final class Program extends Object
{
public final static String HalloWeltAusdruck = "Helló, világ!";
/**
* Bemenet
*/
public static void main(String[] args)
{
(new Program()).Run(args);
}
/**
* „Helló, világ!” standard kimenetre (gyakran konzolra) való írása
*/
private void DefOutput()
{
System.Console.WriteLine("Konzolkimenet…\n");
Console.get_Out().WriteLine(HalloWeltAusdruck);
System.Console.WriteLine("Nyomja meg az ENTER-t a továbblépéshez.\n");
Console.ReadLine();
}
/**
* Nem statikus bemeneti pont
*/
private void Run(System.String[] args)
{
// Kimenet → konzol
this.DefOutput();
// Kimenet Windowsra
WinOutput();
}
/**
* „Helló, világ!” kimenet ablakként
*/
private void WinOutput()
{
System.Console.WriteLine("Kimenet ablakként…");
MessageBox.Show(Program.HalloWeltAusdruck, "Kimenet üzenőablakként.");
System.Console.WriteLine("Nyomja meg az ENTER-t a továbblépésre.\n");
Console.ReadLine();
}
}