Bekannte in Java geschriebene Software?

[QUOTE=Pest]naja, ist c++ nicht eigentlich viel plattformunabhängiger als java, da es keine jvm braucht? sogar die jvm ist in c++/c geschrieben worden und ohne die sandbox würden java doch nirgendswo laufen? . :reflect:[/QUOTE]Um das zu erörtern, ist dieses hier denk’ ich der falsche Thread, evtl. mal in 'nem neuen Thread einfach nachfragen. Es stellt sich nämlich die Frage, was plattformunabhängig sein soll, der Quelltext oder der kompilierte Code.

[QUOTE=SpaceFiller]C++ hat den Ruf besonders Performant zu sein, was natürlich für z.B. 3D- Spiele eventuell notwendig ist.
Trotzdem hat Java(VM) ganz schön zu gelegt und ich würde sagen es lassen sich mit Java ebenso Apps erstellen, die hohe Anforderungen haben.

Mit c++ kannst du aber sehr Hardware nahe programmieren, und bist nicht auf die JavaAPI angewiesen.
Gruß[/QUOTE]

Aber firefox, google chrome, adobe reader etc sind keine aufwändigen 3D Spiele. Wieso werden diese Programme trozdem in C++ geschrieben?

Mich intressiert das Thema auch und ich habe den Eindruck (oder es ist sogar denke ich Fakt), dass die meisten bekannten Anwendungsprogramme (für Windows) in C/C++ geschrieben sind. Die wirklich bekannten Programme, die in Java geschrieben sind, kann man eigentlich an einer Hand abzählen.

Oder ist hier einfach der Grund, dass Softwarehersteller ihre Software auf möglichst vielen Geräten lauffähig machen wollen und dies eben u.a. nur dadurch erreicht werden kann, indem man die Programme möglichst performant programmiert (mit C/C++)?

Oder weil die Entwickler einfach Bock auf C/C++ hatten.

Im Falle von Browsern eher die Browserengine die mehr Low Level Sachen macht als einfach mit Java nativ möglich ist.

[QUOTE=TheDarkRose]Oder weil die Entwickler einfach Bock auf C/C++ hatten.

[/QUOTE]

Dann scheint C/C++ aber wirklich wesentlich beliebter (zumindest was bekannte Anwendungsprogramme angeht) als Java zu sein. Die Liste kann man beliebig fortführen:

  • ImgBurn
  • Skype
  • Filezilla
  • Teamspeak
  • VLC Player
  • CC Cleaner
  • WinRar
  • 7zip
  • Gimp (in C)
  • Notepad++

Alles in C++ geschrieben. Das sind jetzt die Programme, die mir auf Anhieb eingefallen sind.

Ich kann mir nicht vorstellen, dass der einzige Grund ist, weshalb die meisten bekannten Programme in C/C++ geschrieben sind, der ist, dass die Entwickler Lust auf C/C++ hatten. Zumal C++ auch nicht gerade den Ruf hat leicht/angenehm zu sein.

Oder ist es wirklich einfach nur der Punkt, dass sich die Firmen sagen “Unsere Software soll auf sovielen Geräten wie möglich laufen -> Software muss so performant wie möglich werden -> Nur C/C++ kommen in Frage”?

Das liegt vor allem daran wie alt die Wurzeln dieser Programme schon sind.
Chrome verwendet als Renderingengine Webkit was ein Fork von KHTML ist. KHTML ist schon seit 1998 in Entwicklung. Firefox verwendet die Gecko Engine die 1998 als Überarbeitung der alten Engine vom Netscape Browser enstanden ist. Der Adobe Reader geht sogar bis auf 1993 zurück. Die erste Version von Java die dank JIT Compiler von der Performance überhaupt erst in die Nähe von C++ kommen konnte kam aber erst 2 Jahre später. (Version 1.3) Vorher war die Performance von Java im Vergleich zu C++ einfach deutlich zu schlecht.

