Objective-C/Cocoa または C (特にCore Foundationを使用) は、パフォーマンスと OS 統合の利点を備えた最もネイティブな実装を確かに提供します。
Java は合理的であり、組み込まれます。ブートストラップするにはいくつかの基本的なスクリプトが必要ですが、それほど多くはありません。
Mono もリーズナブルで、ユーザーが比較的簡単にインストールできます。ダウンロード ページを参照して、ランタイムのみが必要であることを指定する必要がありますが、実行可能です。ライセンスによっては、独自のインストーラー パッケージ内に Mono ランタイム インストーラー パッケージを含めることができる場合があるため、デーモンと同時にインストールされます。
当然のことながら、スクリプト言語ではコードが公開されて変更可能なままになる可能性が高いため、懸念がある場合はそのルートを避けた方がよいでしょう。
デーモンの開発に使用する言語に関係なく、インストールと管理を検討する必要があります。
インストールに関して、Mac ユーザーは 2 つのインストール方法に慣れています: インストーラーによるインストール.pkg
ユーザーがダブルクリックしてインストール プロセスを実行するか、アプリケーションを [アプリケーション] フォルダーにドラッグしてダブルクリックして起動することによって、ファイルを開きます。開発者として、前者を使用すると、README/ライセンス テキストを含めたり、プリフライト スクリプトとポストフライト スクリプトを実行したり、1 つまたは複数のパッケージをインストールするためのメタ パッケージをビルドしたりできます (前述のように、Mono ランタイムを直接また、OS とユーザーは、必要に応じて、どのファイルが、どこに、いつ (インストール後に) インストールされるかを確認できます。あるいは、多くのデーモンは実際の Mac OS X アプリケーションであり、最初の起動時にバックグラウンド プロセスとしてインストールされます。前者は、言語の選択とは無関係です。
これは私を管理に導きます。ほとんどのデーモンはlaunched
、LaunchDaemon (すべてのユーザーに対して、通常は起動時に起動) または LaunchAgent (特定のユーザーに対して、通常はログイン時に起動) として実行されることを望みます。誰とでもうまく統合できれば、launched
みんながより幸せになり、どの言語オプションでも実行できるはずです.
問題は、ユーザーがデーモンを管理する必要があるかどうかです。その場合、これは最も頻繁に MenuExtra または Preference Pane として実装されます。どちらの場合でも、デーモンは任意の言語で開発できlaunched
、MenuExtra/Preference ペインによって (特に 経由で) 制御できますが、場合によっては、MenuExtra が実際にデーモンとして機能する可能性があるため、Objective-C で開発する必要があります。 /ココア。
参照: Apple のDesigning Daemons & Servicesドキュメント。