Linux \ BSD Сетевое программирование - PullRequest
2 голосов
/ 29 ноября 2009

Хотите написать инструмент SNMP и Netflow для Linux \ BSD и получить совет по выбору языка, C или Java.

Инструмент будет собирать Netflow, отправлять и получать запросы SNMP, подключаться к базам данных Postgresql и будет работать через веб-интерфейс (PHP), в будущем он будет взаимодействовать с устройствами с помощью веб-сервисов.

Обычно я хотел бы, чтобы C реализовал вышеупомянутое, множество надежных библиотек и низкоуровневый доступ к сетевому стеку, но доступ к базе данных и веб-сервисам можно было бы реализовать проще (лучше?) В Java.

Вопрос в том, справится ли Java с задачей обработки всей этой сетевой информации под нагрузкой или я должен придерживаться доступа более низкого уровня, предоставляемого C?

Дополнительный вопрос, я подумывал сделать это гибридное приложение. Тяжелая работа в Си и выполнение вещей более высокого уровня в Java. Опыт и мысли по этому поводу приветствуются.

Ответы [ 3 ]

3 голосов
/ 29 ноября 2009

Реализации Java сегодня надежны и зрелы, поэтому вы беспокоитесь о том, что они «до обработки ... под нагрузкой» неуместны. У C есть свои преимущества (минимальный объем памяти, самое быстрое время запуска), но вы дорого платите за них с точки зрения программирования, необходимого для собственного управления памятью. Из того, что вы говорите, не следует, что минимизация памяти или оптимизация частого перезапуска в любом случае имеют большое значение для этого приложения. Почему бы вам не начать с Java (или с любого другого высокоуровневого языка, с которым вам больше всего удобно) и подумать только о перекодировании некоторых частей в C, , может быть , если и когда ваше профилирование показывает CPU или память узкие места, возникающие при использовании языка более высокого уровня? (Держу пари, что вам, скорее всего, не понадобится такая перекодировка).

1 голос
/ 29 ноября 2009

Я бы абсолютно пошел с Java на этом. Он вполне способен справиться с «нагрузкой». Я работаю над проектами Java, которые отвечают за обработку чрезвычайно больших объемов данных в режиме реального времени и без проблем.

Java не будет ни капли бороться за то, о чем вы здесь говорите, и в ней будет намного легче и быстрее развиваться.

0 голосов
/ 29 ноября 2009

Каждый прибил это; современные реализации JVM находятся на том же уровне, что и C для скорости, если вы не делаете прямой доступ к оборудованию.

Мне любопытно, почему вы рассматриваете бэкэнд Java для внешнего интерфейса PHP. C / PHP имеет смысл, но если вы собираетесь использовать Java на бэкэнде, это может помочь использовать один и тот же язык для упрощения сопровождения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...