Die Gründe sind ziemlich unterschiedlich. Mit einer wohl der größten oder stärksten Gründe ist die Tatsache, dass viel Software einfach Alt-Software ist und eben nicht auf Java portiert wird (warum auch). Performance war früher Kritikpunkt Nummer 1 an Java. Diese Situation hat sich zwischenzeitlich glücklicherweise stark geändert, aber dennoch ist das für viele Leute ein Argument. Gerade Anfänger machen oft diesen Fehler die Schuld für ein langsames Programm in der Performance von Java zu suchen, weil der gleiche Code in C++ doch so viel schneller ist. Schlechte Programmierung ist immer unperformant, auch in Sprachen wie C und C++. Man muss also dann schon wissen, wieso die Performance so stark enbricht und die Unterschiede der Sprachen kennen, um dem entgegen zu wirken und nicht einfach irgendwas behaupten. Dann ist sicherlich noch die Tatsache, dass sowohl Java als auch .NET bei vielen Entwicklern (und sicherlich auch Betrieben) nicht gern gesehen sind und schon deshalb rausfallen. Zum Teil sind uralte Gerüchte und Vorurteile daran schuld, zum anderen falsches und gefährliches Halbwissen und sicherlich auch noch andere Gründe. Es mag auch sein, dass man sich in C/C++ so wohl fühlt, dass man keine andere Sprache verwenden möchte. Ein anderes Argument könnte die hardwarenahe Programmierung sein. In rund 99,99% aller Fälle, in denen die Leute mir versucht haben das weiß zu machen, war das Argument völlig für die Tonne. Es gibt Software, wo das natürlich nötig ist, Brennprogramme, eigene Treiber, Hooks, sonstige native Unterstützung, die es bislang mit Java so noch nicht gibt. Die Browser-Engines können inzwischen z.B. auch Hardwarerendering anbieten. Aber das, was der normale Hobbyprogrammierer in der Regel programmiert, ist weit weg von jeglicher Hardware und sogar von speziellen OS-APIs. Und bei sowas zieht das Argument einfach nicht und ist nichts weiter als das Nachgeplapper von anderen, die vielleicht ähnlich unwissend sind. Und es gibt noch etliche weitere Gründe. Im Server- und Service-Bereich ist aber hingegen Java nach meiner subjektiven Einschätzung deutlich stärker vertreten als sonst irgendeine Sprache, wobei ich das jetzt mal ein wenig differenziere und nicht mehr von der Sprache Java rede, sondern von der JVM bzw. dem Ökosystem, denn auf der JVM laufen noch andere Sprachen als nur Java. Es gibt jede Menge Frameworks, die speziell für diese Bereiche optimiert und sehr leistungsfähig sind und wohl der wichtigste Punkt dabei ist, dass es die Communities dafür gibt. Das gesamte Ökosystem von Java ist einfach riesig und im Gegensatz zu vielen anderen Ökosystemen lebt das Ökosystem von Java und entwickelt sich Tag für Tag weiter. Im Grunde führt das aber eigentlich eher in Richtung Philosophie, Glaube (ja, diese Glaubenskriege gibt es in nahezu jedem Forum), etc., denn wirklich beweisen kann hier vermutlich niemand etwas (ich jedenfalls kann es nicht). Für mich persönlich ist Java keine Hintergrunderscheinung und welche Software bekannt ist oder nicht, ist zum Teil auch eine subjektive Einschätzung, denn ob man eine Software als bekannt oder unbekannt einstuft, hängt auch davon ab, ob man sie selbst benutzt oder nicht. Irgendwie erinnert mich das gerade an eine Frage, die Linus Torvalds gestellt wurde, warum Linux auf dem Desktop keine Verbreitung findet oder unbeliebt ist. Torvalds hat mit der Entwicklung von Linux eigentlich ursprünglich ein Desktop-System angestrebt, aber auf dem Desktop ist Linux nicht sonderlich stark verbreitet, dafür aber überall anders, auf Servern, auf Smartphones, auf Handys, auf embedded Systemen jeglicher Art und und und. Und so kommt mir das auch ein bisschen mit Java vor. Es hat auf dem Desktop für viele keine große Bedeutung, in anderen Bereichen aber dafür umso mehr, selbst auf Sim-Karten oder Bank-Karten läuft eine JVM, im Server-Bereich sowieso. Aber wie gesagt, das schweift schon in eine philosophische Richtung ab. Es gibt Bereiche, wo es Sinn macht die Software mit C oder C++ zu schreiben, bei “normaler” Anwendersoftware ist das aber eigentlich egal und wieso es viel Software in C/C++ gibt, darüber kann man im Endeffekt eigentlich nur spekulieren. Aber die wohl stärksten Argumente in meinen Augen sind einfach Altlasten (alte Software), persönlicher Favorit, Firmen-/Projekt-Philosophie/-Vorgabe/-Politik und schlichtweg Unwissenheit oder Vorurteile. Der Punkt mit den speziellen Anforderungen zieht inzwischen nur noch selten, das ist als in der Masse eher kein Argument mehr. Und das sagt jemand, dessen erste Sprache C war und der auch C++ kann. Dennoch ist meine primäre Sprache Java geworden.

