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
Soweit ich weiss, ist Qt nur auf Linux frei. Fuer Windows muesstest du Lizensgebuehren bezahlen. Aber wie waere es mit JAVA?
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
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...=
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.
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.
"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.
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... ;)
> 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.
"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.
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.
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). ;-)
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.
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.
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.
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
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.