Heute noch C++ für Unternehmenssoftware



  • Ist leider die Wahrheit, dass Java zu viel Speicher verbraucht (wenn mehrere GB auch etwas übertrieben sind). Ist zwar ne schöne Sprache zum programmieren, mit ner größeren und besseren standard Library als die C++ STL, aber der Speicherverbrauch ist zuiel. Man hat einfach keine Kontrolle, wann der Speicher freigegeben werden soll. Wenn die VM sich einmal mehr Speicher geholt hat, dann gibt sie den nur ungern wieder her. Außerdem braucht die VM selber vom Start an auch immer noch ne ganze Menge Speicher und wenn man einmal mehrere Klassen geladen hat, dann brauch sie auch immer mehr Speicher. Oder gibt es nen Zeitpunkt ab dem Klassen wieder "entladen" werden?

    Was auch noch stört, ist dass man natürlich auch die JRE installiert haben muss, was doch einigen "normal" User zuviel Aufwand ist.



  • 4444444444444 schrieb:

    Ist leider die Wahrheit, dass Java zu viel Speicher verbraucht (wenn mehrere GB auch etwas übertrieben sind). Ist zwar ne schöne Sprache zum programmieren, mit ner größeren und besseren standard Library als die C++ STL, aber der Speicherverbrauch ist zuiel. Man hat einfach keine Kontrolle, wann der Speicher freigegeben werden soll. Wenn die VM sich einmal mehr Speicher geholt hat, dann gibt sie den nur ungern wieder her. Außerdem braucht die VM selber vom Start an auch immer noch ne ganze Menge Speicher und wenn man einmal mehrere Klassen geladen hat, dann brauch sie auch immer mehr Speicher. Oder gibt es nen Zeitpunkt ab dem Klassen wieder "entladen" werden?

    Wenn ein Programm so viel Arbeitsspeicher braucht, dass das bei einem Rechner mit 512MB RAM oder so relevant wird, dann wird dieser Speicherverbrauch normalerweise von den Daten dominiert, die das Programm verarbeitet. Das ist völlig unabhängig von der gewählten Programmiersprache. Durch die JVM kommt zwar ein gewisser Overhead zu Stande, dieser ist aber völlig zu vernachlässigen, wenn das Programm ein paar 100MB Speicher brauchen sollte. Auch die geladenen Klassen fallen dann nicht ins Gewicht.

    4444444444444 schrieb:

    Was auch noch stört, ist dass man natürlich auch die JRE installiert haben muss, was doch einigen "normal" User zuviel Aufwand ist.

    Größere Desktop-Anwendungen, die Java nutzen, bringen ihre eigene JRE mit. Bei Maple 11 habe ich bei der Installation letzt zum Beispiel in keinster Weise mitgekriegt, dass Java genutzt wird. Es wurde genau wie jedes andere Programm auch installiert.



  • Die SWING-Anwendungen, die mir untergekommen sind sind spührbar träge (Athlon XP 3000+ mit 1GB RAM, sollte nicht unterversorgt sein), Java hatte ich auch schon das ein oder andere Programm, das doch recht flüssig lief.

    Was mich an Java stört ist eigentlich nur dass es sich inkonsistent von C++ unterscheidet und ich nicht genug Zeit habe mich auch noch mit Java zu beschäftigen - ist ja nicht die Schuld von Java 😃



  • 4444444444444 schrieb:

    Man hat einfach keine Kontrolle, wann der Speicher freigegeben werden soll. Wenn die VM sich einmal mehr Speicher geholt hat, dann gibt sie den nur ungern wieder her. [...]

    Na und? Das ist doch der Witz an einer automatischen Speicherverwaltung, dass man sich um das Freigeben nicht kümmern muss. Wenn man nicht gerade auf Echtzeitfähigkeit angewiesen ist, ist ein GC das praktischste was es gibt.

    tfa



  • Gregor schrieb:

    Wenn ein Programm so viel Arbeitsspeicher braucht, dass das bei einem Rechner mit 512MB RAM oder so relevant wird, dann wird dieser Speicherverbrauch normalerweise von den Daten dominiert, die das Programm verarbeitet. Das ist völlig unabhängig von der gewählten Programmiersprache. Durch die JVM kommt zwar ein gewisser Overhead zu Stande, dieser ist aber völlig zu vernachlässigen, wenn das Programm ein paar 100MB Speicher brauchen sollte. Auch die geladenen Klassen fallen dann nicht ins Gewicht.

    Wenn man, wie viele Leute, 5 - 10 Programme offen hat und diese alle Java Anwendungen wären, dann würden die einzelnen VMs doch ne ganz Menge Speicher verbrauchen und schon ins Gewicht fallen. Wenn SUN oder sonst wer da mal was ändern würde, dann hätte Java auf Desktoprechnern mehr Chancen.



  • Der Projektleiter schrieb:

    C++ scheint nur im Bereich von Unternehmenslösungen und Informationssystemen im allgemeinen den Kampf langsam aber doch sicher zu verlieren. Was ich hierbei nur noch nicht ganz verstanden habe, warum wird C++ in diesen Bereichen kaum noch verwendet?

    Spielen da nur kaufmännische Gründe eine Rolle, oder auch technische? Mich interessiert das besonders, da ich mich beruflich viel mit Unternehmenslösungen und privat mit C++ auseinandersetze und bisher den Hype um andere Technologien bisher noch nicht verstehen konnte.

    Wie kommt es das die großen IT-Dienstleister neue Projekte zumeist in Java entwickeln? Das gleiche gilt für die riesige Softwarevertriebshäuser wie Oracle, SAP und IBM.

    Ich denke das wichtigste was C++ fehlt, sind Firmen die es nach vorne pushen, wie es Sun, IBM und Oracle mit Java gemacht hatten oder Microsoft mit C#. Wie seht ihr das, würdet ihr bei einer Neuinvestition heute noch auf C++ setzen?

    1. Nach Aussage bestimmter Beratungsunternehmen ist es Moment besonders schwer gute freiberufliche C++ Programmierer zu finden. Ein Typ meinte zu mir - von 320 C++ Programmierer in der DB wäre ich der 168te den er anruft. Und keiner hätte Zeit oder ist technologisch bereits ganz wo anders.

    2. Direkt code ich schon lange nicht mehr nativ. Bei mir ist heute alles modellgetrieben. C++, Java oder C# nur noch mit Codegenerator.

    3. Der Java Hype existiert schon seit 2000.

    4. C++ braucht nicht gepush werden. Im Embedded Bereich ist C++ immer noch die erste Wahl. Oder generell in der hardwarenahen Umgebung. Außerdem weiß ich es zu schätzen, wenn ein Fenster in Sekundenbruchteilen aufgeht und nicht wie bei Java oder C++ ich einen Minute warten muss ...

    5. Wie lange existiert jetzt C++? 1989?!



  • Prof84 schrieb:

    Der Projektleiter schrieb:

    C++ scheint nur im Bereich von Unternehmenslösungen und Informationssystemen im allgemeinen den Kampf langsam aber doch sicher zu verlieren. Was ich hierbei nur noch nicht ganz verstanden habe, warum wird C++ in diesen Bereichen kaum noch verwendet?

    Spielen da nur kaufmännische Gründe eine Rolle, oder auch technische? Mich interessiert das besonders, da ich mich beruflich viel mit Unternehmenslösungen und privat mit C++ auseinandersetze und bisher den Hype um andere Technologien bisher noch nicht verstehen konnte.

    Wie kommt es das die großen IT-Dienstleister neue Projekte zumeist in Java entwickeln? Das gleiche gilt für die riesige Softwarevertriebshäuser wie Oracle, SAP und IBM.

    Ich denke das wichtigste was C++ fehlt, sind Firmen die es nach vorne pushen, wie es Sun, IBM und Oracle mit Java gemacht hatten oder Microsoft mit C#. Wie seht ihr das, würdet ihr bei einer Neuinvestition heute noch auf C++ setzen?

    1. Nach Aussage bestimmter Beratungsunternehmen ist es Moment besonders schwer gute freiberufliche C++ Programmierer zu finden. Ein Typ meinte zu mir - von 320 C++ Programmierer in der DB wäre ich der 168te den er anruft. Und keiner hätte Zeit oder ist technologisch bereits ganz wo anders.

    2. Direkt code ich schon lange nicht mehr nativ. Bei mir ist heute alles modellgetrieben. C++, Java oder C# nur noch mit Codegenerator.

    3. Der Java Hype existiert schon seit 2000.

    4. C++ braucht nicht gepush werden. Im Embedded Bereich ist C++ immer noch die erste Wahl. Oder generell in der hardwarenahen Umgebung. Außerdem weiß ich es zu schätzen, wenn ein Fenster in Sekundenbruchteilen aufgeht und nicht wie bei Java oder C++ ich einen Minute warten muss ...

    5. Wie lange existiert jetzt C++? 1989?!

    inwiefern war das jetzt eine antwort auf die frage ?



  • C++ hat letztes Jahr offiziell seinen 20. Geburtstag gefeiert. Aber "ernst" nehmen kann man es meines Erachtens erst seit dem ISO-C++-Standard.



  • Prof84 schrieb:

    1. Direkt code ich schon lange nicht mehr nativ. Bei mir ist heute alles modellgetrieben. C++, Java oder C# nur noch mit Codegenerator.

    Sehr interessant! Ich setze mich derzeit auch ein wenig mit MDA auseinander, leider befinde ich mich noch im Anfängerstadium. Kannst Du Case-Tools empfehlen die Ihr Geld Wert sind? Hast Du gute Bookmarks bzw. Literatur zu diesem Thema?



  • Ein Projektleiter schrieb:

    inwiefern war das jetzt eine antwort auf die frage ?

    Ok!

    Die Wahl der Programmiersprache wird getroffen aufgrund von:

    1. technischen Anforderungen - Einsatzgebiet der Software, Toolunterstützung, verfügbare Experten, Entwicklungsdauer, Flexibilität bei der Änderung, ...
    2. Entwicklungsaufgabe - im Finanzsektor ist Java recht etabliert, für Steuerungssoftware C++ und im MS Umfeld ist c# der Hype.Dies aus technischen Gründen. Aber es existiert keine zwingende Signifikanz der Technologie.
    3. Altbestand - Existiert schon eine Lösung? In welcher Sprache ist die geschrieben? Können wir einen Sprachenwechsel vornehmen? Schnittstellen implemtieren?....
    4. Paradigmen - Objektorientierung, Serviceorientierung, Aspektorientierung, Produktlinien, Modell-getrieben, Ereignis-getrieben etc. Welches Paradigma wollen wir etablieren und in wieweit unterstützt dies unsere Sprache?
    5. Welche Fertigsoftware möchte ich im Unternehmen nutzen und in wieweit unterstützen diese die Sprachen?
      etc.

    D.h.: Die Entscheidung sollte nach einer sinnvollen Konzeption getroffen werden und nicht nach einer Umfrage im Internet. 😉



  • @Prof84 schrieb:

    Prof84 schrieb:

    1. Direkt code ich schon lange nicht mehr nativ. Bei mir ist heute alles modellgetrieben. C++, Java oder C# nur noch mit Codegenerator.

    Sehr interessant! Ich setze mich derzeit auch ein wenig mit MDA auseinander, leider befinde ich mich noch im Anfängerstadium. Kannst Du Case-Tools empfehlen die Ihr Geld Wert sind? Hast Du gute Bookmarks bzw. Literatur zu diesem Thema?

    Möchtest Du als Student den kommerzielle Lösungen einsetzen?

    Hier ist mal ein kleines Arbeitspaket
    http://modelware-ist.org/
    Schau Dir zuerst die Videos an. Brauchen Flash, xDSL und Ton.

    http://www.eclipse.org/modeling/
    http://www.eclipse.org/gmt/oaw/
    http://www.software-families.org/slides/voelter.pdf

    http://www.software-families.org/programm.html
    http://se-radio.net

    Aber vielleicht möchtest Du mit erst mal mit DSM anfangen:
    www.metacase.com
    Lade Dir mal Metaedit+ runter (30 Tage trial)
    oder
    http://www.isis.vanderbilt.edu/projects/gme/

    Kommt man schneller zu Resultaten.

    Reicht erst mal für den Anfang.



  • Prof84 schrieb:

    ... in der DB wäre ich der 168te den er anruft.

    In der Deutschen Bahn? 😕 😉



  • Prof84 schrieb:

    Im Embedded Bereich ist C++ immer noch die erste Wahl. Oder generell in der hardwarenahen Umgebung.

    wieder einer, der C nicht von C++ unterscheiden kann 🙄



  • vista schrieb:

    Prof84 schrieb:

    Im Embedded Bereich ist C++ immer noch die erste Wahl. Oder generell in der hardwarenahen Umgebung.

    wieder einer, der C nicht von C++ unterscheiden kann 🙄

    Wieder so einer, der nicht weiß, dass man C++ auch embedded einsetzen kann. 🙄



  • Bei normalen Desktop-Anwendungen ist zum einen eine gute Integration in die Umgebung des Benutzers wichtig. Da kann Java nicht mithalten. Java ist eben unter jeder Umgebung fremd. Außerdem hat Java einen ganz klar höheren Speicher-Verbrauch und teilweise ein langsames verhalten. So sind zumindest meine Erfahrungen und wenn ich auf einem 1GB-Rechner warten muss, bis sich ein Dialog aufgebaut hat und ich ihn wegklicken kann, ist das sehr schlecht. Oder die ganzen VM-Installations Angelegenheiten. Das ist eben nichts für DAUs. Daher wird sich Java wohl nie im Desktop-Bereich durchsetzen.

    Das war bis jetzt die unquilifizierste Bemerkung im ganzen Thread. Was brauchen den GUI-Anwendungen für eine Intergration? Das einzige was diese GUI-Anwendungen brauchen ist die Zwischenablage. Mehr nicht.

    Eine Java Anwendung hat normalerweise eine sehr gute Perfomance, oder du hast bis jetzt mit sehr schlecht programmierten Anwendungen gearbeitet. VisualParadigm ist z.B. eine Java-Anwendung und arbeitet sehr flott bei sehr vielen Features.

    VM-Installations-Angelegenheiten? Was gibt's da für welche? Du lädts dir aus dem Internet eine 50 Megs große Installationsdatei runter und das wars. Damit läuft dann jede Java-Anwendung. Die Jar-Datei kannst du unter Windows danach mit einem Doppelklick ausführen, der DAU merkt gar nicht das es eine Jar Datei ist und keine Exe, weil Windows als Standard die Dateierweiterungen nicht anzeigt. Du brauchst bei kleinen Programmen nichts zu installieren sondern kannst die Jar überall ausführen. Ausserdem funktioniert die Anwendung unter jedem System der die JVM installiert hat.

    Meine letzte geschriebene Java-Anwendung läuft problemlos auf Linux, WindowsXP, und Vista (wahrscheinlich auch unter allen anderen Systeme für die es eine JVM gibt), ohne etwas neu kompelieren zu müssen oder überhaupt irgendwas daran zu ändern. Ist eben eine 100% GUI-Anwendung (aber schon komplexer als ein Terminplaner :p )

    Kannst dir gerne runterladen:
    http://www.globalscaling.de/index.php?option=com_content&view=category&layout=blog&id=7&Itemid=7
    und dann auf Software: Global Scaling Rechner

    Ich verstehe auch nicht wieso ständig propagiert wird das Java-Anwendungen generell viel Speicher verbrauchen. Die JVM wird unter allen Anwendungen geteilt und der erzeugte Code kann auch nicht größer sein als ein C++-Programm. Wenn sich jemand über den großen Speicherverbraucht aufregt, dann sollte man die ganzen Bibliotheken die ein C++-Programm benötigt bitte auch in die Rechnung einfließen lassen und dies bei C++-Programmen nicht außenvor lassen.



  • DEvent schrieb:

    Die JVM wird unter allen Anwendungen geteilt und der erzeugte Code kann auch nicht größer sein als ein C++-Programm.

    😕 Meist du die java.exe oder was? Jedes Java Programm das läuft hat doch seine eigene VM. Da würde ja keine Java Programm mehr funktionieren, wenn eines mal nen OutOfMemoryError hatte.



  • Hm zum Thema Integration

    Eine SWING - Anwendung sieht bei mir wie eine SWING-Anwendung aus und nicht wie eine GNOME / KDE / Win32 - Anwendung. Von Integration kann man da wohl kaum reden und ich persönlich finde das stören.

    P.S.: Ich weis, dass Java != SWING und dass man mit Java auch Programme schreiben kann, die sich tatsächlich Integrieren 😉



  • Jester schrieb:

    vista schrieb:

    Prof84 schrieb:

    Im Embedded Bereich ist C++ immer noch die erste Wahl. Oder generell in der hardwarenahen Umgebung.

    wieder einer, der C nicht von C++ unterscheiden kann 🙄

    Wieder so einer, der nicht weiß, dass man C++ auch embedded einsetzen kann.

    naja, es geht schon, aber die aussage von Prof84 "Im Embedded Bereich ist C++ immer noch die erste Wahl. Oder generell in der hardwarenahen Umgebung" ist einfach falsch. das lässt mich vermuten, dass C und C++ hier gleichgesetzt wurden...
    🙂



  • darthdespotism schrieb:

    Eine SWING - Anwendung sieht bei mir wie eine SWING-Anwendung

    meine Swing (es gibt kein SWING, was meinst du damit?) Anwendung sieht hübsch aus, und ist von einer winapi anwendung nicht zu unterscheiden !?
    im übrigen ist das argument "java/swing ist scheiße weil sieht nicht wie windows aus" mit verlaub dummfug 👎
    die meisten anwendungen sehen nicht "wie windows aus". kurze beispielliste:
    - firefox
    - trillian
    - winamp
    - photoshop (und alle anderen adobe produkte auch)
    - ms office, ms media player
    - dreamweaver
    - opera
    alle scheiße 👎 👎 👎



  • Vista! Nö, es lässt nur vermuten, das C++ so langsam C im Embeddedbereich eingeholt hat - nicht mehr und nicht weniger.

    Devent! SWING ist genial zum Programmieren (ich finde die Swing-Lib genial um meine GUIs zu bauen). Aber unter Integration verstehe ich was anderes. Oder warum gibt es SWT? Genau deshalb, weil man mit SWT halt doch die nativere GUI in Java hinbekommt. Wir haben mal einem Großprojekt unser Java-Eclipse-Framework gezeigt, weil sie von Smalltalk auf Java umsteigen wollten. Als wir in der Präsentation von Swing-Desktop anfingen, haben die gleich abgewunken und gemeint, sie können mit Swing nichts anfangen. Solange wir kein SWT haben, hat unser Framework keine Chance. Denn aus anderen Swing-Projekten haben sie negative Erfahrung gemacht. Yo... und das war vor 2 Monaten.


Anmelden zum Antworten