whau - jetzt noch mit einer passenden Formattierung und den Text kann man lesen…

Keine Zeit dafür gehabt :stuck_out_tongue:

[QUOTE=Akeshihiro]Die Gründe sind ziemlich unterschiedlich. Mit einer wohl…(alles zu zitieren ist Platzweschwendung)[/QUOTE]Ahh, ein Konvertit :lol:. Die können wohl am besten beurteilen, warum sie nun Java als Primärsprache nutzen und zwar ohne das sie sich auch einen “Glaubenskrieg” einlassen müssen. Darf man fragen, warum du nun Java favorisierst? Ich frage nur interessehalber, evtl. stimmen deine Gedanken ja mit meinen überein.

Ich frage mich seit geraumer Zeit schon, ob es überhaupt noch zeitgemäß ist, Sprache und Zielplattform immer in einen Topf zu werfen. Wenn es entsprechende Kompiler gäbe, könnte man nämlich, wenn mans genau nimmt jede Sprache auf ein beliebiges System portieren, auch wenn man nicht viel Nutzen daraus ziehen kann. Programmiersprachen sind nun mal portabel, im Gegensatz zu den Produkten der jeweiligen Kompiler und genau da liegt der Ansatz von virtuellen Maschinen bzw. Prozessoren. Ist zumindest schon mal ein gravierender Unterschied, ob für die Verwendung einer Software nur noch eine Runtime-Lib oder virtuelle Maschine erforderich ist, statt ein komplett anderes Beriebssystem.

