ubuntuusers.de

Java - Beliebtheit unter Linux?

Status: Gelöst | Ubuntu-Version: Kubuntu 15.10 (Wily Werewolf)
Antworten |

barcc

Avatar von barcc

Anmeldungsdatum:
13. Juli 2007

Beiträge: 696

Wohnort: Dortmund

user unknown schrieb:

barcc schrieb:

Für GTK gilt das selbe. XML kann man manuell ändern, macht man aber nicht.

Tja, mit Java/Swing kann ich x Buttons nach Schema erzeugen mit einer Methode, die als Parameter Beschriftung/Image bekommt, den Tooltiptext, eventuell weiterem.

Dann kann ich Buttons in Serie erzeugen, sehr übersichtlich geordnet.

Das ist tatsächlich eine Beschränkung der klassischen GUI-Designer (GTK und Qt, Java kenne ich nicht). Mit QML kann man auch dynamische GUIs erstellen., QML ist auch kein XML, kann man manuell ändern (macht man auch).

Dass man xml-Files ungern manuell bearbeitet kann ich verstehen, aber das scheint mir zu Spaghetti-XML zu führen, weniger Struktur.

Da man das XML weder liest noch schreibt, kein Problem 😀

Wird Typsicherheit nicht auch so unterlaufen?

Nein

Mehrere Sprachen zu mischen schafft auch immer neue Probleme, komplexere Werkzeuge, komplexere Buildprozesse, Syntaxumschaltung im Kopf, ...

Stimmt, aber Lysander schrieb:

… mal Hand aufs Herz: GUI-Initialisierungen zu schreiben ist einfach nur lästig und ätzend! …

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17622

Wohnort: Berlin

Lysander schrieb:

user unknown schrieb:

GUI-Designer habe ich bislang nur als Monstren erlebt, die aufgeblasenen Code erzeugt haben, mit dem sie auch nicht mehr zurechtkamen, wenn man ihn von Hand geändert hat, ...

Genau deswegen habe ich ja JavaFX erwähnt (und Qt - wie andere - in den Himmel gelobt!)... da wird eben *kein* Code mehr erzeugt. Das das nicht gut funktioniert, sehe ich genauso wie Du.

Wenn Du 'kein' mit der Maus markierst, und dann das fette A klickst, dann wird Dein 'kein' fett, Sternchen funktioniert hier nicht. ☺

Außerdem habe ich alles andere als den Eindruck, dass Du das genauso siehst wie ich. Ich ärgere mich darüber, welch ineffizienten, unübersichtlichen, grottigen Code die Designer produzieren, dass man diesen oft nicht manuell modifizieren kann, also Round-Trip-Engineering oft nicht funktioniert.

Bei Qt läuft das nun schon definitiv über 16 Jahre (Anno 1999 iirc hatte ich den ersten Kontakt zu Qt)! PyQt, ein bekanntes Python Binding für Qt, kann diese XML basierten UI-Dateien sogar zur Laufzeit laden und interpretieren - besser geht es kaum;

Wann sonst? Wenn der Code auf der Festplatte liegt?

kein manuelles Erzeugen des Codes! Zudem hat Qt schon immer den Ansatz verfolgt, dem User den erzeugten C++-Code (aus den UI-Dateien), *nicht* zugänglich zu machen.

Tja - wieso nicht?

Stattdessen leitet man von der erzeugten GUI-Klasse ab und hat damit eine vollständige Entkopplung von automatisch generierten Code und eigenem Code. Das funktioniert ausgezeichnet.

Wenn Dich das so begeistert kannst Du auch mit Swing erst mal ein LysanderJTextfield von JTextfield ableiten, und das dann instanziieren.

Das Konzept von deklarativer GUI in separaten Metadateien ist natürlich nicht neu und bereits das schrottige MFC von Microsoft hat das in Ansätzen schon so gemacht - nur extrem schlecht. Im Java-Umfeld dagegen kenne ich von früher für AWT, Swing usw. nur Designer, die *direkt* Java-Code erzeugen und den User dazu animieren, darin herum zu wurschteln.

Tja - man kann natürlich selbst Code schreiben, der Swing- oder andere GUI-Komponenten mit Daten aus XML-Strukturen initialisiert. Genau das scheint man ja bei Java-FX getan zu haben.

Das hat dank JavaFX nun ein Ende, weswegen ich das tatsächlich (neben vielen anderen tollen Features) als erstes für mich unter Java benutzbares GUI-Framework ansehe.

Was jetzt das Problem an manuell geschriebenem Code ist ist noch nicht deutlich geworden.

