Forum: PC-Programmierung Plattformübergreifende Programmierung


von Christian (Gast)


Lesenswert?

Hallo zusammen,

ich trage mich mit dem Gedanken eine Software zu schreiben, die auf
möglichst vielen Plattformen am besten mit dem gleichen Sourcecode
kompiliert. Ich weiß, dass das viel verlangt ist, aber am Anfang ist
eine Portion Optimismus wohl angebracht ;)
Nach meinen ersten Recherchen könnte ich z.B. mit dem GCC zumindest
schon Windows/Linux und scheinbar auch MacOS abdecken. Als Framework
habe ich an Qt von Trolltech gedacht. Die Software soll später als
OpenSource veröffentlicht werden, dass hat die Programmwahl natürlich
auch beeinflusst.
Wer hat denn schon Erfahrungen mit sowas und kann mir Tipps geben,
sowohl zur Realisierbarkeit als auch zur Kompiler/Bibliothekenwahl?

Gruß
Chris

von thomas_p. (Gast)


Lesenswert?

Soweit ich weiss, ist Qt nur auf Linux frei. Fuer Windows muesstest du
Lizensgebuehren bezahlen.
Aber wie waere es mit JAVA?

von Peter Mahler (Gast)


Lesenswert?

Hallo Jungs,

@Christian:
Portabilität und Plattformunabhängigkeit erreicht man nicht dadurch,
dass man die Anzahl seiner Tools und Bibliotheken reduziert. Spätestens
wenn du an irgendwelche System-Calls kommst versagt das ganze.
Ein Problem ist auch, dass das Windows-Managment unter den
verschiedenen Plattformen gänzlich unterschiedlich ist. QT abstrahiert
zwar einiges, trotzdem steckt dort richtig viel Arbeit dahinter. Das
meiste was ich bisher gesehen habe sieht entweder auf dem einen oder
auf dem anderen System besch.... aus und/oder ist besch.... zu
bedienen. Bei den wenigen erträglichen Ausnahmen
(Mozilla,OpenOffice,....) sieht dafür der Quell-Code besch... aus.

Versuch das ganze erst mal mit einem Minimal-Programm, das aber von
allem etwas enthält :
- IPC-Mechanismen
     Message-Queue/Mutexe/Shared Memory/...
- GUI-Kram
     Fonts/Bitmaps/Grafiken
- Netzwerk
   Berkley-Sockets, TCP/UDP
- Treiber-Aufrufe
   serielle Schnittstelle,.....
auf jeweils jeder Plattform.

wenn du dann die Lust noch nicht verloren hast, viel Vergnügen !


@thomas_p.:

QT ist für Open-Source-Projekte auf allen Plattformen frei.
>Aber wie waere es mit JAVA?
Er braucht dazu nur einen Rechner der Endlosschleifen in ein paar
Sekunden abarbeitet :-)


Gruss,

Peter

von Christian (Gast)


Lesenswert?

Hi,

