C SharpとJavaの比較
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/04/27 07:49 UTC 版)
実装
JVMとCLR
Javaはまったく異なる多くのオペレーティングシステム間で実行できる。またパーソナル・コンピュータに限らず、高度な計算処理や制御を必要とする家電製品や、Blu-ray Discのインタラクティブ技術にもBD-Jとして使用されている。このように数多くのJava仮想マシン (Java VM, JVM) 実装が存在する。
C#および.NETテクノロジーもやはりクロスプラットフォームである。.NET Frameworkはマイクロソフトによる.NETの実装であり、共通言語ランタイム (CLR) はマイクロソフトによる共通言語基盤 (CLI) の実装である。主なプラットフォームはWindowsだが、他のプラットフォームにも実装が存在する。有名なものにMonoがある。ただし、マイクロソフトによる実装と比較して未実装部分が多く、利用できるライブラリに大きく制限がある。マイクロソフトによるモバイル/組み込み環境向け実装としては.NET Compact Frameworkがある。
2017年現在、.NET Frameworkの他に.NET Core[18]やMono/Xamarinなどの実装が存在し、多くのオペレーティングシステム向けの開発が可能となっている。
標準
両言語の構文(文法)、プログラミングインタフェース、バイナリ形式(実行ファイル形式)、実行環境などは様々な機関によって管理されている。
C#はEcmaとISO、JISによって定義されている。標準化の対象は言語構文、基本クラスライブラリ、アセンブリ形式、実行環境(共通言語基盤: CLI)など多岐に渡る。下位層フレームワークの上に新しく実装された上位層ライブラリの多くはこの標準には含まれない(Windows Forms、ASP.NET、ADO.NETなど)。
現在のところ、Javaのどの部分も第三者の標準化団体によって標準化されていない。Javaの商標、ソースコードやその他の素材に関してはオラクル(旧サン・マイクロシステムズ)が無制限の独占的な権利を保持しているが、オラクル(サン)はJava Community Process[19] (JCP) と呼ばれるプロセスに参加し、当事者たちがJavaに関連する技術(言語、SDKからAPIに至るまで)に対する変更を専門家団体や諮問会議を通して提案することを許可している。JCP内の規定では、Javaに対する新しい仕様や変更はオラクル(サン)による承認が必要であるとされている。JCPは営利寄与者に対しては会費が必要としているが、非営利寄与者や個人は無料で参加できる。JavaのAPIセットにはいくつかのエディションがあり、標準エディションのJava SE、エンタープライズ向けエディションのJakarta EE(旧Java EE)、モバイル/組み込み環境向けエディションのJava MEが存在する。
- ^ using ステートメント - 破棄可能なオブジェクトが正しく使用されるようにする - C# | Microsoft Learn
- ^ try-with-resources 文 | Oracle Java SE 7 Documentation
- ^ .NETアプリを軽快にするためのガベージ・コレクション講座(2/4) - @IT
- ^ 型 (C# リファレンス) | Microsoft Docs
- ^ 値型 (C# リファレンス) | Microsoft Docs
- ^ Primitive Data Types (The Java™ Tutorials > Learning the Java Language > Language Basics)
- ^ データ型 (C# と Java の比較) | Microsoft Docs
- ^ Built-in types table (C# Reference) | Microsoft Docs
- ^ Type.IsPrimitive Property (System) | Microsoft Docs
- ^ Parameterless struct constructors - C# 10.0 draft specifications | Microsoft Learn
- ^ C# 7.0 の新機能 - C# ガイド | Microsoft Docs
- ^ Intrinsic Locks and Synchronization (The Java™ Tutorials > Essential Classes > Concurrency)
- ^ Synchronized Methods (The Java™ Tutorials > Essential Classes > Concurrency)
- ^ lock ステートメント - C# リファレンス | Microsoft Docs
- ^ checked および unchecked ステートメント - オーバーフローチェック コンテキストを制御します - C# | Microsoft Learn
- ^ The Trouble with Checked Exceptions
- ^ Why doesn't C# have exception specifications?
- ^ .NET Core とオープン ソース | Microsoft Docs
- ^ 「Javaはオラクルのもの?」、「いいえ、これからもJavaコミュニティのものです!」――Javaエバンジェリスト 寺田佳央氏が、Javaの現在、未来を語る
- C SharpとJavaの比較のページへのリンク