Plattformunabhänigkeit mit wxwidgets? Wie Einstieg gestalten? Zukunft?



  • Hallo Community.

    Da wir in unserem Unternehmen bisher nur Windows Programme schreiben, aber der Ruf nach Plattformunabhängigkeit immer lauter wird, wollen wir unsere Software nach und nach umstellen in Richtung Plattformunabhängigkeit.

    Wir Programmieren hier in C/C++ , teilweise mit Borland C++v5.02.
    Ich arbeite mit VC++Express und programmiere hauptsächlich Webanwendungen auf Basis von ISAPI DLLs.
    Da mache ich in C++/STL und Boost.

    Nun obliegt mir auf Aufabe mal ein bischen was Plattformunabhängiges zu Programmieren, auf das sich später aufbauen lässt.
    Eben ein Programm, daß nativ auf Windows,Linux und Mac läuft.
    Können soll es folgendes: Socket, Threads und Hardware ansprechen.

    Java ist klar, kenne ich, was gibt es noch?

    Bin beim googlen auf wxwidgets gestoßen.

    Wie fange ich mit wxwidgets an?
    Kann ich das irgendwie in VC++ Exprss einbinden?
    Kann wxwidgets meine Anforderungen erfüllen?

    Die Hauptfrage ist aber: taugs wxwidgets für die nächsten 15-20Jahre was?

    Mondmann

    Nun stellt sich


  • Mod

    Ja geht alles mit wxWidgets, am besten, du liest dir mal die Artikel dazu im Magazin durch.
    Ob es für die nächsten 15-20 Jahre was taugt, kann dir keiner Sagen.
    Auch im Javaumfeld haben die GUI Libs nicht so eine Beständigkeit.

    Ich würde die GUI (und nur die) in wxWidgets machen, und vieles anderes in ein Backend aus Standard C++/Boost auslagern.

    phlox



  • Hm..ok.
    Standard c++.

    Ich überlege gerade ob es interessant wäre das Ganze als AddOn für Firefox zu machen.
    Ich bräuchte dann allerdings eine DLL die die Socker kommunikation übernimmt. aber auf Linux und MAc OS gibts aber keine DLL, alaso wie könnte ich das machen?

    Wie funktioniert das mit Standard c++?
    Hab da keine Erfahrung.

    Woher weiß ich denn was Standard C++ ist und was nicht?
    Und wie portiere ich das dann auf andere Os'es?
    Kann mir jemand seine Erfahrungen schildern, auch im bezug auf AddOn?
    Danke Mondmann



  • Mondmann schrieb:

    Hm..ok.
    Standard c++.

    Ich überlege gerade ob es interessant wäre das Ganze als AddOn für Firefox zu machen.
    Ich bräuchte dann allerdings eine DLL die die Socker kommunikation übernimmt. aber auf Linux und MAc OS gibts aber keine DLL, alaso wie könnte ich das machen?

    Unter Linux gibt es .so-Dateien.
    Für Linux gibt es mod_isapi für Apache welches ISAPI implementiert.

    Wie funktioniert das mit Standard c++?
    Hab da keine Erfahrung.

    Du kannst alles was Standard-C++ ist auch unter Linux compilieren.

    Woher weiß ich denn was Standard C++ ist und was nicht?
    Und wie portiere ich das dann auf andere Os'es?

    Alle header wie iostream, fstream, etc. sind Standard, Sachen wie windows.h, etc. nicht, also als Faustregel: Alles ohne Suffix ist Standard. Gibt natürlich Ausnahmen. Z.B. gibt's boost auch für Linux.

    Kann mir jemand seine Erfahrungen schildern, auch im bezug auf AddOn?

    Auch wenn es vielleicht nicht hilft: Lasst es sein. Zu Linux gehört noch viel mehr als auf wxWidgets umsteigen. Mit einem Firefox-Addon ist es bestimmt einfacher, da hab ich keine Erfahrungen. Das wäre dann allerdings kein wxWidgets sondern XUL.

    mfg.



  • Ja "sein lassen" hilft mir tatsächlich nicht weiter.
    Wir wollen unsere Software umstellen, d.h. für die Zukunft Wettbewerbsfähig machen und das geht eben in Richtung Plattformunabhängigkeit.

    Ich bin derjenige der mal ein bischen was antesten darf,aber die Entscheidung trifft die Firmenleitung.
    Ich befinde mich also auf der Spielwiese und darf spielen.

    Java wäre natürlich das "einfachste" damit habe ich auch schon ein bischen was programmiert.
    Aber wenns was anderes gibt, warum nicht.

    Ist doch interessant wie Mozilla anscheinend ohne Probleme und ohne Java auf verschiedenen Plattformen läuft..oder OpenOffice.
    XUL habe ich mir auch schonmal angeguckt...

    Wie wird das gemacht und warum können wir das nicht?
    Chef ist durchaus bereit einige Jahre an Pionierarbeit zu gewähren, wenn danach etwas gescheites herauskommt und die Software danach unabhängig ist und somit Zukunftstauglich.

    Grüße Mondmann



  • Ist doch interessant wie Mozilla anscheinend ohne Probleme und ohne Java auf verschiedenen Plattformen läuft..oder OpenOffice.

    Du stellst es so hin als ob das die einizigen Beispiele sind. Und als ob z.B. WxWidgets, Qt, gtkmm usw. nicht platformunabhängigkeit können. Verstehe ich nicht, wie du darauf kommst? Vielleicht kannst du uns das ja mal erläutern?

    Wo sind denn deine Bedenken und Probleme? Warum sollte man z.B. mit wxWidgets (ich habe mir mal eines raus gepickt) nicht sowas wie OpenOffice platformübergreifend entwickeln können?

    Da mache ich in C++/STL und Boost.
    ...
    Eben ein Programm, daß nativ auf Windows,Linux und Mac läuft.
    Können soll es folgendes: Socket, Threads und Hardware ansprechen.

    Ehm, und wo ist das Problem? Mit Boost hast du schon zwei der drei Anforderungen abgedeckt:

    Socket: Boost.asio
    Thread: Boost.thread

    Hardware ansprechen ist jetzt aber ne harte Anforderung. Das geht dann schon nicht mehr platformneutral, widerspricht sich ja. Um was für Hardware handelt es sich denn? Wenn es dafür kein platformneutrale Lib gibt, muß man selber nen Wrapper bauen. Geht mit C++ und den Klassen und Kapselung wunderbar. Dafür wurde C++ erfunden. 😉



  • Artchi schrieb:

    Ist doch interessant wie Mozilla anscheinend ohne Probleme und ohne Java auf verschiedenen Plattformen läuft..oder OpenOffice.

    Du stellst es so hin als ob das die einizigen Beispiele sind. Und als ob z.B. WxWidgets, Qt, gtkmm usw. nicht platformunabhängigkeit können. Verstehe ich nicht, wie du darauf kommst? Vielleicht kannst du uns das ja mal erläutern?

    Es sind nicht die einzigesten Beispiele, aber bestimmt die bekanntesten:-)
    Ich hab doch gar nicht behauptet, daß WxWidgets ect. keine plattformunabhängigkeit können? Ich bezog mich nur auf den vorhergehenden Post der meinte "lass es sein.."

    Artchi schrieb:

    Wo sind denn deine Bedenken und Probleme? Warum sollte man z.B. mit wxWidgets (ich habe mir mal eines raus gepickt) nicht sowas wie OpenOffice platformübergreifend entwickeln können?

    Keine Bedenken nur der Post der meine "lass es sein...".
    Falls doch Bedenken da sind, dannehe in die Richtung, daß die Erfahrung fehlt...

    Artchi schrieb:

    Eben ein Programm, daß nativ auf Windows,Linux und Mac läuft.
    Können soll es folgendes: Socket, Threads und Hardware ansprechen.
    Ehm, und wo ist das Problem? Mit Boost hast du schon zwei der drei Anforderungen abgedeckt:

    Socket: Boost.asio
    Thread: Boost.thread

    Hardware ansprechen ist jetzt aber ne harte Anforderung. Das geht dann schon nicht mehr platformneutral, widerspricht sich ja. Um was für Hardware handelt es sich denn? Wenn es dafür kein platformneutrale Lib gibt, muß man selber nen Wrapper bauen. Geht mit C++ und den Klassen und Kapselung wunderbar. Dafür wurde C++ erfunden. 😉

    Es sollte in Richtung USB Connection und das Ansprechen des Serial Ports gehen.
    Mehr eigentlich nicht.

    Grüße Mondmann



  • OK, dann habe ich dich falsch verstanden.

    Zu dem USB und RS232 kann man nur sagen, das du erstmal schauen solltest, das du dafür APIs und Libs findest, die es erlauben, solche Schnittstellen anzusteuern. Dann wirst du ja sehen, ob es welche gibt, die auch mehrere Plattformen bedienen können. Wenn es sowas nicht gibt, mußt du halt selbst eine Klasse bauen, die dir das kapselt. Oder du kannst auch einen Stream implementieren.

    Gehen tut das alles. Es muß meistens nicht mal alles fix und fertig downloadbar oder kaufbar sein. Klar, wenns das gibt um so besser. Aber manchmal sind manche Dinge so trivial, das man die auch selber kapseln kann. Und RS232 gehört sicherlich mit zu dieser Sorte. 😉 Mit USB kenne ich mich überhaupt nicht aus, kann mir aber auch nicht vorstellen, das es so so komplex ist, als das man mehr als nur Bytes reinschiebt und dann empfängt es das Gerät am anderen Ende. Halt auch nur ein Stream.


  • Mod

    Also zumindest für die seriellen Sachen gibt es wxCTB, ist eine Contrib-Library für wxWidgets.

    Was XUL angeht:
    Das ist ein soweit ich weis fast nur von der Mozilla Foundation genutzes Toolkit. Ein FF Plug in mag portabel
    sein, aber er schliesst alle anderen Browser automatisch aus -> In meinen Augen ein K.O. Kriterium.

    Und 15-20 Jahre in die Zukunft kann niemand blicken. Gerade geht der Trend sehr stark zu verteilten Applikationen,
    oder zu Client-Server mit DB als Datenhaltung, und Ajax zur GUI Gestaltung. Kommt aber auch immer darauf an, was man
    umsetzen will, bzw. welches Ziel man mit seinem Projekt/Produkt verfolgt.


Anmelden zum Antworten