| ビジュアルJ# | |
|---|---|
| パラダイム | オブジェクト指向、構造化、命令型 |
| 開発者 | マイクロソフト |
| 初登場 | 2002年7月1日 (2002年7月1日) |
| 最終リリース | v2.0 第2版 / 2007年5月18日 (2007年5月18日) |
| プラットフォーム | .NET フレームワーク |
| Webサイト | msdn2 |
| 影響を受けた | |
| C#、[ 1 ] JavaおよびVisual J++ | |
Visual J#(発音は「ジェイシャープ」)は、 JavaおよびVisual J++言語のプログラマが既存の知識とアプリケーションを.NET Frameworkで使用できるようにするための移行言語であったJ#プログラミング言語の廃止された実装です。[ 2 ] [ 3 ] 2002年に導入され[ 4 ]、2007年に廃止されましたが、製品の最終リリースのサポートは2017年10月まで継続されました。
J#はJavaのソースコードだけでなくバイトコードにも対応しているため、サードパーティ製のライブラリを使用するアプリケーションを、元のソースコードが入手できない場合でも移行できます。J#は、インドのハイデラバードにあるHITEC Cityの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版が含まれますが、これはEN-USロケールで2017年まで(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: 元のURLステータス不明(リンク) - ^マイクロソフトニュース、 [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:Microsoftがハイデラバードセンターに大規模な計画を策定」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: 元のURLステータス不明(リンク) - ^ 「.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 アーカイブ)