Haben die alten Widgets ausgesorgt?



  • Nur weil nicht jedes Mainstream-Desktop Programm in Java geschrieben ist sagt das mMn. nichts über die die Signifikanz der Sprache aus.
    Unsere Projekte sind groß genug und viele in Java. Allerdings kommt mit denen niemals ein Otto-Normal-User in Berührung.



  • Auskenner schrieb:

    Großprojekte wie z.B. Libre Office sind über 20 Jahre alt, die ersetzt man nicht einfach mal mit einem vergleichbaren Java Projekt und wenn der Bedarf durch alte Großprojekte gedeckt ist, dann gibt es auch keinen motivierenden Grund dafür, Alternativen in Java neu aufzusetzen.

    Ich weiß. Aber es gibt anscheinend auch keinen motivierenden Grund, neue Großprojekte in Java aufzusetzen. An solche Diskussionen kann ich mich persönlich seit mindestens 15 Jahren erinnern. Und in den letzten 15 Jahren hat sich nichts grundlegend zu Gunsten von Java verändert. Im Gegenteil, der Java Hype ist sehr stark abgeflacht.
    Und Minecraft hat man nicht in Java geschrieben, weil Java so toll wäre. Der Typ konnte halt nichts anderes und hat es damit in paar Monaten hingerotzt. Das ist jetzt wirklich kein Referenzprojekt.

    Ethon schrieb:

    Nur weil nicht jedes Mainstream-Desktop Programm in Java geschrieben ist sagt das mMn. nichts über die die Signifikanz der Sprache aus.
    Unsere Projekte sind groß genug und viele in Java. Allerdings kommt mit denen niemals ein Otto-Normal-User in Berührung.

    Nicht "nicht jedes", sondern kein einziges. Und die Diskussionen wurden wie gesagt schon vor 15 Jahren genauso geführt. Damals gabs einen viel größeren Java Hype und ganz neu war das auch nicht.
    Über die Relevanz der Sprache hab ich nicht direkt was gesagt. Du brauchst Java nicht zu verteidigen, ich habe wie gesagt auch lang genug mit Java und C# gearbeitet und habe damit kein Problem. Ich kenne diese "Individual Software" Branche ganz gut, und auch die Software, die da geschrieben wird. Ja, manchmal sind diese Projekte sehr groß und ab und zu auch teilweise interessant. Aber irgendwo auch sehr ähnlich, zu viele Standardteile, bei denen man nicht viel überlegen muss usw. Mir haben vier Jahre völlig gereicht, will damit erstmal nichts mehr zu tun haben.
    Darauf wollte ich jetzt aber auch nicht unbedingt hinaus. NiceJava kennt anscheinend einfach nichts anderes, und den will ich entschieden widersprechen. Es gibt sehr wohl sehr viele sehr große C++ Projekte und das ist keine "Ausnahme".



  • Mechanics schrieb:

    Auskenner schrieb:

    Großprojekte wie z.B. Libre Office sind über 20 Jahre alt, die ersetzt man nicht einfach mal mit einem vergleichbaren Java Projekt und wenn der Bedarf durch alte Großprojekte gedeckt ist, dann gibt es auch keinen motivierenden Grund dafür, Alternativen in Java neu aufzusetzen.

    Ich weiß. Aber es gibt anscheinend auch keinen motivierenden Grund, neue Großprojekte in Java aufzusetzen. An solche Diskussionen kann ich mich persönlich seit mindestens 15 Jahren erinnern.

    Großprojekte gibt es schon noch, es ist aber so wie Ethon gesagt hat.
    Der Normaluser wird die nicht zu Gesicht bekommen, es sei denn er arbeitet irgendwo, wo sie eingestezt werden.

    Ich bezog mich auf den einfachen Desktopuser Zuhause und da ist das dann halt so, dass es hier bereits gewachsene Projekte in anderen Sprachen meist gibt und deswegen keine neuen in Java entstehen, weil es schlichtweg nicht notwendig ist.

    Und in den letzten 15 Jahren hat sich nichts grundlegend zu Gunsten von Java verändert. Im Gegenteil, der Java Hype ist sehr stark abgeflacht.

    Der Hype ist abgeflacht, aber Java ist zur Normalität geworden.

    Und Minecraft hat man nicht in Java geschrieben, weil Java so toll wäre. Der Typ konnte halt nichts anderes und hat es damit in paar Monaten hingerotzt. Das ist jetzt wirklich kein Referenzprojekt.

    AFAIK entwickelte Notch schon länger Spiele, aber das war sein erstes dass er selbst entwickelte und nicht als Arbeitnehmer in irgendeiner Firma die ihm nicht gehört, wie es zuvor eben war.
    Ich gehe also davon aus, dass er mehr Sprachen als Java kennt. Aber es ist nunmal so, wie es hier im Thread herauszulesen ist.
    Wenn man ein sehr kleines Team hat und möglichst ohne großen Aufwand ans Ziel kommen will, dann nimmt einem Java so viel Arbeit ab, dass man mit seinem Projekt fertig werden kann.
    Deswegen hat er Java für Minecraft genommen.
    Er hätte auch C++ nehmen können, aber dann hätte er dafür wesentlich länger gebraucht. Insbesondere als 1 Mann Projekt, wie das am Anfang eben auch war.



  • Auskenner schrieb:

    Er hätte auch C++ nehmen können, aber dann hätte er dafür wesentlich länger gebraucht. Insbesondere als 1 Mann Projekt, wie das am Anfang eben auch war.

    Nö. Minecraft hat so viele Performaceprobleme, daß es schon nicht mehr ulkig, sondern bloß noch traurig ist. Die wenigstens so weit zu umschiffen, daß es halbwegs spielbar ist, hat den armen Mann sicher mehr gekostet. Auf meinem Rechner gehts immernochnicht. Der verfummelt die Mauspointerposition (vermute, er setzt immer wieder in die Mitte und bei jeder Mausmessage nimmt er die Differenz und setzt den wieder in die Mitte) und das klappt bei mir einfach nicht. Irgendwie ist er an der Java-Wand angekommen: Maschine zu weit weg, er kann die einfachsten Bugfixes nicht machen, weil er nur auf der VM dreht.
    Ja, man hat in Java sehr schnell einen grafischen Pythagorasrechner zusammen. Aber am Ende kanns Stocken. Hab mal 7 oder so Monate gearbeitet für 1 Monat Lohn, weils in Java nicht möglich war.

    Minecraft selber ist ein Kackspiel. Aber es ist durch Java unbeabsichtigt quasi Quelloffen und die Mods und Freeshards haben es grbracht. Klar mag man mal ein Atomkraftwerk bauen. 😃



  • Performance von Java für Dinge wie Spiele sollte sich gut verbessern wenn endlich Value-Typen kommen. Keine Ahnung warum man die jetzt erst bei C# klaut.
    Eine Katastrophe für einen Vektor den Heap bemühen zu müssen.



  • Zu der Minecraft Diskussion wollte ich mal diesen Link anbringen: http://www.minecraftforum.net/forums/mapping-and-modding/minecraft-mods/1272953-optifine-hd-a4-fps-boost-hd-textures-aa-af-and?page=2125#c43757

    In C++ haette man die Positionsdaten schoen uebersichtlich in Objekte und auch noch auf dem Stack speichern koennen und die Geschwindigkeit gehabt. Es wundert mich, dass das nicht optimiert werden kann, denn vor ein paar Jahren habe ich schon gelesen, dass Java Objekte mit beschraenkter Lebensdauer auf den Stack verschieben kann.



  • Marthog schrieb:

    denn vor ein paar Jahren habe ich schon gelesen, dass Java Objekte mit beschraenkter Lebensdauer auf den Stack verschieben kann.

    Ich hab glaub ich 1997 gelesen, daß Java prinzipiell so schnell wie C IST und es nur noch ein paar Monate dauert. Kann auch 1998 gewesen sein.
    Dabei ist mir das fast Schnuppe, so schnell wie die Rechner heute sind. Als Endanwender muss ich halt den Windows-Rechner anmachen, um was zu benutzen, was Java braucht. Das mache ich ungern.



  • volkard schrieb:

    Dabei ist mir das fast Schnuppe, so schnell wie die Rechner heute sind.

    Aus irgendeinem Grund sind die paar wenigen Desktop Javaprogramme, die ich kenne, immer noch lahm. Eclipse geht mittlerweile tatsächlich halbwegs, mit den modernsten Rechnern, aber trotzdem machts keinen Spass, das alles zu bedienen. Kann sein, dass es mit JavaFx besser geworden ist, da hab ich noch keine Real Life Anwendungen damit gesehen.



  • Großprojekte sind doch eher Nischen. Das ist wie beim Handwerk, die ganzen kleinen bis mittleren Klitschen machen den Löwenanteil aus. Android hat z.B einen Marktanteil von 85% in Deutschland und was meiste in was die meisten Apps programmiert sind? Das ist eine große Industrie mittlerweile geworden. Das Entwickler-Tagesgeschäft besteht doch zum großen Teil aus Programmen die wirklich niemand so im Internet runterladen kann, sondern die individuell bei ein paar Kunden läuft. Ich persönlich kenne ein BusinessBasic und eine Hostel-Verwaltungssoftware in Delphi. Das sind alles kleine Firmen mit 1-5 Mann, aber ich denke schon, dass dies eher der Alltag ist, als große Sachen wie ein Firefox, Photoshop usw. und Firmen in denen gleich 50 Leute an einem Projekt arbeiten.

    Dass Java nur auf Windows läuft ist Unsinn, hier unter OSX läuft es auch wunderbar(wenn man nicht gerade auf Mavericks oder Yosemite geupdatet hat^^) Zumal man jede Javaapp mit zwei Klicks mit einem ausführbaren Starter versehen kann und die JRE einfach mit ins Projekt einkopiert wird, das frisst ja alles heute kein Brot mehr.

    Zu den geilsten Javaprogrammen, der letzten Zeit gehört für mich Bitwig. Da stinkt Cubase richtig gegen ab in meinen Augen.

    Welche Individual-Software muss denn schon so nah an der Maschine dran sein, dass Java nicht reichen würde, außer irgendein Grafikgedöns? Was nun wirklich kein Tagesgeschäft ist.

    Wenn ich eine neue IT-Firma aufmache und Projekt-X an den Kunden bringen will, werde ich dann C++ als erstes in Betracht ziehen, oder werde ich nicht eher erst einmal schauen, ob das nicht mit einer weniger anspruchsvollen Programmiersprache umgesetzt werden kann?



  • Was ist denn an der Arbeit mit C++ besser, als an Java und C#? Mal abgesehen von der Performance und Systemnähe.



  • C++ ist imho einfach eine sehr lustige Sprache. Da macht mir das Programmieren Spaß.
    Java finde ich stumpf, bin aber auch deutlich produktiver damit.



  • NiceJava schrieb:

    Zu den geilsten Javaprogrammen, der letzten Zeit gehört für mich Bitwig. Da stinkt Cubase richtig gegen ab in meinen Augen.

    Das mag auch damit zusammenhängen, dass Bitwig seine eigene Java-Runtime an Bord hat, die für die in Java programmierte Oberfläche der Suite zuständig zeichnet. Alle Oberflächenelemente reagieren gefühlt ohne jede Verzögerung. Die eigentliche Signalverarbeitung – man merkt ihr an, dass sie sorgfältig für Linux optimiert wurde – übernimmt nicht etwa Java-Bytecode, sondern ein klassisches Binary.

    http://www.linux-community.de/Internal/Artikel/Print-Artikel/LinuxUser/2014/06/Bitwig-Studio-macht-Linux-zur-Musikworkstation

    Wenn ich was in C++ mache, fühle ich mich ehrlich gesagt 20-30 Jahre zurückversetzt. Nicht nur wegen Sprachelemente wie Header, sondern auch wegen dem rückständigem IDE-Support. (Intelligente) Codevervollständigung und Refactoring geht nirgends besser als in Java (und vll. noch C#). Auch die Libraries sind i. d. R. vielfältiger und moderner als in C++. Sowas wie Akka gab es für Scala/Java deutlich früher als das jetzige Prototyp in C++. Dafür ist die C++ Variante performanter...

    Ich hätte gerne die Performance von C++ und sowas modernes wie Scala. Ich denke rust ist so ein Kandidat. Wenn Apples Swift offen wäre, wäre es auch für die Welt interessant.

    L. G.,
    IBV



  • Artchi schrieb:

    XML/XAML ist jedenfalls nicht Human-readable.

    Es ist genauso lesbar/unlesbar wie HTML, und damit haben viele kein Problem. Des weiteren ist XAML kürzer als Sourcecode und kann sogar von der Implementierung unabhängig umgesetzt werden.

    Artchi schrieb:

    Ich kann an der XAML/FXML/HTML/XHTML-Seuche nichts tolles finden, wenn ich da als Mensch drauf schauen soll. Vorallem wenn bei XAML auch noch Code mit versteckt werden kann...

    Man kann Code einbetten, man muss es aber nicht (Es sei den du meinst mit verstecken das man den Code nicht sehen kann, das wäre aber nur typisch für Abstraktionsschichten - in meinem Fall ist der Code weitgehend* außerhalb der UI und unabhängig von der Oberfläche (ob nun WPF, Xamarin.Forms [Android, WP, iOS], WinRT...).

    * Ausnahmen sind ausschließlich die Initialisierung (Bootstrapper) und Code der rein von der UI abhängig ist, den bastle ich aber auch nicht in den XAML-Code.



  • Vor allem kann man doch das XML nutzen oder halt nicht. Man kann in FXML sogar Java direkt einbinden, oder auch Javascript. Man kann komplett auf FXML verzichten und es per Hand im Code mache, oder auch hier ein Teil XML ein Teil durch den Code generieren lassen oder oder oder. Man kann Propertys direkt mit Variablen im Java-Source-Code binden, oder es eben lassen und und und. Bei C++ wird doch immer hervorgehoben, dass man soviel Möglichkeiten hat eine Sache zu erledigen. Und wenn ein Teil in Java nicht schnell genug ist, dann lagert man diesen Teil halt in ein kleines Native-Binary aus. Wenn man nicht will, dass der Kunde was von Java mitbekommt, dann gibt man die JRE mit und wrappt alles und packt das in einen Installer. Der Kunde hat dann eine EXE als Installer und eine EXE um das Programm zu starten und muss kein Java installiert haben, aber es läuft. Und wenn mal der eine oder andere Entwickler, der noch C++ kann, weg stirbt, dann findet man schwer Ersatz. Bei Java kannst du sogar irgendeinen Entwickler nehmen und ihm in einem halben Jahr Java einprügeln, bei C++ ist das nicht möglich, da braucht es Jahrelange Erfahrung bis da mal jemand wirklich einsatzbereit ist.



  • NiceJava schrieb:

    Bei Java kannst du sogar irgendeinen Entwickler nehmen und ihm in einem halben Jahr Java einprügeln, bei C++ ist das nicht möglich, da braucht es Jahrelange Erfahrung bis da mal jemand wirklich einsatzbereit ist.

    na doch.

    Wieso auch nicht, was der neuling in einem halben jahr in java lernt hat er in einem halben jahr auch in C++ gelernt, nur dass er bei C++ sogar noch den Vorteil hat das OOP-Geschiss ignorieren zu können.



  • NiceJava schrieb:

    Bei Java kannst du sogar irgendeinen Entwickler nehmen und ihm in einem halben Jahr Java einprügeln, bei C++ ist das nicht möglich, da braucht es Jahrelange Erfahrung bis da mal jemand wirklich einsatzbereit ist.

    Was?! 😮 Wie kommst du darauf?! Was macht C++ so komplex, dass man Jahre braucht bis man einsatzbereit?



  • NiceJava schrieb:

    Bei Java kannst du sogar irgendeinen Entwickler nehmen und ihm in einem halben Jahr Java einprügeln,...

    Stimmt, dies ist auch ein wesentlicher Grund für die vielen tollen Anwendungen, die besonders träge sind oder gerne NullPointerExceptions produzieren...

    NiceJava schrieb:

    ...bei C++ ist das nicht möglich, da braucht es Jahrelange Erfahrung bis da mal jemand wirklich einsatzbereit ist.

    Ich habe bislang kaum eine Sprache erlebt wo ein wirklich gutes Ergebnis von Personen kommt, die mal eben eine Sprache gelernt haben. C++ mag komplex sein (selbst wenn man Templates nur nutzt und nicht selbst erstellt), doch man lernt mit C++ wenigstens auch etwas Interna, die einen Entwickler wenigstens weiterhelfen wenn er verwundert in anderen Sprachen so etwas wie NullPointerExceptions bekommt...



  • NiceJava schrieb:

    Großprojekte sind doch eher Nischen. Das ist wie beim Handwerk, die ganzen kleinen bis mittleren Klitschen machen den Löwenanteil aus. Android hat z.B einen Marktanteil von 85% in Deutschland und was meiste in was die meisten Apps programmiert sind? Das ist eine große Industrie mittlerweile geworden. Das Entwickler-Tagesgeschäft besteht doch zum großen Teil aus Programmen die wirklich niemand so im Internet runterladen kann, sondern die individuell bei ein paar Kunden läuft.

    Und ich habe versucht, dir klarzumachen, dass das nicht stimmt. Es wird wohl sicherlicht mehr kleine als große Projekte geben, aber die großen Projekte sind keine Nischen. Selbst wenn die insgesamt nur 10% ausmachen sollten, sind es trotzdem keine Nischen. Und ich könnte mir durchaus vorstellen, dass es mehr als 10% sind.
    Auch bei Individualsoftware wird sehr viel C++ verwendet. Individualsoftware ist ja nicht durchgehend Enterprise mit Java. Unsere Software wird auch kein Endbenutzer jemals irgendwo runterladen oder kaufen können, wir machen Branchensoftware in CAD/PDM Bereich. Auch das ist ein sehr großes C++ Projekt.
    Außerdem interessiert mich nicht, was die meisten anderen machen und mich wunderts, dass du so viel Wert drauflegst. Ich würde es z.B. sehr viel interessanter finden, an Photoshop oder eher einem größeren CAD System mitzuarbeiten (passt besser zu dem, was ich grad mache), als irgendwo in einer 5 Mann Firma die nächste Vertreterprovisionierung in Java zu schreiben. Wenn 90% der Entwickler das machen und nur 10% an großen, interessanten Projekten mitarbeiten, dann will ich zu diesen 10% gehören. Und selbst wenns nur 5% wären. Und ich hab eine entsprechende Stelle ja auch gefunden und musste nicht mal lang suchen. Die großen Projekte gibts eben nicht nur bei den paar ganz großen Firmen, wie du dir das anscheinend vorstellst.

    Die Android Apps seh ich sowieso als Ausnahme... Ja, da wird sehr viel in Java entwickelt. Aber das meiste davon sind schon mal Amateurprojekte, prozentual werden nur ganz wenige Apps von Firmen entwickelt. Und wir entwickeln unsere Apps z.B. auch wieder in C++ und nicht in Java.

    NiceJava schrieb:

    Was ist denn an der Arbeit mit C++ besser, als an Java und C#? Mal abgesehen von der Performance und Systemnähe.

    Schwer zu beschreiben, zumindest für mich... Ich fühl mich in C++ einfach freier und flexibler. Der Umgang mit Value Types ist viel einfacher und natürlich, als in C# (in Java gehts ja überhaupt nicht, und da kann man nicht mal Operatoren überladen, was die Sprache noch hässlicher macht). RAII und Destruktoren finde ich wichtig, die kann man auch in sehr vielen Konstrukten einsetzen, wo man irgendeine Art von Scope braucht. Auch mit Templates kann man eben sehr viele nette Konstrukte kreieren, die auch noch typsicher sind. Grundsätzlich kann man Code schreiben, bei dem zur Kompilierzeit mehr geprüft und mehr Fehler abgefangen werden, als bei Java. Nur paar Punkte, die mir spontan einfallen.
    Und andersrum gefragt, warum braucht man Java? Ich weiß, es gibt durchaus genug Projekte, bei denen ich selber Java bevorzugen würde. J2EE gefällt mir eigentlich ganz gut für Intranets. Aber wenn man mal Desktopsoftware betrachtet (und ich meine nicht unbedingt das, was man irgendwo im Laden kaufen kann, kann natürlich Individualsoftware sein), was gibt es schon großartig für Gründe, sich bei einem großen neuen Projekt für Java statt C++ zu entscheiden? Ich kann mir kaum vorstellen, warum man das machen sollte.



  • Wo ist das ganze Drumrum zu C++, was andere Sprachen wie Java, PHP, C# usw haben? Wo sind die deutschen Fachzeitschriften, Blogs, Podcasts, Best-Practice-Artikel, gute Fachbücher sind ja auch rar gesät. C++ sieht von außen betrachtet nicht nach einer aktuellen modernen Sprache aus, sondern nach einem akademischen komplizierten Monster, eben weil das ganze Drumherum fehlt, was alle anderen Technologien haben. Ja ich glaub selbst Ruby hat eigene Fachzeitschriften. C++ wird doch den Einsteigern überhaupt nicht schmackhaft gemacht. Der Schrecken von C++ wird keinem Anfänger genommen. Das könnte anderes, sein wenn es viel mehr Artikel, Videos etc dazu geben würde. Das kann auch ein Grund sein, warum viele C++ nach ein paar Gehversuchen wieder in die Tonne kloppen.

    Was haben die User anstelle? An uraltes Forum wie dieses hier, wo oft auch der letzte, der es gut mit C++ meint, auseinander genommen wird, weil er kein const correctnes oder sonst was genau eingehalten hat und nicht die 55 Tricks kennt wie man sich NICHT mit C++ das ganze Bein abschießt!



  • Was du schreibst geht jetzt plötzlich in eine ganz andere Richtung. Worum gings gleich wieder am Anfang? Ob man neue Projekte überhaupt noch in C++ anfangen würde, oder ob nur altes Zeugs damit gepflegt wird. Und meine Aussage war, dass auch bei neuen großen Projekten C++ immer noch erste Wahl wäre. Wie gut das Angebot an C++ Infos für Anfänger ist, hat damit nicht ansatzweise was zu tun.


Anmelden zum Antworten