Java oder C++

Hallo zusammen,

ich möchte einen Chatserver programmieren.
Jetzt hab ich mal ein bischen wild in Java rumgehackt, aber bin schnell im Chaos gelandet, also verwerfe ich nochmal alles und konzipiere erstmal das Objektdesign etc.

Nun stellt sich mir auch die Frage ob ich das ganze in Java oder C++ machen soll.

Das Ding soll auf Linux laufen nachher.
Java bietet sich halt irgendwie an, weil die TCP-Socket Geschichte recht einfach ist, weil ich es 1 zu 1 auf Windows entwickeln und auf Linux laufen lassen kann, etc.

Allerdings habe ich auch ein paar Bedenken:

  • kann ich ein Java-programm vernünftig als Deamon implementieren unter Linux? Prozesss killen würde es vielleicht auch tun, aber ein wenig Aufräumarbeit beim Runterfahren des Systems wäre auch nicht schlecht. kann ich irgendwelche Funktionen auf die Linux-Signals hängen?

  • kann man der Garbage Collection wirklich traun? Als Systemdienst wird das Programm ja sozusagen nie beendet, nicht das mein Speicher ständig voll läuft :wink:

  • kommt Java performancemäßig zumindest annähernd an eine in C++ geschriebene binary ran? Nicht dass mein Java-Programm nur halb soviele Connections verkraftet wie es ein C++ Programm tun würde.

Fragen über Fragen, bitte helft mir die Vorurteile gegenüber Java auszuräumen oder zu bestätigen :wink:

Danke
Bruno

kann ich
irgendwelche Funktionen auf die Linux-Signals hängen?

So ohne weiteres nicht.

Unter NT gibt es aber einen Wrapper mit dem man ein Java-Programm als Service verwenden kann (der Wrapper spricht mit dem SCM und ruft dann über JNI definierte Java-Methoden für start, stop, pause, etc. auf).

Vielleicht gibts sowas auch für Unix-Signals, keine Ahnung.

  • kann man der Garbage Collection wirklich traun? Als
    Systemdienst wird das Programm ja sozusagen nie beendet, nicht
    das mein Speicher ständig voll läuft :wink:

Ja, denke schon. Ich hab Java-Serverprozesse schon stunden und tagelang unter Dauerlast laufen lassen und hatte mit dem Speicher noch nie Probleme.

  • kommt Java performancemäßig zumindest annähernd an eine in
    C++ geschriebene binary ran?

Auch ja, Java und C++ sind dank JTI so gut wie gleichwertig, einen Geschwindigkeitsvorsprung kannst du nur mit reinem C erzielen.

Fragen über Fragen, bitte helft mir die Vorurteile gegenüber
Java auszuräumen oder zu bestätigen :wink:

Sind IMHO bis auf das Problem mit Service/Daemon nicht begründbar. Falls das weiterhilft, dass war auch die Meinung eines Consultants der uns in einem Integrationsprojekt unter andrem in eben dieser Frage beraten hat und angesichts des Geldes was der gekostet hat muß er es ja wissen. :smile:

Grüße, Robert

Unter NT gibt es aber einen Wrapper mit dem man ein
Java-Programm als Service verwenden kann (der Wrapper spricht
mit dem SCM und ruft dann über JNI definierte Java-Methoden
für start, stop, pause, etc. auf).
Vielleicht gibts sowas auch für Unix-Signals, keine Ahnung.

aha, naja wär auch nicht so schlimm denk ich mal… dürfte keine grösseren probleme geben wenn der Prozess einfach abgeschossen wird…

Ja, denke schon. Ich hab Java-Serverprozesse schon stunden und
tagelang unter Dauerlast laufen lassen und hatte mit dem
Speicher noch nie Probleme.

sehr gut!

  • kommt Java performancemäßig zumindest annähernd an eine in
    C++ geschriebene binary ran?

Auch ja, Java und C++ sind dank JTI so gut wie gleichwertig,
einen Geschwindigkeitsvorsprung kannst du nur mit reinem C
erzielen.

das will ich mir dann doch nicht antun :smile:

Sind IMHO bis auf das Problem mit Service/Daemon nicht
begründbar. Falls das weiterhilft, dass war auch die Meinung
eines Consultants der uns in einem Integrationsprojekt unter
andrem in eben dieser Frage beraten hat und angesichts des
Geldes was der gekostet hat muß er es ja wissen. :smile:

Hehe :wink:
ja, Java ist echt nicht schlecht… die systemnahe Programmierug fehlt mir ein wenig, aber ansonsten kriegt man da echt Lösungen hin da würd ich in C++ Jahre dran verzweifeln :smile:

CU Bru

Moin,

  • kann ich ein Java-programm vernünftig als Deamon
    implementieren unter Linux? Prozesss killen würde es
    vielleicht auch tun, aber ein wenig Aufräumarbeit beim
    Runterfahren des Systems wäre auch nicht schlecht.

Unter Linux läuft zB. Jakarta als Daemon. Fügt sich sauber in den SuSE-Initvorgang ein.

  • kommt Java performancemäßig zumindest annähernd an eine in
    C++ geschriebene binary ran? Nicht dass mein Java-Programm nur
    halb soviele Connections verkraftet wie es ein C++ Programm
    tun würde.

Hängt von Deiner Leitung und dem Traffic ab. Ich bin gerade dabei, ein Content Management System unter Java/Linux zu installieren.

Fragen über Fragen, bitte helft mir die Vorurteile gegenüber
Java auszuräumen oder zu bestätigen :wink:

Es dürfte mehr von Dir abhängen als von der Sprache. Wie groß sind Deine Fähigkeiten in OOA&D, Java, C++?

Thorsten

Unter Linux läuft zB. Jakarta als Daemon. Fügt sich sauber in
den SuSE-Initvorgang ein.

mal evtl. genauer anschauen, ich habe mal den Tomcat laufen gehabt der war ähnlich.

  • kommt Java performancemäßig zumindest annähernd an eine in
    C++ geschriebene binary ran? Nicht dass mein Java-Programm nur
    halb soviele Connections verkraftet wie es ein C++ Programm
    tun würde.

Hängt von Deiner Leitung und dem Traffic ab. Ich bin gerade
dabei, ein Content Management System unter Java/Linux zu
installieren.

Ich meine jetzt von der Rechenleistung. Leitung / Traffic ist kein problem (ausser ein finanzielles :wink:

Es dürfte mehr von Dir abhängen als von der Sprache. Wie groß
sind Deine Fähigkeiten in OOA&D, Java, C++?

OOA&D? was ist das denn :wink: Objekt orientierte analyse und design oder wie…
also ich bin noch kein Profi, aber ich gebe mein bestes :wink: das wird schon. C++ und Java kenn ich mich soweit ganz gut aus, wobei mir java doch eingies einfacher erscheint bzw. ich muss mich nicht um soviel kümmern wie in C++

Bruno

Moin,

Unter Linux läuft zB. Jakarta als Daemon. Fügt sich sauber in
den SuSE-Initvorgang ein.

mal evtl. genauer anschauen, ich habe mal den Tomcat laufen
gehabt der war ähnlich.

Sehr ähnlich sogar. Ich meinte eigentlich Tomcat.

Hängt von Deiner Leitung und dem Traffic ab. Ich bin gerade
dabei, ein Content Management System unter Java/Linux zu
installieren.

Ich meine jetzt von der Rechenleistung. Leitung / Traffic ist
kein problem (ausser ein finanzielles :wink:

Je mehr Traffic Du hast, desto mehr muß der Server arbeiten.

Es dürfte mehr von Dir abhängen als von der Sprache. Wie groß
sind Deine Fähigkeiten in OOA&D, Java, C++?

OOA&D? was ist das denn :wink: Objekt orientierte analyse und
design oder wie…

Jepp. Wenn Du da richtig gut bist, spielt die Sprache eine kleinere Rolle.

also ich bin noch kein Profi, aber ich gebe mein bestes :wink: das
wird schon. C++ und Java kenn ich mich soweit ganz gut aus,
wobei mir java doch eingies einfacher erscheint bzw. ich muss
mich nicht um soviel kümmern wie in C++

Sehe ich ähnlich, darum würde ich es auch in Java schreiben.

Thorsten