Naja, also anfangs war es nur, weil wir im Fachabi Java benutzt haben. Mich hat die Sprache auch vorher schon irgendwie gereizt, aber bin nie dazu gekommen mich damit mal zu beschäftigen. Eigentlich mag ich C++ noch immer und spiel damit auch ab und an rum, um nicht alles zu vergessen, aber auch wenn es mehr Aufwand ist und man ein paar Sachen beachten muss, so ist es dennoch eine schöne Sprache (zumindest wenn man sie eine schöne Sprache sein lässt). Wobei ich diesen Zusatzaufwand wieder eher als Stärke sehe, aber eben nur, wenn man sich dessen auch bewusst ist und diese Features bewusst einsetzt. Viele Features werden aber nicht sinnvoll genutzt, sondern oft einfach nur, weil es sie gibt und man meint sie unbedingt benutzen zu müssen, z.B. Operator-Overloading oder typedef. Hardwarenahe Programmierung fällt ja in den meisten Fällen ebenfalls flach, Pointer sorgen oft für mehr Stress als nötig, weswegen in C++ dann auch Referenzen hinzu kamen. Im Normalfall braucht man das alles aber nicht und es ist viel angenehmer in Java zu programmieren oder zumindest stressfreier in so mancher Hinsicht. Mich hat auch gleich von Anfang die Ordnung und Strucktur von Java fasziniert, speziell die Packages und die Namenskonventionen. Das alles fühlt sich sehr viel flüssiger und sauberer an und man kann sich in nahezu jedem Projekt daran orientieren. Irgendeine Ordnung findet man immer wieder. Kenne ich trotz Namespaces in C++ so nicht und in C schon gar nicht. Aber nicht nur die Packages haben mich mitgerissen, sondern auch die Tatsache, dass man in der Java-Welt versucht sauberen Code zu schreiben und sich zumindest grob an Konventionen hält. Die von Sun veröffentlichten Konventionen sind zwar keine offiziellen Java-Konventionen, sondern waren Sun-intern, aber dennoch hält sich der Rest der Welt zumindest grob daran oder orientiert sich daran. Man versucht eher auf lesbaren und sauberen Code zu setzen, der durchdacht ist, als irgendwelchen kryptischen Mist zu hinterlassen. In C++ ist das nicht ganz so schlimm, aber gerade in C ist das grausam, gerade bei Namen für so ziemlich alles und die Hardcore-C-Gurus machen umso mehr Blödsinn, so kommt es mir zumindest vor. Natürlich ist Java nicht perfekt und es ist nicht alles so toll, selbst die Java-Entwickler haben hier und da einiges vermurkst, aber ich finde es fühlt sich dennoch irgendwie sauberer, flüssiger und reiner an als ich das von C und C++ bislang kennengelernt habe und das betrifft sowohl die Standard-Libs als auch externe Libs und anderweitige Projekte.

Die Plattformunabhängigkeit hingegen war für mich gar nicht mal so sehr entscheidend oder ein Kriterium, denn der Code ist prinzipiell auch plattformunabhängig, man muss nur eventuell auf andere Libs setzen oder gewisse Dinge beachten, wenn man z.B. auf OS-APIs zurückgreifen muss. Ist wieder ein Mehraufwand, aber möglich.

Dann natürlich noch die Comminities. Bei Java findet man eigentlich immer irgendeine Lösung für sein Problem. Auch C und C++ haben ein großes Ökosystem, aber in meinen Augen eben nicht vergleichbar mit dem von Java. Was in der Java-Welt in den letzten paar Jahren alles passiert ist, ist eigentlich unbeschreiblich und bislang ist kein Ende in Sicht.

Da haben sicher auch noch andere Dinge eine Rolle gespielt. Aber seien wir doch ehrlich, wir sind doch im Endeffekt alle faul, ganz egal wie viel Spaß dieses Rumgefrikel auch machen mag :wink: Im Endeffekt wollen wir alle uns möglichst gar nicht um die Umgebung kümmern, möglichst kompakten, sauberen und verständlichen Code produzieren. Wie heißt es so schön: Die beste Zeile Code ist die, die man nicht tippen muss. Scala z.B. macht es einem möglich durch die funktionale Programmierung sehr kompakten und auf den Punkt gebrachten Code zu schreiben. Java als Sprache ist inzwischen sehr in die Jahre gekommen, entwickelt sich zwar immer noch weiter und versucht wieder Anschluss an die heutige Zeit zu finden, aber je nach Anwendungsfall können Groovy oder Scala die bessere Alternative sein. Da am Ende wieder Bytecode für die selbe JVM entsteht, kann man die Kompilate auch in anderen Sprachen kreuz und quer nutzen, was wieder diverse Möglichkeiten bereit stellt, z.B. neue Module oder bestimmte Module in einer anderen Sprache zu implementieren, die dafür besser geeignet ist und das Modul dennoch in der alten auf Java basierenden Anwendung einzubinden ohne die gesamte Anwendung portieren zu müssen.