WPF, ein aktuelles MS GUI-Framework, setzt dabei auch auf eine XML basierte deklarative Sprache für die UI-Elemente (XAML). Wie man sieht, setzt sich das langsam aber sicher auch im Mainstream durch. (Wie ist das eigentlich bei Apple?)

Ich habe schon viel Schrott gesehen, der sich im Mainstream durchgesetzt hat. Mit der Masse der Fliegen zu argumentieren war noch nie seriös. ☺

Ich vermute mal, dass Du eben genau die negativen Erfahrungen gemacht hast, wie ich und deswegen kein Vertrauen zu GUI-Designern hast. Ich kannte halt vorher schon die geniale Qt-Lösung und war daher von Java in Sachen GUI sofort frustriert Anfang der 2000er...

Im Gegenteil. Mich hat beeindruckt, dass man mit Java die GUI schreiben kann und nicht dem GUI-Designer-Voodoo ausgeliefert ist.

Generell ist es natürlich in all diesen Frameworks auch immer möglich, GUI von Hand zu erzeugen. Aber mal Hand aufs Herz: GUI-Initialisierungen zu schreiben ist einfach nur lästig und ätzend!

Ich habe das Abklappern von Menüs und um Rumfummeln mit der Maus dagegen als lästig empfunden, den erzeugten Boilerplatecode häßlich und häufig ineffizient. Wieso soll ich von JTextField erst ein JTextFieldName ableiten, um es zu initialisieren? Umständlich, überflüssig.

Aus diesem Grunde gibt es dafür ja Werkzeuge... und gute Frameworks bieten auch immer angenehme Hooking Mechanismen, wie man statische, designte GUI mit dynamischen Elementen, die zur Laufzeut erzeugt werden, zu integrieren.

Die der Designer dann natürlich nicht anzeigen kann, genau.

Ich kann Dir nur empfehlen, mal einen Blick auf ein Framework mit genau so einem Ansatz zu werfen - es wird Dich garantiert mit der Welt der GUI-Designer versöhnen, glaub mir 😉

Ich halte es nicht für unmöglich, aber ich glaube nichts. Außer dass ich schon schlimmeres gesehen habe.

Da ich darüber erst vor kurzem philosophiert habe, noch ein Link zu dem Thread in einem anderen Forum.

Da ist zur Zeit abgeschaltet. ☺

stfischr Team-Icon

Avatar von stfischr

Anmeldungsdatum:
1. März 2007

Beiträge: 19197

user unknown schrieb:

stfischr schrieb:

meine Lieblingsmeldung: sie benötigen eine 32 Bit Java Version

Wann kommt die?

Wenn dann bei der Installation, wir haben an der Arbeit z.B. HIS und das läuft nur mit 32 Bit Java.

Ich bin noch ein paar Tage auf 32-bit unterwegs, aber sonst ist es so, dass alle älteren Swingprogramme problemlos mit neueren Javaversionen gearbeitet haben.

Mit neueren Versionen sollte es im Normalfall auch keine Probleme geben.

Dass man Programme mit neuesten Features nicht mit älteren Bibliotheken laufen lassen kann ist aber bei jeder Sprache so.

Jupp.

Hast Du einen Screenshot für den Beleg, dass Swing ein häßliches GUI hat?

Jetzt mal irgend Einer über Imagesearch https://ruben42.files.wordpress.com/2010/10/screenshot.png

Wenn Du willst kannst Du Dir die Arbeit machen, und jede Komponente an Deine Wünsche anpassen.

Ja klar, aber dann lieber gleich nen anderes GUI-Toolkit. ☺

JavaFX hab ich tatsächlich noch nie benutzt, werde ich mir in Zukunft mal anschauen.

Lysander schrieb:

Grundsätzlich ist alles eine Frage, wo man seine Prioritäten sieht! C++ ist und bleibt aber ein Komplexitätsmonster - egal, welches Subset man wählt. (Und die Wahl beinhaltet per se ja leider auch wieder komplexes Wissen 😉 )

Liegt vielleicht daran, dass ich C, C++ und dann erst Java gelernt habe. Zudem verwende ich wohl nur kleine Teile (von allen Sprachen) und habe bisher C++ nie als deutlich komplexer als Java empfunden.

spaghetticode

(Themenstarter)

Anmeldungsdatum:
19. Oktober 2015

Beiträge: 75

Ich komme dann mal wieder auf mein Thema zurück... *hüstel*

snafu1 schrieb:

@spaghetticode: Mal Hand auf's Herz. Willst du wirklich C++ lernen? Oder willst du im Grunde Qt mit ein paar C-Konstrukten lernen und von C++ eigentlich nur eher oberflächlich die Klassen benutzen?

Das ist eine gute Frage. Darüber habe ich noch gar nicht nachgedacht. Also, ich kann dir zu C++ folgendes sagen:

Es macht mir irre viel Spaß, damit rumzuspielen. Ich mag die Syntax. Mir gefällt es, das ein oder andere "zu Fuß" zu machen, für das man bei Python einen Kleinwagen zur Hand hat. Ich habe aber definitiv (jedenfalls bisher) nicht das Durchhaltevermögen, mich da mit allen Winkeln zu beschäftigen. Die Kapitel zur Templateprogrammierung in meinen Lehrbüchern arbeite ich durch, aber ich bastele nicht mit dem gleichen Elan an Übungsaufgaben und selbstgestellten Aufgaben, wie ich das bei dem Entwerfen von eigenen Klassen tue, zum Beispiel. C++ hat viele "Seitengassen", die ich bisher mehr oder weniger links liegen gelassen habe. Damit verschenke ich sicherlich einiges an Potenzial und Mächtigkeit, die die Sprache bietet. Und vielleicht ist es auch gar nicht möglich, in C++ einigermaßen ernsthafte Anwendungen zu schreiben, ohne auch diese Dinge wirklich souverän benutzen zu können. Weiß ich nicht, bis an diesen Punkt bin ich bisher noch nie gekommen.

Vielleicht hast du mit deiner Vermutung recht, und es läuft tatsächlich darauf raus, dass ich eigentlich C++ benutzen möchte, wie andere Leute Java benutzen. Und vielleicht funktioniert das so einfach nicht.

Es gibt Wochen, da bin ich täglich drei Stunden mit Programmieren beschäftigt, aber es gibt immer auch Wochen, da mache ich mal sechs, sieben, acht Tage lang gar nichts. Mit einer Sprache wie Python ist das kein großes Problem. Mit C++ wird's da schon schwierig.

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17622

Wohnort: Berlin

stfischr schrieb:

Hast Du einen Screenshot für den Beleg, dass Swing ein häßliches GUI hat?

Jetzt mal irgend Einer über Imagesearch https://ruben42.files.wordpress.com/2010/10/screenshot.png

Nun, mich sprechen diese Blautöne nicht an, aber ist es das, was Dir nicht gefällt oder was? Welches Java ist das, welche Version, und unter welchem OS? Was ist an den Swingklassen eingestellt worden, damit es so aussieht, oder ist das ein Defaultaussehen?

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17622

Wohnort: Berlin

stfischr schrieb:

Hast Du einen Screenshot für den Beleg, dass Swing ein häßliches GUI hat?

Jetzt mal irgend Einer über Imagesearch https://ruben42.files.wordpress.com/2010/10/screenshot.png

Ah, ich bin selbst einfach zum zugehörigen Blogeintrag gegangen, und da steht:

Back to 2010, we know have libraries such as EXTJS that bring an application look and feel to your web application. Out of the box, EXTJS supports more feature rich components than are supported by Java/Swing.

Das, was Du da zeigst, ist also gerade nicht Java/Swing.

Dakuan

Avatar von Dakuan

Anmeldungsdatum:
2. November 2004

Beiträge: 6507

Wohnort: Hamburg

@spaghetticode

Und vielleicht ist es auch gar nicht möglich, in C++ einigermaßen ernsthafte Anwendungen zu schreiben, ohne auch diese Dinge wirklich souverän benutzen zu können.

Doch, möglich ist das. Ob und in wieweit das immer sinnvoll ist, ist eine andere Frage. Ich habe um die ganze Template Geschichte bisher einen Bogen gemacht, wobei mir aber klar ist, das das auf Dauer nicht so bleiben kann (ich beschäftige mich mit C++ erst seit etwas über einem Jahr) . Ich kann allerdings auf einige Jahre C Programmierung zurückblicken und kann daher auch bestehenden C-Code in leicht modifizierter Form in C++ Projekte einbauen.

Dazu muss ich aber anmerken, das ich als Hobby Programmierer das Ganze eher als Denksport betrachte. Im professionellen Bereich steht wohl eher die benötigte Zeit im Vordergrund, und da gelten dann völlig andere Maßstäbe. Was für Dich richtig ist, kannst nur Du entscheiden. Du hast ja noch nicht gesagt, welche Art von Anwendungen du programmieren möchtest. Wenn da auch nur ansatzweise etwas zeitkritisches dabei ist oder Du ein Kontrollfreak bist, solltest Du es mit C++ versuchen. Anderenfalls nimm das was dir vom Gefühl her mehr liegt.

Und habe keine Angst, dass Du vielleicht die "falsche" Programmiersprache verwendest. So etwas gibt es nicht. Auch wenn Du später feststellst, das eins andere Sprache besser geeignet ist, so erweitert es doch zumindest Deinen Horizont. Erfahrung ist ja auch etwas wert.

Antworten |