also Java liegt nahe, aber fällt raus. Ich habe damit einmal ein
Programm für eine Firma realisiert und Java ist leider sowas von
ar***langsam...
Dass ich nicht komplett Plattformunabhängig sein kann ist klar; sobald
es an die Hardwareschnittstellen geht ist Essig, aber da kann ich
"einfach" einen abstraction layer zwischenlegen. Das Einlesen von
Daten soll am besten sowieso in ein Modul gekapselt werden um
verschiedene Schnittstellen bedienen zu können. Also Darstellung,
Bedienung und Datenverarbeitung möglichst unabhängig und Datenimport
natürlich System- und Schnittstellenspezifisch.
(Konkret geht es bei meiner Idee übrigens um ein Frontend für einen
Logic Analyser. Es gibt zwar viele Selbstbauprojekte, aber eine richtig
gute Software habe ich noch nicht gefunden :( Und das soll jetzt etwas
umfangreicher werden, mit Pluginschnittstellen für Protokollanalysen,
unterschiedliche Hardware...=

von bruzzler (Gast)


Lesenswert?

Wie wärs mit GTK (gimpToolKit) und gcc ?
Habs selber noch nicht probiert, aber es gibt recht viele Windows und
Linux Programme die darauf basieren und ganz nett anzusehen sind.
Ansonsten laufen kleine Windows Programme mit Wine auch unter Linux
ganz ordentlich.

von Johannes M. Richter (Gast)


Lesenswert?

wxWidgets erscheint mir vor allem auch als Endanwender eine gute Wahl;
es werden naemlich die nativen Widgets verwendet, nicht irgendwelche
neuen gezeichnet, die mir dann wieder ungewohnt erscheinen.

von Matthias Friedrich (Gast)


Lesenswert?

"also Java liegt nahe, aber fällt raus. Ich habe damit einmal ein
Programm für eine Firma realisiert und Java ist leider sowas von
ar***langsam..."

dieses dumme zeug liest man immer wieder. natürlich ist java in machnen
belangen nicht so schnell wie nativer code. und? erstens hat sich in
diesem punkt viel getan und ausserdem interessiert es nicht. sicherlich
gibt es noch einige sachen, für die sich andere sprachen anbieten, wie
beispielsweise schnelle grafik. aber mache leute verstehen einfach
nicht, dass es heutzutage weniger auf das letzte quäntchen
geschwindigkeit (denn rechenzeit kostet nicht viel) als auf andere
aspekte ankommt (wie beispielsweise portierbarkeit, lesbarkeit, zeit
für implementierung...).
nicht umsonst schreiben große unternehmen wie beispielsweise SAP ihre
neue Software inzwischen in java.
es existiert eine fülle von frameworks die jedem programmierer viel
arbeit abnehmen.
ich komme ursprünglich aus der c++-welt, aber für die meisten fälle ist
für mich inzwischen java die bessere lösung.

übrigens: wxWidgets ist mit sicherheit eine gute wahl, habe ich schon
benutzt und war recht zufrieden.

von Christian (Gast)


Lesenswert?

Hallo,

>> [..] Java [..] ist [..] ar***langsam...
> dieses dumme zeug liest man immer wieder

es ist schön, dass man das immer wieder liest, aber ich habe es
tatsächlich schon erfahren; und mein letztes Java-Programmier-Erlebnis
ist noch kein Jahr her. Ich schränke das dann gerne auf die Darstellung
ein; davon abgesehen bin ich mit Java sehr zufrieden, ich werde es auch
weiterhin nutzen.

> dass es heutzutage weniger auf das letzte quäntchen
> geschwindigkeit [..] ankommt

Das gilt sicher solange es um irgendwelche 'hintergründigen' Arbeiten
geht. Mein Problem ist aber der spürbare Zeitverzug in der Bedienung.
Und wenn ich auf die Darstellung warten muss, finde ich das
unangenehm bis ziemlich nervend. Und die grafische Darstellung von
mehreren (16+) LA-Kanälen bringt Java grafisch einfach an die Grenzen
des Erträglichen.

Die wxWidgets gefallen mir sehr gut (kannte ich bisher gar nicht!). Und
das die nativen Routinen gemapt werden ist doch nahezu optimal, dann
muss sich niemand auf seiner Plattform unmgewöhnen :)

Schonmal vielen Dank für die Anregungen!
Christian

P.S.: Ich möchte hier übrigens keinen Glaubenskriegt in Sachen Java
anzetteln, also bitte... ;)

von Rufus T. Firefly (Gast)


Lesenswert?

> QT ist für Open-Source-Projekte auf allen Plattformen frei.

Das ist ein gerne wiederholtes Gerücht.
Damit man anständig mit QT arbeiten kann, braucht man den Quelltext -
und genau den bekommt man als Windows-Entwickler eben nicht ohne dafür
sehr_viel_Geld abzudrücken.

Was man "frei" bekommt, ist eine DLL nebst einiger Headerdateien
einer recht angestaubten QT-Version, mit der man kleinere Spielereien
veranstalten kann - ernsthafte Entwicklung ist damit aber nicht
möglich.

Ich würde nie eine Klassenbibliothek verwenden, bei der ich nicht den
Quelltext vorliegen habe, die ich also nicht Debuggen kann ...

wxWidgets erscheint recht interessant, auch für Leute, die
MFC-verseucht sind, ist das ein recht geeigneter Weg für den Umstieg.

Es empfiehlt sich allerdings, hierfür einen der kommerziellen
Dialogeditoren (DialogBlocks) anzuschaffen.

von Matthias Friedrich (Gast)


Lesenswert?

"Es empfiehlt sich allerdings, hierfür einen der kommerziellen
Dialogeditoren (DialogBlocks) anzuschaffen."

Auf jeden Fall. Damit kommt man auf jeden Fall schneller ans Ziel,
zumindest nimmt es für ein Grundgerüst einer GUI shr viel stupide
Arbeit ab.

von Rufus T. Firefly (Gast)


Lesenswert?

Da steckt man zwar wieder im Sumpf* der kommerziellen Software - aber
anders als bei QT ist DialogBlocks kein muss, sondern nur ein
angenehmes Hilfsmittel, das beim Quellcodeschreiben hilft.
DialogBlocks ist - mit anderen Worten - "nur" ein
Resourceeditor/Codegenerator.