Was Anfangs nur mit Neugier, zum Teil Faulheit und die Faszination für Ordnung und Struktur anfing, hat sich im Laufe der Jahre zu wesentlich mehr entwickelt und für mich persönlich war die Entscheidung für die JVM nach momentanem Standpunkt definitiv kein Fehler. Es ist nicht alles perfekt, wird es auch nie sein und was in 10 Jahren sein wird, werden wir sehen, aber im Moment ist die JVM ein riesen Ding mit vielen Möglichkeiten und gewaltigem Ökosystem und so wie es derzeit aussieht, wird sich daran so schnell nichts ändern, es wird eher noch gewaltiger und mächtiger werden. Ob Java den Desktop erobern wird (vor allem da jetzt ja alle auf diese Web-Apps scharf sind), weiß ich nicht. Ich weiß aber, dass viele Cobol-Programme nach Java portiert werden und wer weiß, andere Sprachen kommen vielleicht auch noch und im Backend ist Java ja sowieso schon sehr stark vertreten. Für mich ist auch gar nicht mal die Frage nach der Sprache entscheidend, ich könnte auch in anderen Sprachen programmieren, wenn ich müsste, denn es kommt immer auf den Sinn und Zweck an und wie man das optimale Ergebnis erzielen kann. Darum mag ich diese Glaubenskriege auch nicht. Jede Sprache hat ihre Berechtigung und ihre eigene Philosophie, die man verstehen und anzuwenden wissen muss. Wie war das? Man kann in jeder Sprache Fortran programmieren :smiley: http://www.leo.org/information/freizeit/fun/pascal.html Die JVM hat mich jedenfalls in ihren Bann gezogen ich glaube so schnell wird sich das nicht ändern.

Mist, eigentlich wollte ich nicht so viel schreiben … Aber ich glaub ich lass es mal stehn, wir sind hier inzwischen eh schon Offtopic :smiley:

PS: Diese Behauptungen sind meine subjektiven Wahrnehmungen und keine wissenschaftlich oder statistisch bewiesenen Fakten. Also wer andere Eindrücke hat oder was beweisen kann, immer her damit ^^ Für den Rest ist das Zerfleischungs-Buffet eröffnet :smiley:

C und C++ sind zwei Sprachen, nicht eine.

Wenn man sich dann so Beitraege von Linus Torvalds durchliest, wie diesne hier zB.: Linus Torvalds on C++
… kommt man schnell zum Schluss das vieles schlicht persoenliche Vorlieben sind die religioeus verteidigt werden.

Habe selber schon Diskussionen am Mittagstisch erlebt ala „wozu muss man Objekt Orientiert programmieren, diejenigen die wissen was sie tun, koennen alles auch in C machen anstatt in C++“… vor 30 Jahren gab es uebrigens sehr aehnliche Diskussionen, „Wozu braucht man C? Diejenigen welche wissen was sie tun, kommen sehr gut mit Assembler zurecht…“

Alles in allem muss man aufpassen bei Aussagen/Fragen welche Sprache die beste ist…

Ja, das klingt nach Torvalds :smiley: Aber darum sag ich ja, diese Glaubenskriege sind Schwachsinn. Soll jeder benutzen was er will und alle sind glücklich (oder auch nicht, wenn die Wahl falsch war). Probleme gibt es mit jeder Sprache, davon ist keine einzige befreit und man muss damit umgehen können.

[QUOTE=maki]Alles in allem muss man aufpassen bei Aussagen/Fragen welche Sprache die beste ist…[/QUOTE]Wieso? Eigentlich ists doch Klar… Die Sprache, die der Computer am besten versteht - Binärcode! Nur leider verstehen die wenigsten Menschen Binärcode, deswegen müssen sie sich streiten, welcher Dolmetscher der beste ist. MAW.: Was nutzt dir ein Deutsch-Russisch-Dolmetscher, wenn du nur Französisch kannst?

