Объектив-C/Cocoa или C (особенно с использованием Core Foundation), безусловно, даст вам самую оригинальную реализацию с преимуществами интеграции производительности и ОС.
Java разумный и будет встроен. Вам понадобятся некоторые базовые скрипты, чтобы загрузить их, но не так много.
Mono также является разумным и может быть относительно легко установлен пользователем.Вам нужно будет указать их на странице загрузки и указать, что им требуется только время выполнения, но это делает. В зависимости от licensing, вы можете включить пакет установки Mono во время установки в свой собственный пакет установщика, чтобы он был установлен одновременно с вашим демоном.
Естественно, языки сценариев, скорее всего, оставляют ваш код открытым и изменяемым, поэтому вы можете избежать этого маршрута, если это вас беспокоит.
Независимо от языка, используемого для разработки демона, вы захотите рассмотреть возможность установки управления &.
Для установки пользователи Mac используются для двух способов установки: установка через файл установщика .pkg
, который пользователь дважды кликает, а затем переносится через процесс установки или перетаскивает приложение в папку «Приложения» и дважды щелкает запуск. Как разработчик, первый дает вам большой контроль над текстом README/license, работает pre- пост-полевых сценариев, создает метапакеты для установки одного или нескольких пакетов (как упоминалось выше: возможно, включая Mono runtimes прямо в вашем собственный установщик), а также дает пользователю OS & возможность видеть, какие файлы будут установлены, где и когда (после установки), если они того пожелают. В качестве альтернативы, многие демоны будут реальными приложениями Mac OS X, которые затем будут установлены в качестве фоновых процессов при первом запуске. Первый будет независим от вашего выбора языка, но последний будет склоняться к реализации Objective-C/Cocoa.
Это подводит меня к руководству. Большинство демонов захотят пройти через launched
как LaunchDaemon (для всех пользователей, обычно запускаемых при загрузке) или LaunchAgent (для определенных пользователей, обычно запускаемых при входе в систему). Если вы хорошо интегрируетесь с launched
, все будут счастливее и должны быть работоспособными в любом из ваших вариантов языка.
Возникает вопрос, будет ли пользователь вообще управлять демоном? Если это так, это чаще всего реализуется либо как MenuExtra, либо панель предпочтений. В любом случае демон может быть разработан на любом языке и контролироваться (например, через launched
) с помощью панели MenuExtra/Preference, но в некоторых случаях MenuExtra действительно может функционировать как демон и поэтому вы хотите разработать в Objective- С/какао.
См. Также: Документация от Apple Designing Daemons & Services.
Будет ли это безликим фоновым демоном (так что вообще нет GUI) или вы думаете о чем-то вроде меню Extra, которое у пользователя будет иметь некоторый контроль? Будет ли он работать всегда для всех пользователей или в контексте сеанса входа в один пользователь? Как секрет, вы хотите сохранить код демона (который может исключить язык сценариев)? И какие варианты вы рассматриваете для метода установки (файл установщика '.pkg', приложение, которое будет установлено при первом запуске, перетаскивании и т. Д.)? – morgant
еще один выбор, который вы не указали, был простой старый C или C++, и вы можете вызывать функции MacOS с использованием основы Core Foundation и API. –
Посмотрите здесь: http://en.wikipedia.org/wiki/List_of_programming_languages –