Netscape Portable Runtime (NSPR) について
Netscape Portable Runtime (NSPR) は、
Mozillaが開発した
クロスプラットフォーム対応
ライブラリです。異なる
オペレーティングシステム(OS)環境下でも、ソフトウェアが円滑に動作できるよう、環境差異を吸収するAPIを提供します。特に、
Mozillaのブラウザ製品をはじめとする
クロスプラットフォームアプリケーションの開発において、不可欠な存在となっています。
NSPRは、
Java仮想マシン(JVM)の基盤となるsysレイヤーの役割も果たします。Sun Microsystemsによって定義されたJVMのポーティングを支援し、GUI以外の重要な機能を提供します。
主な機能
NSPRが提供する主な機能は以下の通りです。
- - スレッド: OSが提供するスレッド機能は安定性に欠ける場合がありますが、NSPRは堅牢な単一APIを提供します。OSの機能を最大限に活用しつつ、オーバーヘッドを最小限に抑える設計となっています。
- - スレッド同期: NSPRのスレッド同期は、アントニー・ホーアの提唱したモニタの考えに基づいています。排他制御とスレッド通知機構に加え、Javaでの使用に適した同期メソッドも提供します。再入可能でオブジェクト動的同期に密接に結びついた通知モニタが含まれます。
- - 入出力: NSPRの入出力機能は、ソケットモデルを拡張したものです。可変的なレイヤー化を可能にし、もともとは同期的な入出力メソッドを想定していましたが、複雑なアプリケーション向けにはスレッド機能による並行処理が推奨されています。
- - ネットワークアドレス: NSPRはIP中心のネットワークアドレスオブジェクトを定義し、クライアントがネットワークアドレスをポリモーフィズムとして扱うためのAPIを提供します。IPv4とIPv6の相互変換にも対応し、DNSによるASCII文字列をNSPRのネットワークアドレスに変換できます。
- - 時刻管理: NSPRはインターバルタイマーと暦および時刻の2種類の時刻管理機能を提供します。インターバルタイマーは32ビットで、入出力やスレッドスケジュールの管理に利用されます。暦および時刻は64ビットでマイクロ秒単位の精度を持ち、1970年1月1日を紀元とする、前後30000年程度の時刻を扱えます。ホストシステムの現在時刻との相互変換、ASCII形式との相互変換も可能です。
- - メモリ管理: malloc、calloc、realloc、freeといった基本的なメモリ管理関数を呼び出すAPIを提供します。実装はプラットフォームによって異なり、NSPRライブラリ内で完結する場合と、OSの機能を利用する場合があります。
- - 共有ライブラリのリンク: 共有ライブラリのリンク機能は、プラットフォームの違いを吸収し、統一的な扱いを可能にします。
歴史
初期のNSPRは、
Javaを様々な環境へ移植するためのものでした。1996年に開発が始まったNSPR20は、コンセプトは同じながらもコードがほぼ一から書き直され、機能の改善と拡張が図られました。バージョン番号の20は、バージョン2.0を意味するのではなく、第二世代であることを示しています。
NSPRの重要性
NSPRは、
クロスプラットフォームアプリケーション開発において、OSの違いを意識せずに開発を進めるための重要な役割を果たしています。特に、
Mozilla製品のような複雑なアプリケーションでは、NSPRが提供する安定したAPIが、開発効率とパフォーマンス向上に不可欠です。
関連項目
外部リンク