| ビジュアルJ# | |
|---|---|
| パラダイム | オブジェクト指向、構造化、命令型 |
| 開発者 | マイクロソフト |
| 初登場 | 2002年7月1日 (2002-07-01) |
| 最終リリース | v2.0 第2版 / 2007年5月18日 (2007-05-18) |
| プラットフォーム | .NET フレームワーク |
| Webサイト | msdn2.microsoft.com/en-us/vjsharp/default.aspx |
| 影響を受けた | |
| C#、[1] JavaおよびVisual J++ | |
Visual J#(発音は「ジェイシャープ」)は、 JavaおよびVisual J++言語のプログラマが既存の知識とアプリケーションを.NET Frameworkで使用できるようにするための移行言語であったJ#プログラミング言語の廃止された実装です。[2] [3] 2002年に導入され[4]、2007年に廃止されましたが、製品の最終リリースのサポートは2017年10月まで継続されます。
J#はJavaのソースコードだけでなくバイトコードでも動作するため、オリジナルのソースコードが入手できない場合でも、サードパーティ製のライブラリを使用するアプリケーションの移行に使用できます。 [要出典]インドのハイデラバードにあるHITECシティのMicrosoft India Development Centerで開発されました。[5] [6]
Visual J++におけるJavaの実装であるMSJVMは、 Sunのコンプライアンステストに合格しなかったため、Javaの開発元であるSunから訴訟を起こされ、J#が開発されました。Microsoftは2007年12月31日をもってMSJVMのサポートを終了しました(後にOracleがSunを買収し、Javaとその商標も買収しました)。しかし、Microsoftは2021年にJavaの配布を正式に再開しました(ただし、J++のようにWindowsやそのWebブラウザにバンドルされることはありません)。これはOracleのOpenJDK [7]のビルドであり、MicrosoftはLTS版として少なくとも6年間、Java 17の場合は2027年9月までサポートする予定です。
J#とJavaの基本的な違い
JavaとJ#は基本的に同じ構文を使用しますが、J#には.NET環境をサポートするためにJavaとは異なる規則があります。例えば、標準のJavaBeanクラスで.NETの「プロパティ」を使用するには、getterメソッドとsetterメソッドにJavadocのようなアノテーションをプレフィックスとして付ける必要があります。
/** @beanプロパティ */
...対応するプライベート変数名を、getXxx/setXxx 名の接尾辞とは異なるものに変更します[引用が必要]。
J#はJava言語のソースコードをJavaバイトコード(.classファイル)にコンパイルしません。また、Javaアプレットの開発やWebブラウザで直接アプレットをホストする機能もサポートしていません。ただし、Microsoft J# Browser Controlsと呼ばれるラッパーが提供されており、アプレットをActiveXオブジェクトとしてホストできます。さらに、Javaネイティブインターフェイス(JNI)とRaw Native Interface (RNI)はP/Invokeに置き換えられています。J#はリモートメソッド呼び出し(RMI)をサポートしていません。[8]
InfoWorldは次のように述べています。「J#の.NETフレームワークへのインターフェースは堅牢ですが、 C#ほどシームレスではありません。特に、J#コードでは新しい.NET属性、イベント、値型、デリゲートを定義することはできません。J#は、これらの言語構成要素が他の言語で記述されたアセンブリで定義されている場合はそれらを利用できますが、新しい構成要素を定義できないため、他の.NET言語と比較してJ#の拡張性と相互運用性は制限されています。」 [9]
対照的に、Visual Studio 2005のMicrosoftドキュメントでは、.NETデリゲート、 [10]イベント、[11]および値型[12]の定義がJ#で直接詳細に説明されています。
C# と同様ですが、Java とは異なり、J# はC プリプロセッサディレクティブを使用できます。
J#の歴史
2007年1月、マイクロソフトは次のように発表した。[13]
- マイクロソフトは、64ビットランタイムサポートを求める顧客の要望に応えるため、Visual J# 2.0のアップデート版(64ビット 再配布可能版を含む)であるJ# 2.0 Second Editionをリリースする。マイクロソフトは2007年5月にVisual J# 2.0 Second Editionをリリースした。[14]
- Visual Studioの将来のバージョンでは、J# 言語と Java 言語変換アシスタントが廃止されます。Visual Studio 2005 に同梱されていた最後のバージョンは、2015 年までサポートされていました。
- vjsnativ.dllが事前にロードされていないと、.NET 4.0コードからJ#コードを呼び出すことはできません。[15]
Visual J# 2005 Express Edition のダウンロードは、Microsoft の Web サイトからは利用できなくなりました。
Visual J#はサポートが終了しています。これには2007年にリリースされたVisual J# 2.0再頒布可能第2版が含まれますが、これは2017年までEN-USロケールでサポートされていました(5年間のメインストリームサポートと5年間の延長サポート)。[16] [17]
例
以下は Visual J# の簡単な例です。
パッケージWikipedia.Examples ;
System.*をインポートします。System.ComponentModel.Containerをインポートします。System.Drawing.Pointをインポートします。System.Drawing.Sizeをインポートします。System.Windows.Forms.Applicationをインポートします。System.Windows.Forms.Buttonをインポートします。System.Windows.Forms.Formをインポートします。System.Windows.Forms.Labelをインポートします。System.Windows.Forms.TextBoxをインポートします。
publicクラスHelloWorld はFormを拡張します{ private TextBox textBox ; private Button button ; private Label label ;
プライベートコンテナコンポーネント= null ;
パブリックHelloWorld () { InitializeComponent (); }
protected void Dispose ( boolean disposing ) { if ( disposing ) { components.Dispose ( ) ; } super.Dispose ( disposing ) ; }
private void onClick ( Object sender , EventArgs e ) { label . set_Text ( String . Format ( "入力されたテキスト: {0}" , textBox . get_Text ()); }
#領域Windowsフォームデザイナーによって生成されたコードprivate void InitializeComponent () { this . textBox = new TextBox (); this . button = new Button (); this . label = new Label (); this . SuspendLayout ();
//テキストボックスを初期化しますtextBox.set_Location ( new Point ( 50,30 ) ) ; textBox.set_Name ( " Hello world ! " ) ; textBox.set_Size ( new Size ( 120,20 ) ) ;
// ボタンを初期化します
button.set_Location ( new Point ( 50,60 ) ) ; button.set_Name ( " button " ) ; button.set_Text ( " Click me ! " ) ; button.add_Click ( new EventHandler ( this.onClick ) ) ;
// ラベルを初期
化します。label.set_Location ( new Point ( 50,90 ) ) ; label.set_Name ( " label " ) ; label.set_Size ( new Size ( 200,20 ) ) ;
// フォームを初期化します
set_AutoScaleBaseSize ( new Size ( 6 , 15 )); set_ClientSize ( new Size ( 220 , 140 )); get_Controls (). Add ( textBox ); get_Controls (). Add ( button ); get_Controls (). Add ( label ); set_Name ( "form" ); set_Text ( "Hello, world!" ); ResumeLayout ( false ); } # endregion
/** @attribute System.STAThread() */
public static void main ( String [ ] args ) { Application.Run ( new HelloWorld ( )); } }
参照
- IKVM – Monoおよび.NET Framework 向けのJavaの無料実装
参考文献
- ^ 「Visual Studio .NET 2003の新機能とアップグレードされた機能」。learn.microsoft.com。Microsoft Learn。2019年10月22日。
- ^ 「Visual J# ホーム」。msdn.microsoft.com . 2017年3月24日閲覧。
- ^ 「Javaから.NET Frameworkへの移行ワークショップ:無料オンライントレーニング」。2007年4月30日。2008年4月23日時点のオリジナルよりアーカイブ。2020年1月28日閲覧。
{{cite web}}: CS1 maint: bot: original URL status unknown (link) - ^ マイクロソフトニュース、[1]、2002年7月1日
- ^ S Prasanna, Microsoft's VJ#.Net is made in India, Express Computer , 2002年7月29日 Archived 28 November 28, 2013 at the Wayback Machine
- ^ 「The Hindu Business Line:マイクロソフトがハイデラバードセンターに大計画」www.thehindubusinessline.com。
- ^ 「OpenJDKのMicrosoftビルドの一般提供を発表」。Java at Microsoft . 2021年5月25日. 2021年8月3日閲覧。
- ^ 「Visual J# Migration」。Visual Studio 2005。MSDNライブラリ。2012年3月16日時点のオリジナルよりアーカイブ。2021年12月25日閲覧。
- ^ Yager, Tom (2001年11月21日). 「J#をJavaと呼ばないで」. InfoWorld . 2020年7月20日閲覧。
- ^ "delegate (Visual J#)". Visual Studio 2005 . MSDNライブラリ. 2011年12月19日時点のオリジナルよりアーカイブ。
- ^ 「イベントの定義と使用」。Visual Studio 2005。MSDNライブラリ。2011年12月19日時点のオリジナルよりアーカイブ。
- ^ 「ユーザー定義値型」。Visual Studio 2005。MSDNライブラリ。 2011年12月20日時点のオリジナルよりアーカイブ。
- ^ Microsoft Developer Network、Visual J# 製品発表、2007 年 1 月 10 日
- ^ 「Visual J# 2.0 Second Edition 再頒布可能ダウンロード」。Microsoft 。 2007年5月23日時点のオリジナルよりアーカイブ。2010年4月27日閲覧。
{{cite web}}: CS1 maint: bot: original URL status unknown (link) - ^ 「.NET 4.0 から J# コードを呼び出す - Windward Wrocks」 。2017年3 月 6 日閲覧。
- ^ 「Visual J# Home」 。 2017年3月6日閲覧。
- ^ 「Visual Studio 2008のサポート終了 – 1年後」 。 2017年4月11日閲覧。
外部リンク
- Wayback Machineの公式サイト(2008年2月26日アーカイブ)
- Visual J# のデザインの選択: Wayback Machineでの Pratap Lakshman との会話(2007-04-16 アーカイブ)