*) Selbst der ist erträglich, DialogBlocks ist mit 65 EUR (30 EUR für
Studenten) auch für Hobbyisten bezahlbar.
Die 1550 EUR, die QT für Windows kostet, sehen da anders aus.

von Johannes M. Richter (Gast)


Lesenswert?

Und selbst bei den 65€ kann man sich ja einreden, dass sie
indirekt wieder wxWidgets zukommen, ist DialogBlocks doch von Julian
Smart (wxWidgets "Erfinder" & Entwickler). ;-)

von David Otto (Gast)


Lesenswert?

Ich habe zwar DialogBlocks noch nie ausprobiert, finde aber auch dass
man auf jeden Fall solch ein Tool für die Entwicklung einer GUI
benutzen  sollte.

Ich persönlich benutzte wxglade (wxglade.sourceforge.net) un bin
eigentlich glücklich damit.

von waterfox (Gast)


Lesenswert?

Wegen den vielen Makros, versaut man sich mit wxWidgets sehr schenll den
Stil. Besser ist da gtkmm oder FLTK. Beides ist OO und es existieres
gute kostenlose Dialog-Editoren.

von David Otto (Gast)


Lesenswert?

FLTK ist gut - sieht aber en bisschen billig aus, und ist halt für die
meisten Anwendungen zu "lite"

Bei gtkmm kann ich nicht beurteilen wie sich damit entwickeln lässt,
aber ich finds halt irgentwie scheisse dass der Benutzer gtk und gtkmm
installiert ham muss, man könnt es zwar auch statisch linken aber bei
wxWidgets braucht man dann nicht mehr 4.5 MB GTK2 Runtime unter
Windows,    und man hat die "nativen" Windows-Controls

Ausserdem find ich die ganze Struktur von wxWidgets übersichtlicher und
wxWidgets hat auch mehr Funktionen, wie z.B.
- wxWindows HTML Help
- Styled Text Control library
- Klassen für TCP etc.

von Thomas Fischl (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Christian,

du planst ein plattformunabhängiges Frontend für einen Logic Analyser?
An sowas bastle ich auch rum. Ich verwende dazu Java; bisher gehen zwar
nur die Grundfunktionen, aber mit der (Darstellungs-)Geschwindigkeit bin
ich eigentlich ganz zufrieden. Im Anhang ein Screenshot. Wenn dich das
interessiert, meld dich einfach mal bei mir!

Thomas

von Matthias Friedrich (Gast)


Lesenswert?

ich empfehle für java-guis UNBEDINGT das swt-frmaework (bestandteil
von eclipse) in verbindung mit ve - einem kostenlosen gui-editor als
plugin für eclipse.
damit sehen dann die guis wirklich wie "richtige" windows-guis aus-
und sind zudem auch noch genauso schnell.

von Christian (Gast)


Lesenswert?

Hmm,
das swt gibt es ja auch noch. Da habe ich überhaupt nicht mehr dran
gedacht. Allerdings kann ich nicht wirklich irgendwelche aktuellen
Informationen darüber finden, wie stabil das mittlerweile läuft und
sich bedienen lässt, gerade auf nicht-Windows-Systemen.
Hat da jemand Erfahrungen?

@Thomas:
Dein Programm sieht ja schon ganz hübsch aus. Interesse daran hätte ich
auf jeden Fall erstmal in soweit, dass ich gerne mal über den Quellcode
schauen würde, wie weit das mit unserer (ich bin nicht ganz alleine mit
der Entwicklung) Planung und unseren Ideen zusammenpasst.
Steht das Programm irgendwo (auch kompiliert) zum Download? Mich würde
nämlich auch sehr interessieren, wie es skaliert... viel mehr Kanäle,
mehrere Fenster etc.

@all
Für uns ist es auch beschlossene Sache, das die Anwendung später als
OpenSource zur Verfügung steht. Ihr werdet also von uns hören,
spätestens, wenn wir Tester und mehr Entwickler brauchen ;-)
An der Stelle bietet es sich an, einmal nachzufragen, was ihr meint,
was die Software können sollte. Also eine Art Wunschliste...

Gruß
Christian

von Christian (Gast)


Lesenswert?

Noch eine andere wichtige Frage:

Seht ihr überhaupt den Bedarf an einem freien, leistungsfähigen
LA-Frontend, dass an fast jede Hardware anpassbar ist?

Oder bin nur ich zu blöde eine entsprechende Software zu finden? Bei
fast allen Selbstbaulösungen ist zwar ein Progrämmchen dabei, meistens
jedoch dürftig und sehr eng an die Hardware gebunden.

Freue mich über jedes Feedback
Christian

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.