Kommt auch ein bisschen auf die Sichtweise an :wink: Der Computer versteht am besten Binärcode. Das wäre an sich auch noch ok, sofern man diesen als Mensch verstehen würde. Aber so programmieren würde ich dennoch nicht wollen, denn Computer sind dumm und können nur einen minimalistischen Prozessorbefehl abarbeiten und die sind nicht so geil :wink: Schleifen und Co gäbe es auch keine und so weiter. Ich denke für viele ist „besser“ nicht gleichzusetzen mit „computeroptimiert“. Darum haben wir ja diesen Haufen an Sprachen, Compilern und Interpretern. Jeder hat eine andere Vorstellung davon.

Mich intressiert das Thema “Meistverwendete Sprache für Desktop-Programme” insbesondere gerade deswegen, weil ich nach dem Studium eventuell in diesem Bereich einsteigen will. Und da ist dann die Frage, ob man da mit Java wirklich die besten Karten / größten Chancen hat oder ob man sich eher auf eine andere Sprache (z.b. C++ oder C#) konzentrieren sollte.

[QUOTE=Jack159]Mich intressiert das Thema “Meistverwendete Sprache für Desktop-Programme” insbesondere gerade deswegen, weil ich nach dem Studium eventuell in diesem Bereich einsteigen will. Und da ist dann die Frage, ob man da mit Java wirklich die besten Karten / größten Chancen hat oder ob man sich eher auf eine andere Sprache (z.b. C++ oder C#) konzentrieren sollte.[/QUOTE]Also die meistvervendete Sprache im Desktopbereich dürfte nach wie vor C++ sein. Allerdings zeichnet sich durch die fortgeschrittenen VM-Bytecode-Technologien (z.B. Java und C#) ein Trend ab, dass sie sich wegen der kaum noch vorhandenen Performanceunterschiede und der leichteren Erlernbarkeit (man wird z.B. nicht mit Pointern oder Speicherverwaltung belastet) nun auch im Desktopbereich etablieren und Assembler/C/C++ wirklich nur noch für Betriebssystemgrundstrukturen (also Treiber usw) verwendet wird.

Außerdem solltest du dich nicht zu sehr in eine Sprache verbeißen, damit kommst du nicht sonderlich weit. Die Wahl der Sprache wird dir schon dadurch abgenommen werden, weil du dich vermutlich nicht selbstständig machen wirst und eine Software von Grund auf ins Leben holst, sondern irgendwo in einem Betrieb anfangen wirst und somit ist die Wahl der Technologie ohnehin gegessen. Man sollte schon einen Favoriten haben, an dem man sich orientieren kann. Aber dann bitte aus persönlichen Gründen und nicht weil es andere so wollen oder es irgendwie zweckdienlich sein muss. Das alles kommt sowieso von allein, ob du willst oder nicht. Aber Spaß wirst du langfristig nur dann haben, wenn du etwas aus eigenem Antrieb und Interesse machst. Man muss sich privat nicht mit den selben Dingen beschäftigen, wie im Betrieb :wink: Wenn du im Betrieb C++ benutzen musst, schön. Zu Hause kann man sich dennoch mit einer anderen Sprache beschäftigen, die einem mehr zusagt oder Spaß macht. Programmieren beschränkt sich nicht nur auf eine Sprache :wink: Fang einfach mit irgendwas an, wovon du meinst, dass es dir zusagt anstatt nach der „besten“ oder „verbreitesten“ Sprache zu suchen.

Ich verdiene seit ca 5 Jahren mein guter Geld mit desktop Java Programmierung,egal wie das nun in der globalen Sicht steht.

Warum? Weil mir Java an meisten Spaß macht. Ich werde gewiss nicht etwas anfangen,nur weil es an meisten genutzt wird-

Für Industriesoftware ist Java auf dem Desktop sehr verbreitet. Für private Anwender und Programme wohl eher C/C++, weil viele Win User im private Umfeld sind…

Immer diese Diskussionen… Wir suchen zur Zeit black walnut Carpenter!