Results 1 to 14 of 14

Programmiersprache / Framework für Cross-Plattform-GUI-Anwendung

  1. #1 Reply With Quote
    Ritter Kalkihe's Avatar
    Join Date
    Jan 2008
    Location
    Kerlsruhe
    Posts
    1,462
    Hallo zusammen,

    für eine Arbeit an der Hochschule möchte ich ein Tool implementieren, mit auf welchem Daten eingegeben und diese angezeigt werden soll. Die Daten sollen lokal in einem beliebigen Format gespeichert werden können.

    Knackpunkt an der ganzen Geschichte ist, dass ich diese Applikation gerne mit geringstmöglichem Aufwand für mehrere Betriebssysteme verwendbar machen möchte. Primär hatte ich da jetzt an Windows und Linux-Derivate wie Debian, Ubuntu gedacht. Nun suche ich eben ein entsprechendes Framework bzw. die entsprechenden Tools und Programmiersprachen, um dies umzusetzen.

    Nun die Frage an euch: Habt ihr mit so etwas bereits Erfahrungen gemacht, die ihr mit mir teilen könntet?

    Ich habe vor langer Zeit mal ein wenig mit Qt/C++ rumgespielt, das sollte das ja auch realisieren können, richtig? Hat damit jemand erfahrungen gemacht? Für C# gibt es in Linux ja Mono, vielleicht wäre das auch eine Alternative? Oder ganz simples Java? Was meint ihr?

    Danke im Voraus für die Hilfe.
    Quote Originally Posted by Matteo View Post
    Gewagte These: Ein Bewohner von Kalkihes Wohnheim arbeitet offensichtlich in Professor Hunts Unternehmen.
    Kalkihe is offline

  2. #2 Reply With Quote
    Ehrengarde Progrinator's Avatar
    Join Date
    Apr 2018
    Posts
    2,274
    Ansich geht alles, wenn du es auf dem jeweiligen System Compelierst, aber ansonsten, wäre C# und Java davon unabhängig, da bei beiden, eine entsprechende Zwischenschicht vorhanden ist.

    Gerade bei verschiedene Betriebssysteme muss du halt aufpassen, dass die Eigenheiten der Betriebssysteme durch eine entsprechende gestaltung des Programmes auffängst.
    PC: Ryzen 7 3700x | 32GB RAM | GeForce 960 4GB | 1TB+240GB SATA SSD | 2TB HDD | 1TB M2 |
    Laptop: i5 7300HQ | 8GB RAM | GeForce 1050 4GB | 120GB SSD | 1TB HDD |
    Konsolen: PS4 | PS2 | GameCube | Gameboy SP | Nitendo Switch|
    [Bild: sdasdasdasd.jpg]
    Progrinator is offline

  3. #3 Reply With Quote
    Ritter TheLongestDay's Avatar
    Join Date
    Jul 2008
    Posts
    1,292
    Was für Daten sind das und wie sollen die angezeigt werden? Wenn das Anzeigen (mit Grafiken oder so?) der wichtige Teil ist, kannst du ja danach gehen, wo eine entwicklerfreundliche GUI/Grafik-Bibliothek zur Verfügung steht. Bei Java gibt es da einiges. Bei C# bestimmt auch, wobei ich mich da nicht auskenne, habe damit bisher nur native Windows Apps gemacht. Soll die Anwendung verteilt sein, damit mehrere Leute auf dieselben Daten zugreifen können etc?
    TheLongestDay is offline

  4. #4 Reply With Quote

    Batmanistrator
    Thoronador's Avatar
    Join Date
    Jul 2005
    Location
    Morrowind, Vvardenfell-Distrikt
    Posts
    18,646
    Quote Originally Posted by Kalkihe View Post
    Knackpunkt an der ganzen Geschichte ist, dass ich diese Applikation gerne mit geringstmöglichem Aufwand für mehrere Betriebssysteme verwendbar machen möchte. Primär hatte ich da jetzt an Windows und Linux-Derivate wie Debian, Ubuntu gedacht. Nun suche ich eben ein entsprechendes Framework bzw. die entsprechenden Tools und Programmiersprachen, um dies umzusetzen.
    Mit welchen Frameworks und Programmiersprachen hast du denn schon Erfahrungen gemacht?

    Quote Originally Posted by Kalkihe View Post
    Ich habe vor langer Zeit mal ein wenig mit Qt/C++ rumgespielt, das sollte das ja auch realisieren können, richtig? Hat damit jemand erfahrungen gemacht?
    Qt und C++ ist unter Linux kein Ding, da eigentlich alle gängigen Linux-Distributionen entsprechende Pakete von Haus aus mitbringen.
    Wie das unter Windows mit Qt aussieht, kann ich aus eigener Erfahrung nicht sagen. Allerdings gibt's bei mir auf Arbeit ein GUI-Programm, welches ein anderer Kollege in C++ geschrieben und mit Qt erstellt hat. Das ist mittlerweile ca. zwei Jahre her. Knackpunkt war (aus meiner Sicht, aber ich habe nur nebenbei ein wenig davon mitbekommen) der Buildvorgang. Man musste sich halt die entsprechenden Buildtools von Qt herunterladen und konnte nicht Visual Studio C++ dafür nehmen. Die Qt-Bibliotheken mussten dann auch beim Ausliefern der Anwendung in Form von DLLs mitgeliefert werden, sonst lief's nicht. Keine Ahnung, ob das bei dir noch als "mit geringstmöglichem Aufwand" durchgeht.

    Quote Originally Posted by Kalkihe View Post
    Für C# gibt es in Linux ja Mono, vielleicht wäre das auch eine Alternative?
    Ja, Mono wäre die eine Möglichkeit. Im Prinzip kann man damit auch unter Windows erstellte Executables unter Linux ausführen. Im Zweifelsfalls muss man das natürlich immer erstmal ausprobieren, ob's unter Linux dann auch so klappt wie unter Windows.
    Eine andere Möglichkeit wäre .NET Core, ebenfalls von Microsoft und soll plattformübergreifende Entwicklung mit .NET / C# ermöglichen. Im Fall von Linux baut dies wohl auch auf Mono auf. Seit Visual Studio 2017 kann man auch Bibliotheken und Anwendungen für .NET Core statt für das "normale" .NET Framework unter Windows erstellen. (Wenn man kann, sollte man in dem Fall aber gleich mit Visual Studio 2019 anfangen.) Nachteil bei .NET Core ist, dass WinForms, also die klassische GUI mit Formularen (Fenstern), Buttons, Textfeldern, Labels, etc. bei .NET Core zur Zeit (Stand: .NET Core 3.0) nur unter Windows unterstützt wird und nicht unter Linux. Ob sich das in Zukunft ändert, weiß ich nicht.
    Thoronador is offline

  5. #5 Reply With Quote
    Ritter Kalkihe's Avatar
    Join Date
    Jan 2008
    Location
    Kerlsruhe
    Posts
    1,462
    Quote Originally Posted by Progrinator View Post
    Ansich geht alles, wenn du es auf dem jeweiligen System Compelierst, aber ansonsten, wäre C# und Java davon unabhängig, da bei beiden, eine entsprechende Zwischenschicht vorhanden ist.
    Den Gedanken habe ich auch schon bekommen. Mit der JVM (im Fall Java dazwischen) lässt sich das ja dann überall ausführen, wo auch Java läuft.
    Gerade bei verschiedene Betriebssysteme muss du halt aufpassen, dass die Eigenheiten der Betriebssysteme durch eine entsprechende gestaltung des Programmes auffängst.
    Quote Originally Posted by TheLongestDay View Post
    Was für Daten sind das und wie sollen die angezeigt werden? Wenn das Anzeigen (mit Grafiken oder so?) der wichtige Teil ist, kannst du ja danach gehen, wo eine entwicklerfreundliche GUI/Grafik-Bibliothek zur Verfügung steht. Bei Java gibt es da einiges. Bei C# bestimmt auch, wobei ich mich da nicht auskenne, habe damit bisher nur native Windows Apps gemacht. Soll die Anwendung verteilt sein, damit mehrere Leute auf dieselben Daten zugreifen können etc?
    Grafiken sind kein Thema, höchstens als "Anhang", müssen aber nicht dargestellt werden. Es geht um eine reine Ein-/Ausgabemaske für Daten.

    Welche Frameworks unter Java kennst dafür bzw. mit welchen hast du gute Erfahrungen gemacht?

    Die Daten müssen nicht verteilt sein. Es soll höchstens Export-/Import-Funktionen geben, das ist ja dann aber nur Datei schreiben und lesen, also nichts kompliziertes.
    Quote Originally Posted by Thoronador View Post
    Mit welchen Frameworks und Programmiersprachen hast du denn schon Erfahrungen gemacht?
    Wie erwähnt habe ich mal mit Qt ein wenig rumgespielt. C++ ist an sich auch schon eine Weile her.

    In letzter Zeit habe ich am meisten mit C# gearbeitet, dabei stand die Oberflächenentwicklung aber eher im Hintergrund. Vor kurzer Zeit habe ich auch mal wieder viel mit Python gemacht und würde mich auch damit fit fühlen, etwas aufzustellen. Damit kann man ja auch in Qt arbeiten. In Java habe ich nur so typische "Studentenerfahrungen", also bisher noch nicht wirklich etwas implementiert.

    Mit Frameworks habe ich darüber hinaus noch nicht wirklich Erfahrung.

    Qt und C++ ist unter Linux kein Ding, da eigentlich alle gängigen Linux-Distributionen entsprechende Pakete von Haus aus mitbringen.
    Wie das unter Windows mit Qt aussieht, kann ich aus eigener Erfahrung nicht sagen. Allerdings gibt's bei mir auf Arbeit ein GUI-Programm, welches ein anderer Kollege in C++ geschrieben und mit Qt erstellt hat. Das ist mittlerweile ca. zwei Jahre her. Knackpunkt war (aus meiner Sicht, aber ich habe nur nebenbei ein wenig davon mitbekommen) der Buildvorgang. Man musste sich halt die entsprechenden Buildtools von Qt herunterladen und konnte nicht Visual Studio C++ dafür nehmen. Die Qt-Bibliotheken mussten dann auch beim Ausliefern der Anwendung in Form von DLLs mitgeliefert werden, sonst lief's nicht. Keine Ahnung, ob das bei dir noch als "mit geringstmöglichem Aufwand" durchgeht.
    Wenn ich Qt verwende, würde ich auch schon gerne die Tools von denen dafür verwenden. Bin jetzt nicht auf Visual Studio fixiert, da ich eh unter Linux entwickeln möchte. Mit "geringstmöglichem Aufwand" meine ich, dass ich auf "Umprogrammierungen" oder so für verschiedene BS verzichten möchte. Ich habe schon damit gerechnet, dass man entsprechende Anpassungen, gerade in Bezug auf Bibliotheken machen möchte.
    Ja, Mono wäre die eine Möglichkeit. Im Prinzip kann man damit auch unter Windows erstellte Executables unter Linux ausführen. Im Zweifelsfalls muss man das natürlich immer erstmal ausprobieren, ob's unter Linux dann auch so klappt wie unter Windows.
    Eine andere Möglichkeit wäre .NET Core, ebenfalls von Microsoft und soll plattformübergreifende Entwicklung mit .NET / C# ermöglichen. Im Fall von Linux baut dies wohl auch auf Mono auf. Seit Visual Studio 2017 kann man auch Bibliotheken und Anwendungen für .NET Core statt für das "normale" .NET Framework unter Windows erstellen. (Wenn man kann, sollte man in dem Fall aber gleich mit Visual Studio 2019 anfangen.) Nachteil bei .NET Core ist, dass WinForms, also die klassische GUI mit Formularen (Fenstern), Buttons, Textfeldern, Labels, etc. bei .NET Core zur Zeit (Stand: .NET Core 3.0) nur unter Windows unterstützt wird und nicht unter Linux. Ob sich das in Zukunft ändert, weiß ich nicht.
    Es gibt doch auch noch WPF, das unterscheidet sich doch von WinForms, oder? Vielleicht könnte ich ja das verwenden.

    Da kommt dann nur eben dazu, dass ich am liebsten unter Linux entwickeln möchte, weswegen Visual Studio da wohl rausfällt... Es sei denn ich überlege mir das nochmal und wechsele ggf. auf den Arbeitsrechner... Was würdest du denn empfehlen? Mono finde ich halt etwas "unschön", da man ja eben "nur" die .exe mit Mono als Hilfsprogramm ausführt. Das hätte ich schon lieber direkter. Eventuell könnte mir Qt da eher den Output liefern, den ich gerne hätte.
    Quote Originally Posted by Matteo View Post
    Gewagte These: Ein Bewohner von Kalkihes Wohnheim arbeitet offensichtlich in Professor Hunts Unternehmen.
    Kalkihe is offline

  6. #6 Reply With Quote

    Batmanistrator
    Thoronador's Avatar
    Join Date
    Jul 2005
    Location
    Morrowind, Vvardenfell-Distrikt
    Posts
    18,646
    Quote Originally Posted by Kalkihe View Post
    Wenn ich Qt verwende, würde ich auch schon gerne die Tools von denen dafür verwenden.
    Spricht ja erstmal nichts dagegen.

    Quote Originally Posted by Kalkihe View Post
    Es gibt doch auch noch WPF, das unterscheidet sich doch von WinForms, oder? Vielleicht könnte ich ja das verwenden.
    Nur für Windows, nicht für Linux oder Mac. WPF steht für "Windows Presentation Foundation" und meines Wissens gilt hier auch das gleiche wie für WinForms: Unterstützt gibt es momentan nur unter Windows (auch mit .NET Core 3) und Microsoft hat bisher auch nicht verkündet, dass sich in Zukunft etwas daran ändern soll. Vermutlich ist das auch nicht so ganz einfach, da auf Windows-spezifische Funktionalitäten zurückgegriffen wird. Also GUI ist mit C# eher mau, wenn's plattformübergreifend sein soll.

    Quote Originally Posted by Kalkihe View Post
    Was würdest du denn empfehlen?
    Das kann ich so pauschal nicht sagen, da ich mich bei "meinen" kleinen GUI-Anwendungen bisher immer nur auf einer Plattform - Windows oder Linux - bewegt habe, aber nicht auf beiden. Wenn's nur für Windows wäre, könnte ich ohne weiteres zu C# / .NET / Visual Studio raten. Da es plattformübergreifend sein soll, würde ich im Moment aber eher zu Qt und C++ tendieren. Da gibt's ja auch den Qt Designer, mit dem man sich GUIs im Grundgerüst zusammenklicken kann.
    Thoronador is offline

  7. #7 Reply With Quote
    Pretty Pink Pony Princess  Multithread's Avatar
    Join Date
    Jun 2010
    Location
    Crystal Empire
    Posts
    10,718
    Für C# gibt es durchaus Desktopumgebungen, welche Cross-Platform Laufen sollten:
    Avalonia

    Das mit dem "WIndows only" ist ja nur ein Problem bei den beiden Windows Ansätzen, nicht aber, wenn man ein komplett eignes System von Grund auf aufbaut.
    [Bild: AMD_Threadripper.png] Bei Hardware gibt es keine eigene Meinung, bei Hardware zählen nur die Fakten.


    Probleme mit der Haarpracht? Starres Haar ohne Glanz? TressFX schafft Abhilfe. Ja, TressFX verhilft auch Ihnen zu schönem und Geschmeidigen Haar.
    [Bild: i6tfHoa3ooSEraFH63.png]
    Multithread is online now

  8. #8 Reply With Quote
    Ritter Kalkihe's Avatar
    Join Date
    Jan 2008
    Location
    Kerlsruhe
    Posts
    1,462
    Quote Originally Posted by Thoronador View Post
    Qt und C++ ist unter Linux kein Ding, da eigentlich alle gängigen Linux-Distributionen entsprechende Pakete von Haus aus mitbringen.
    Wie das unter Windows mit Qt aussieht, kann ich aus eigener Erfahrung nicht sagen. Allerdings gibt's bei mir auf Arbeit ein GUI-Programm, welches ein anderer Kollege in C++ geschrieben und mit Qt erstellt hat. Das ist mittlerweile ca. zwei Jahre her. Knackpunkt war (aus meiner Sicht, aber ich habe nur nebenbei ein wenig davon mitbekommen) der Buildvorgang. Man musste sich halt die entsprechenden Buildtools von Qt herunterladen und konnte nicht Visual Studio C++ dafür nehmen. Die Qt-Bibliotheken mussten dann auch beim Ausliefern der Anwendung in Form von DLLs mitgeliefert werden, sonst lief's nicht. Keine Ahnung, ob das bei dir noch als "mit geringstmöglichem Aufwand" durchgeht.
    Ich hab mich mittlerweile etwas mehr mit Qt beschäftigt. Und tatsächlich, ich sehe nun mittlerweile, was du meinst. Neben den Bibliotheken muss man zig Sachen machen, um einen Installer zu generieren. Das geht bei mir aktuell nicht mehr unter "geringstmöglicher Aufwand" für mich durch. Es sei denn, es gibt kein anderes Framework/Tool, welches dies einfacher für micht macht.

    Daher überlege ich gerade eher auf Java umzusteigen, da auch der C# Ansatz für mich noch etwas undurchsichtig ist... Kennt ihr da gute bzw. aktuelle Framworks für die GUI-Gestaltung bzw. gibt es auch einen Designer? Bin mir nicht sicher, ob ich mal was von einem Swing-Designer gelesen habe...
    Quote Originally Posted by Matteo View Post
    Gewagte These: Ein Bewohner von Kalkihes Wohnheim arbeitet offensichtlich in Professor Hunts Unternehmen.
    Kalkihe is offline

  9. #9 Reply With Quote
    Ritter Kalkihe's Avatar
    Join Date
    Jan 2008
    Location
    Kerlsruhe
    Posts
    1,462
    Damit der Thread auch eine Lösung hat, falls mal jemand ein ähnliches Problem hat:

    Ich habe mal noch ein wenig mit JavaFX rumprobiert: Da müsste ich aber auf Java-Version 10 (aktuelle ist 13) runter, um das als .jar deployen zu können. Jar-Deployment macht meine Applikation relative einfach Cross-Plattform. Das sollte nun sogar auf MAC funktionieren, auch wenn ich das natürlich nicht getestet habe.

    Als GUI-Framework werde ich nun doch Swing verwenden und versuchen, über gewisse Tweaks und das Verwenden von Look and Feels ein einigermaßen modernes Design hinzubekommen. Für Swing bietet Intellij auch einen funktionablen Designer an.

    Danke für eure Hilfe.
    Quote Originally Posted by Matteo View Post
    Gewagte These: Ein Bewohner von Kalkihes Wohnheim arbeitet offensichtlich in Professor Hunts Unternehmen.
    Kalkihe is offline

  10. #10 Reply With Quote
    Forschungsreisender  jabu's Avatar
    Join Date
    Jul 2011
    Posts
    4,813
    Quote Originally Posted by Kalkihe View Post
    Damit der Thread auch eine Lösung hat, falls mal jemand ein ähnliches Problem hat:
    Davon könnte sich der eine oder andere eine Scheibe abschneiden!

    Ich habe mal noch ein wenig mit JavaFX rumprobiert:
    Dort bin auch ich in der Zwischenzeit (still mitlesend) angekommen (habe es extra auf die neuesten Versionen angelegt: OpenJDK13 + OpenJFX13 mit FXML (hat sein Für und Wider) und dem SceneBuilder (OpenJDK von der Oracle-Community, OpenJFX u. SceneBuilder von Gluon (kann ich empfehlen, auch die hilfreichen Anleitungen zu den IDEs dort)), funktioniert unter NetBeans, Eclipse sowie IntelliJ IDEA bei manueller Konfiguration (bei NetBeans normales Java-Projekt als Basis nötig, da der Assistent externes JavaFX nicht akzeptiert). Ein lesenswerter Artikel, dessen Gegenstand Konsequenzen für Auswahl und Verteilung haben kann: https://www.heise.de/developer/artik...g-4144533.html
    jabu is offline

  11. #11 Reply With Quote
    Ritter
    Join Date
    Feb 2003
    Posts
    1,554
    Quote Originally Posted by Kalkihe View Post
    Es geht um eine reine Ein-/Ausgabemaske für Daten.
    Warum dann nicht eine Web-Applikation?
    Man spart sich dann den ganzen Hick-Hack, die Anwendung auf den Rechnern zu installieren und läuft überall, wo auch ein Browser zur Verfügung steht. Sogar auf einem Smartphone.
    Whiz-zarD is offline

  12. #12 Reply With Quote
    Ehrengarde Progrinator's Avatar
    Join Date
    Apr 2018
    Posts
    2,274
    Quote Originally Posted by Whiz-zarD View Post
    Warum dann nicht eine Web-Applikation?
    Man spart sich dann den ganzen Hick-Hack, die Anwendung auf den Rechnern zu installieren und läuft überall, wo auch ein Browser zur Verfügung steht. Sogar auf einem Smartphone.
    entsprechende Limitierungen und offener Quellcode. (wäre meine Annahme.
    PC: Ryzen 7 3700x | 32GB RAM | GeForce 960 4GB | 1TB+240GB SATA SSD | 2TB HDD | 1TB M2 |
    Laptop: i5 7300HQ | 8GB RAM | GeForce 1050 4GB | 120GB SSD | 1TB HDD |
    Konsolen: PS4 | PS2 | GameCube | Gameboy SP | Nitendo Switch|
    [Bild: sdasdasdasd.jpg]
    Progrinator is offline

  13. #13 Reply With Quote
    Ritter
    Join Date
    Feb 2003
    Posts
    1,554
    Offener Quellcode ist kein Hindernis. Eigentlich wäre für mich eine Java-Applikation ein No-Go, weil man die Applikation auf den Rechnern installieren müsste.
    Java WebStart würde die Sache auch nicht besser machen.
    Whiz-zarD is offline

  14. #14 Reply With Quote
    Ritter Kalkihe's Avatar
    Join Date
    Jan 2008
    Location
    Kerlsruhe
    Posts
    1,462
    Quote Originally Posted by Whiz-zarD View Post
    Offener Quellcode ist kein Hindernis. Eigentlich wäre für mich eine Java-Applikation ein No-Go, weil man die Applikation auf den Rechnern installieren müsste.
    Java WebStart würde die Sache auch nicht besser machen.
    Eine Web-Applikation muss ja auch erstmal gehostet werden. Und von außerhalb des Intranets, wenn intern gehostet, muss dann auch erstmal ein Zugriff bestehen. Offline verwenden ist dann nicht. Des Weiteren sind die Daten teilweise kritisch, da müssten dann noch diverse Sicherheitsaspekte betrachten werden und und und. Das würde den Zeitrahmen, den ich für die Arbeit habe maßlos übersteigen. Außerdem möchte ich mich mit dem Thema Cross-Plattform beschäftigen.

    Die Applikation soll im Arbeitsumfeld eingesetzt werden. Dort werden normalerweise noch recht häufig Applikationen installiert. Man denke an Outlook, Browser, Office, MS-Project... Da macht es das eine Tool auch nicht mehr aus, wenn es dafür jemandem die Arbeit erleichtert.
    Quote Originally Posted by Matteo View Post
    Gewagte These: Ein Bewohner von Kalkihes Wohnheim arbeitet offensichtlich in Professor Hunts Unternehmen.
    Kalkihe is offline

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •