2009-11-29 7 views
2

Vous cherchez à écrire un outil SNMP et Netflow pour Linux \ BSD et vous cherchez des conseils sur la sélection de la langue, C ou Java. L'outil va collecter des Netflows, envoyer et recevoir des requêtes SNMP, se connecter à une base de données Postgresql et sera dirigé par une interface web (PHP), à l'avenir, il s'interfacera avec les périphériques utilisant les services Web. Normalement j'aurais atteint pour C pour mettre en œuvre ce qui précède, beaucoup de bibliothèques robustes et un accès bas niveau à la pile réseau mais l'accès à la base de données et les services web pourraient être implémentés plus facilement (mieux?) En Java.Linux BSD Programmation réseau

La question est de savoir si Java est en mesure de traiter toutes ces informations réseau en charge ou devrais-je m'en tenir à un accès de niveau inférieur fourni par C? Question complémentaire, j'ai envisagé de faire de cette application une application hybride. Levage lourd en C et faire les choses de niveau supérieur en Java. Les expériences et les réflexions à ce sujet sont les bienvenues.

Répondre

3

Les implémentations de Java sont robustes et matures, vous ne vous souciez donc pas de savoir si elles sont «en cours de traitement ... sous charge». C a ses avantages (la plus petite empreinte de mémoire, les temps de démarrage les plus rapides), mais vous payez cher pour eux en termes de travail de programmation nécessaire pour faire votre propre gestion de la mémoire. Il ne semble pas de ce que vous dites que la minimisation de la mémoire ou l'optimisation de redémarrage fréquent est une grosse affaire pour cette application, de toute façon. Pourquoi ne pas commencer par Java (ou tout autre langage de haut niveau avec lequel vous êtes le plus à l'aise) et envisager de recoder certaines parties de C, peut-être, si et quand votre profilage montre des goulets d'étranglement CPU ou de mémoire provenant de l'utilisation de la langue de plus haut niveau? (Je parie que vous finirez probablement pas besoin d'un tel recodage, btw).

1

Je voudrais absolument aller avec Java sur ce sujet. Il est entièrement capable de gérer la "charge". Je travaille sur des projets Java qui sont chargés de traiter de très grandes quantités de données en temps réel et sans problème.

Java wont lutte un peu pour ce que vous parlez de faire ici et il sera beaucoup plus facile et plus rapide à se développer dans

0

Tout le monde est clouée ce. Les implémentations JVM modernes sont dans la même approximation que C pour la vitesse, sauf si vous faites un accès direct au matériel.

Je suis curieux de savoir pourquoi vous envisageriez un backend Java pour une interface PHP. C/PHP aurait du sens, mais si vous utilisez Java en backend, il vous sera peut-être utile d'avoir le même langage pour une maintenance plus facile.

+0

Oui, j'aurais dû le préciser, si j'utilisais Java pour le backend, je l'utiliserais aussi du côté de l'interface web. De préférence quelque chose de léger sans nécessiter un million de dépendances et des fichiers xml pour la configuration de chaque composant. – ServerMonkey

+0

On dirait que ce n'est pas votre premier rodéo avec Java. Tant que vous créez une couche DAO pour le côté web, vous pouvez simplement réutiliser cela pour le backend, et sauvegarder du code entre-temps. De toute façon, laissez-nous savoir comment ça se passe. –