Hallo
ich habe eigentlich mal eine interessen ambitionierte frage,
welche möglichkeiten gibt es eigentlich(ohne wine und crossover,und vmware(indirekt) um windows basierte programme in für linux benutzbare programme zu verwandeln bzw 1 zu 1 zu portieren,ich hatte mal vor langer zeit etwas von alky(wenn ich mich richtig erinnere)gehört,oder müsste man alles per reverse engineering analysieren und dann auf den linux kernel anpassen?also mal von den rechtlichen sachen abgesehen,ich würde halt nur mal gern so die möglichkeiten kennen.
thx
Linux 15.070 Themen, 107.540 Beiträge
Hi!
Mit Ausnahme von Emulationslösungen, die du ja ausklammerst, bleibt IMHO eigentlich nur noch Cross/Multi-Plattform-Entwicklung. Dazu muss man das Programm geziehlt so entwiceln, dass es sich in eine Version für Windows und Linux übersetzen lässt. Bei einfachen Anwendungen kann man das mit Klassenbibliotheken hinbekommen, die für beide Zielplattformen existieren.
Im Prinzip zeigen ja Programme wie Firefox, Thunderbird, Gimp und Openoffice, dass dies machbar ist, wobei allerdings der Quelltext dieser grossen Anwendungen nicht "einfach so" auf eine andere Plattform übertragbar sein dürfte, man wird die Sourcen manuell darauf vorbereiten müssen.
Alky ist irgendwie ein Zwitter aus beiden Möglichkeiten (ich finde den Ansatz nicht sonderlich elegant). Man nimmt das ausführbare Programm für Windows und jagt es durch einen Konverter, der daraus eine Linuxanwendung erzeugt. Im Prinzip muss dazu etwas erfolgen, was der Emulation (wie in Wine) entspricht, nur wird die Emulation quasi fixiert weggeschrieben. Dazu muss der vorhandene Maschinencode im Programm einmal komplett interpretiert werden. Wenn man die CPU-Plattform nicht wechselt, recht es evtl. wenn man Funktionsaufrufe des Betriebssystems (IRQs und API-Calls) austauscht und ich denke, genau das ist der Haken.
Wine macht das im Prinzip auch, aber eben "nur" zur Laufzeit, da spart man sich das umständliche interpretieren des Programmcodes und die Umwandlung des Maschinencodes (durch das nötige Einfügen bzw. Ersetzen der IRQ/API-Calls).
Ich denke, man hat sich bei Wine nicht umsonst für diesen Weg entschieden, er ist schon schwierig genug.
Wine und VMWare sind da nicht direkt zu vergleichen, weil VMWare ja den "einfachen" Weg geht, einfach eine neue Maschine zu emulieren, die dann eben ein echtes Windows ausführt. Am gestarteten Programm, muss dann gar nichts geändert werden.
Bis dann
Andreas
exe Dateien laufen überhaupt nicht unter Linux.
Wenn du dir einen Linuxkernel übersetzen willst, dann kannst du einstellen welche Binärformate der Linuxkernel unterstützen soll.
Linuxprogramme haben das Binärformat ELF. Dann gibt es noch aus älterer Format a.out (steht für Assembler Output).
Wenn du Javaprogramm unter Linux starten willst, dann mußt du auch die entsprechende Kerneloption aktivieren.
Es gibt von Trolltech Norwegen die QT Bibliothek. Die wurde extra für eine portable Programmierung entwickelt. Das bedeutet , man kann unter Linux ein QT Programm schreiben (oder umgekehrt unter Windows) , den Programmtext nach Windows kopieren und braucht ihn nur noch mal neu übersetzen.
Das spart viel Programmierzeit ein.
Javaprogramme sind auch plattformunabhängig. Man kann das Javaprogramm direkt von Windows nach Linux rüberkopieren und kann es auch gleich starten, ohne irgendeine Neukompilierung.
Dazu muß aber auch die gleiche , oder zumindest eine kompatible Javaumgebung installiert sein.
Das war bei Linux ein relativ großes Problem früher. Sehr viele Javaprogramme werden unter Windows mit der Javaumgebung von Sun Microsystems programmiert und unter Linux gab oder gibt es auch Javaumgenungen , die aber nicht 100 %ig kompatibel zur Umgebung von Sun Microsystems waren oder noch nicht sind.
Deshalb liefen manche Javaprogramme nicht unter Linux.
Installier am besten die Javaumgebung von Sun Microsystems. Da hast du 100 %ige Kompatibilität zwischen Windows und Linux.
unter Debian etch:
java -version
java version "1.5.0_14"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_14-b03)
Java HotSpot(TM) Client VM (build 1.5.0_14-b03, mixed mode, sharing)
Javaprogramme werden so gestartet:
java -help
Usage: java [-options] class [args...]
(to execute a class)
or java [-options] -jar jarfile [args...]
(to execute a jar file)
Dann gibt es noch die Mono Entwicklungsumgebung von Novell.
Damit kann man C# (C Sharp) Programme für die .Net Umgebung von Microsoft programmieren.
Derzeit ist Mono noch nicht 100 %ig kompatibel zur aktuellen .Net Umgebnung von Microsoft.
Theoretisch lassen sich mit Mono Windowsprogramme (exe Dateien) unter Linux programmieren , die dann später unter Windows in der .Net Umgebung von Windows laufen.
Ich würde mal sagen wenn man plattformunabhängige Programme unter Linux /Windows schreiben will, dann ist die QT Bibliothek derzeit die beste Wahl.
Oder man schreibt Javaprogramme. Ich bin aber kein Freund von Java, weil Javaprogramme zu langsam laufen.
PS: Portable Programmierung setzt gewisse Standards vorraus, sonst funktioniert diese Portabilität nicht. Bei Unix wurde der POSIX Standard und die Single Unix Spezifikation entwickelt und Linux baut mit seiner Linux StandardBase auf Teile von POSIX und der Single Unix Spezifikation auf.
Bei diesen Standards ist das Interface ( Headerdateien) und die Bibliotheken genau definiert. Wenn Microsoft sich am POSIX Standard und der Single Unixspezifilation halten würde , dann könnte man so manches Linuxprogramm nach Windows kopieren und bräuchte den Programmtext nur noch neu übersetzen (mit minimalen Anpassungen).
Ich meine die Unterschiede zwischen Unix und Linux sind weitaus geringer als zwischen Windows und Linux.
Wenn dich Unix mit seiner portablen Programmierung interessiert, dann kannst du hier mal nachlesen:
http://www.unix.org
Hallo KarstenW,
Ohh das ist aber schade..
also keine EXE.?
nun denn!
MfG
Liberté
;~)
Das Java langsam ist gilt schon seit Jahren nicht mehr. U.a. auch durch Einführung eines JustInTime-Compilers konnten deutliche Beschleunigungen gegenüber den ersten Java-Versionen erzielt werden. Und wenn man auf die SWT statt auf das fette Swing wird man bei Desktopanwendungen auf heutigen Systemen keinen Geschwindigkeitsunterschied zu nativen Anwendungen feststellen können.
Die QT-Bibliothek ist nach meinem Eindruck übrigens auch nicht gerade als Leichtgewichtig zu bezeichnen. Dann doch lieber GTK(+)...
also gerade qt4 ist eigentlich echt toll. Zumal QT Programme in absehbarer Zeit auch _relativ problemlos_ auf windows laufen sollten. KDE läuft ja schon auf Windows. Gnome hingegen nicht.
Java ist was unabhängigkeit angeht sicher weit im vorteil. Aber QT ist sicher schöner mit zu spielen als GTK, zumal GTK halt einfach super extra häßlich in meinen Augen ist (also das was der user sieht ;-) )
Ich habe bislang noch nie das Verlagen gehabt KDE unter Windows laufen zu lassen. Gnome auch nicht, obwohl mir das deutlich mehr zusagt als KDE.
Aber QT ist sicher schöner mit zu spielen als GTK
Sowas animiert natürlich auch wieder dazu alle mehr oder weniger nutzlosen Möglichkeiten voll aus zu schöpfen und sinnlos Rechenzeit zu verbraten ;-)
zumal GTK halt einfach super extra häßlich in meinen Augen ist
GTK ist schlicht und funktional, ohne irgerndwelche Schnörkeleien. Gefällt mir deutlich besser, ich gestehe allerdings das ich wohl eher etwas puristisch eingestellt bin in dieser Beziehung.
Gruß
Borlander
ok, das habe ich schlecht dargestellt.
Mit "spielen" meinte ich auf programmier-technischer Ebene ;-)
mit "super häßlich" meinte ich tatsächlich das frontend. IMHO ist es halt so, dass gonme user möglichst wenig entscheidungskraft haben wollen (wissen nix und wollen nix wissen). Gnome und KDE sind einfach (imho - wie immer) für unterschiedliche usertypen geeignet / geschaffen. So einfach kann es sein....
Vielleicht ist doch nicht immer alles so einfach.
Aber bemerkenswert ist, wie tiefgreifend Deine Suse-Affinität Deine Meinung über andere Menschen beeinflusst.
Gruß
Rheinlaender, Nixwisser & Nixwissenwoller (iyho)
was hat denn meine openSUSE Affinität mit der wahl des Desktops und meiner Einschätzung über die Menschen zu tun?
Meine Aussage kann ich sogar belegen - schliesslich wird genau sowas in Anwenderstudien untersucht. Als nächstes wirfst du mir noch vor ich hätte das abwertend gemeint...
Ich kann leider keine Studien hier veröffnetlichen die Intern gemacht werden. Deswegen gibt es keine offiziell verfügbaren Ergebnisse in der letzten Zeit.
Dennoch will ich meine Aussage noch belegen:
http://developer.gnome.org/projects/gup/
http://developer.gnome.org/projects/gup/usertesting.html
Ich zitiere aus http://developer.gnome.org/projects/gup/ut1_report/report_main.html :
"The most successful environment will allow the user to accomplish the intended tasks without constantly being aware of the interface as a collection of objects and behaviors."
--> Gnome zielt in der Entwicklung darauf ab, user zu befriedigen die möglichst wenig Wissen haben wollen oder haben. Das ist im softwaredesign auch immernoch so. KDE will auch solche user befriedigen können, geht den Weg aber viel inkonsequenter und lässt einfach mehr Türen auf. Deswegen sind diese beiden DEs auch de fakto wirklich für unterschiedliche Usertypen konzipiert. Das z.B. im Verwaltungsbetrieb (überall wo der user nix wissen will / sich nicht für das system interessiert / absolut keine ahnung hat) ist Gnome deswegen besser geeignet als KDE (da man dort mehr spielen und kaputtmachen kann). Das ist Absicht und OK so.
Gnome ist also wirklich für user konzipiert die nix wissen oder wissen wollen, können oder können wollen. Statistisch gesehen erwarte ich auch, dass genau solche user gnome benutzen. Die Praxis bestätigt dies auch.
Edit:
Siehe auch hier http://developer.gnome.org/projects/gup/ut1_report/ui_principles.html :
"Aesthetic and minimalist design
Dialogs should not contain information which is irrelevant or rarely needed. Every extra unit of information in a window that is unnecessary or indecipherable competes with the critical information in the window, diminishing its visibility. Don't clutter the screen with too many windows, overload the user with icons, or put dozens of buttons in a dialog box. Keep gratuitous visual clutter to a minimum and ensure that the graphics that are presented are of top quality and legibility."
Deine Argumentation ist hanebüchen.
http://www.kde.org/support/ :
"KDE is a graphical desktop environment used by many different individuals. The KDE project strives to be usable for as many people as possible. For this purpose we need usability studies about how KDE is usually used by non-expert people and which areas of KDE are unintuitive."
Natürlich gibt es zu diesem Zweck auch bei KDE ein eigenes Projekt:
http://usability.kde.org/
Ich kann aus Deinen Gnome-Links beim besten Willen nirgendwo auch nur im Ansatz rauslesen, dass Gnome in irgendeiner Form eine andere Zielgruppe hat als KDE oder was Du da alles reinintrerpretierst. Außerdem denke ich eher, dass im Schnitt mehr Windows-Umsteiger KDE nutzen, weil es der gewohnten Oberfläche ähnlicher ist. So wie Du argumentierst (KDE - viele Einstellungsmöglichkeiten - erfahrene Anwender; Gnome - weniger Möglichkeiten - unerfahrene Anwender) müsste die Administration auf der Konsole ja für Leute sein, die überhaupt gar keine Ahnung von PCs haben.
Ich kann leider keine Studien hier veröffnetlichen die Intern gemacht werden.
:))
Na gut, das schlägt meine Argumente natürlich um Längen. Dann hast Du wohl recht.
Gruß
Rheinlaender, der auch sooo gerne Geheimnisträger wäre
hmmm, ich weiß auch nicht was ich dazu noch sagen soll.
So wie es imho umgesetzt wird sehen ich und andere aber schon einen Unterschied in "usable for as many people as possible" und "The most successful environment will allow the user to accomplish the intended tasks without constantly being aware of the interface as a collection of objects and behaviors." als auch "Dialogs should not contain information which is irrelevant or rarely needed".
Die usability wird bei KDE wohl eher auf den Menschen bezogen der vor dem PC sitzt, als bei Gnome auf das logische Konstrukt es allen irgendwie recht zu machen. Ich sehe in genau diesen beiden Sätzen jedenfalls genau den Unterschied zwischen KDE und Gnome.
Gnome benutzter GTK als Graphikbiliothek. Aber nicht jede GTK-Anwendung muß automatisch was mit Gnome zu tun haben....
Du weißt warscheinlich gar nicht was portable Programmierung bedeutet.
Wenn man ein Programm portable programmiert, dann will man damit erreichen das der gleiche Programmtext sich unter verschiedenen Unixderivaten oder Linuxdistributionen übersetzen (kompilieren) läßt.
Programmieren ist sehr arbeitsintensiv und man hat unter Unix extra den POSIX Standard und die Single Unixspezifikation entwickelt, damit ein Programmierer den Programmtext zwischen den verschiedenen Unixderivaten (AIX Unix, HP UNix...) kopieren und neu übersetzen kann.
Linux geht mit seiner Linux StandardBase noch einen Schritt weiter und hat die Unix Standards um Bibliotheken für Desktopanwendungen weiterentwickelt. Wenn man eine Linuxdistribution wählt die zur Linux Standard Base kompatibel ist, kann man Programme installieren die unter einer anderen LSB kompatiblen Distribution programmiert wurden.
Leider interessiert Microsoft weder der POSIX Standard noch die Single Unixspezifikation (und schon gar nicht die Linux Standard Base).
Deshalb ist eine portable Programmierung zwischen Linux und Windows derzeit nur mit der QT Bibliothek eingeschränkt möglich, mal abgesehen von Javaprogrammen.
Hallo
ne ich wusste natürlich das exe generell unter linux nicht laufen,ich wollte nur mal nen kleinen überblick was so möglich ist und was nicht,ich hab vom programmieren null ahnung,obwohl mich das schon reizen würde,die frage ist ob ich das neben der firma noch in meinen kopf unterbringen kann.Anlass war das ich gehört habe das google anstrengungen unternimmt um photoshop zu portieren,und ich mir der möglichkeiten nicht klar war wie die das anstellen wollen,ich habe das glück cs2 als werbegeschenk(a bissel abgespeckt)bekommen zu haben und dies unter wine zum laufen bekommen habe,war auch eigentlich recht einfach und läuft stabil,aber wär schon einfacher als deb package zu installieren.mich ärgern halt so sachen,zb sony,wenn ich schon 300 € für nen player ausgebe,möchte ich den bitte schön auch unter linux,oder min den 5 verbreitetsten OS nutzen können.Soetwas bringt mich dann einfach dazu,diese firmen zu blockieren und mir andere sachen zu kaufen.
Wie schon gesagt , mit der QT Bibliothek geht diese portable Programmierung zur Zeit am besten.
Viele Firmen nutzen aber Bibliotheken von Microsoft (MFC Bibliothek) oder von Borland.
Microsoft oder Borland haben kein richtiges Interesse ihre Bibliotheken für Linux zu entwickeln.
Wenn man sich erst mal in die MFC und Visual Studio eingearbeitet hat, steigt man nicht einfach auf QT von Trolltech Norwegen um.
Die Rechner sind mittlerweile so schnell, da kann man auch mal VMware starten.
Oder wenn du einen Prozessor von AMD oder Intel nutzt der die Paravirtualisierung von XEN unterstützt, dann kann man ein Windows unter Linux starten und Windowsprogramm genau so schnell laufen lassen wie unter Windows nativ.
XEN ist aber noch in der Entwicklung:
http://rootwiki.unixfreunde.de/index.php/XEN:Portal
http://de.wikipedia.org/wiki/Xen
XEN funktioniert aber auch nur mit speziellen Prozessoren von AMD oder Intel.
Und warum haben die dann in aller Welt zusammen mit Kylix die CLX eingeführt als portable Alternative zur VCL? Und das ist schon bald eine halbe Ewigkeit her...
Kylix wird schon seit Jahren nicht mehr weiterentwickelt. Ich wüßte zumindest nichts davon.
Als ich unter SUSE 9.0 Kylix von Borland ausprobiert hatte, bekam ich von yast nur Fehlermeldungen das ein Menge an Bibliotheken nicht vorhanden waren.
(Yast hatte damals leider keinen Paketmanager wie APT bei Debian)
Diese Kylix Version war mit SUSE 7.2 kompatibel.
Weder Borland noch SUSE konnten mir sagen woher ich die fehlenden Bibliotheken bekommen konnte.
Das das die QT-Bibliothek besonders toll findest hast Du in der Vergangenheit schon öfter durchblicken lassen, aber so kann man das schlicht und einfach nicht stehen lassen. Ich kenne eine ganze Reihe von Anwendungen die für beide Plattformen verfügbar sind. Bekannte Anwendungen wie Firefox und OpenOffice setzen auf eigene Bibliotheken. Was das GTK angeht verweise ich auf GIMP, Sylpheed, Pidgin, Dia, Inkskape, AbiWord. Mir fällt allerdings spontan keine eine die QT benutzt...
Skype wird mit QT programmiert, alle KDE Programme werden mit QT programmiert.
Es kommt auch darauf an mit welcher Programmiersprache der Programmierer ein Programm erstellt.
QT ist ein C++ Framework. Die GTK Bibliothek ist für die Programmiersprache C entwickelt worden.
http://trolltech.com/
Ich kenne mich mit GTK nicht aus. Aber ich glaube nicht das man einfach den Programmtext eines GTK Programmes nach Windows kopieren kann, und neu übersetzen kann.
Man kann mit QT sogar eine Visual Studio Projektdatei unter Linux erzeugen lassen und sie dann in Visual Studio unter Windows importieren.
Ich denke mal das QT eher in Firmen eingesetzt wird.
Der Hauptvorteil von QT ist , das eine richtige Firma dahintersteht.
Wenn ich zum Beispiel die Dokumentation von QT mit GTK vergleiche, da liegen Welten dazwischen.
Bei Freiwilligen Projekten fühlt sich niemand so richtig für die Dokumentation verantwortlich. Das war auch bei Debian früher ein riesiges Problem.
PS: Hier gibt es ein paar Firmen die ihre Produkte vorstellen die mit QT programmiert wurden:
http://trolltech.com/customers
Und da hinkt die Linux Version der Windows-Version ewige Zeiten hinterher. Also wohl eher nix mit identischem Code für beide Plattformen. Mir fällt dann auch spontan keine KDE-Anwendung ein die man mal eben so einfach unter Windows laufen lassen kann...
ich glaube nicht das man einfach den Programmtext eines GTK Programmes nach Windows kopieren kann, und neu übersetzen kann.
Bei Sylpheed scheint das aber genau so funktionieren, auch wenn das wohl nicht immer so war. Aktuell gibt es nur einen Code für beide Plattformen. Zum Glauben solltest Du vielleicht besser in die Kirche gehen...
http://trolltech.com/customers
Naja. Dort finden sich dann ganz vorne unter den QT-Anwendungen z.B. noch Adobe Photoshop Album. Wäre mir neu wenn das auch unter Linux verfügbar wäre. Und Scribus läuft meiner Erfahrung nach nicht so, daß man es unter Windows sinnvoll nutzen könnte.
Es ist Unsinn zu glauben: Ich nehme mal QT und dann läuft die Anwendung unter allen Systemen für die die QT-Bibliothek verfügbar ist
Das wird auch mit GTK nicht funktionieren und sogar bei Java ist nicht automatisch sichergestellt, daß die Anwendung auf jedem System läuft.
Das mag ja alles richtig sein. Die Probleme sind nur da weil Microsoft keine Ahnung von Unix mit seiner Single Unixspezifikation und dem POSIX Standard hat.
Versuch du erstmal eine Bibliothek zu programmieren mit der man plattformunabhängige Programme schreiben kann, und noch dazu bei den riesigen Unterschieden zwischen Unix und Windows.
Das fängt doch doch schon bei den Systemaufrufen im Betriebsystemkern an.
Linux ist ja noch zum Teil mit Unix kompatibel, aber Windows überhaupt nicht.
Mir gefällt QT und Windows kann mir eigentlich egal sein.
