J Sharp
J#はJavaとは違い、Windows環境でのみ動作するバイナリコードのアプレットやアプリケーションのみを作成できる。つまり、拡張子が.exeの実行ファイルやコンソールアプリケーション、そして拡張子が.dllのクラスファイルである。
JavaとJ#とで全般的な文法はほぼ同じであるが、.NET環境をサポートするためにJavaの規格には適合していない。たとえば、.NETプロパティを普段のJavaBeanのクラスで使うためには、getXxxメソッドやsetXxxメソッドのようなget/setのプレフィックスを備える必要があり,メソッドに対してJavadocのような注釈を添える。
もしget/setで始まるプライベート変数を有するなら,get/setで始まらない別の名称に変更しなければならない。 J#はJavaのソースコードから.classファイルのようなJavaバイトコードにコンパイルしないし、Javaアプレット開発環境やWebブラウザ上でアプレットを実行する機能もない。しかしながら、ActiveXオブジェクトとしてホストするためのラッパー(Microsoft J# Browser Controls)は提供されている。 最後に、Java Native Interface (JNI) とRaw Native Interface (RNI) については、P/Invoke(プラットフォーム呼び出し)で代用する。J#はJava RMIをサポートしない。
言い換えると、Javaが中間コードをJava仮想マシン上で動作させるのと同じように、J#は共通中間言語にいったんコンパイルされた中間コードを.NET Framework上で実行する。