![]() |
Entwickeln für Linux
Hi!
Ich habe ein Problem... Ich habe momentan einen Auftrag, ein Programm mit Datenbankanbindung zu entwickeln. Grundidee des Auftraggebers war eine Anbindung an MS Access (verständlicherweise unter Windows - überwiegend 2000). Aus einem mir noch nicht bekannten Grund hat der Auftraggeber quasi von jetzt auf gleich einen recht großen Hass auf Microsoft und alle seine Produkte entwickelt. Ausgetauscht wurde jetzt bereits der Server und nach und nach sollen die Clientrechner auch ausgetauscht werden (geplant ist die Umstellung, wenn Windows 2000 nicht mehr supported wird). So kam dann heute der Anruf, ich solle mir doch da mal was überlegen... Jetzt muss ich gestehen, dass Linux ein Buch mit weit mehr als nur sieben Siegeln für mich ist. Ich habe also primär mal keine Ahnung, wo ich hier anfangen müsste. Eine kurze Suche im Forum hat mich jetzt auf Lazarus gebracht. Damit kann ich doch für Windows und Linux gleichermaßen entwickelt, oder? Heißt das, dass ich ein und denselben Code auf Knopfdruck entweder für Windows oder Linux kompilieren kann? (Bis zu besagter Umstellung soll die Sache ja noch unter Windows laufen) Kann ich mit meinen Delphi-Kenntnissen (mit denen ich das Projekt unter Delphi problemlos bewältigen kann) das Projekt schaffen oder muss ich da mit unvorhersehbaren Problemen rechnen? Gibt es Besonderheiten zu beachten bzgl. der diversen Linux-Distributionen oder ist das alles eins beim Entwickeln? Bei plattformübergreifend klingelt ja irgendwo (ganz hinten) auch noch Java rum... Kann jemand da eine Abgrenzung Java / Lazarus treffen? (Natürlich kein Vergleich der Programmiersprachen, sondern mehr ein Aufwandsvergleich...) Gibt es sonst Alternativen mit denen ich im Idealfall gleichzeitig für Linux und Windows entwickeln kann?! Ich vermute ja mal, dass das dauerhafte Ausführen der Anwendung unter Wine o.ä. keine Alternative für ein produktives System ist, oder? Ciao, Frederic |
Re: Entwickeln für Linux
Zitat:
|
Re: Entwickeln für Linux
Wine ist imho nicht so gut, da es nichts wirklich gut emulieren kann. Deshalb ist das wirklich die letzte Lösung und außerdem würde ich dir lieber CrossOver (leider kostenpflichtig) empfehlen, funktioniert viel besser.
Du kannst mit Lazarus entwickeln. Vermutlich wirst du irgendwann allerdings bekloppt, da Lazarus tausend Fehler hat und es einfach nicht an zumindest Delphi7 rankommt. Viele Fehler, wie z.B. Internal errors, zeigen sich erst später oder ab einer gewissen Projektgröße. An sich kann man aber sagen, dass du mit Lazarus für Linux, Windows und Mac - leider manchmal wegen den Bugs nicht einwandfrei - entwickeln kannst. Du kannst Befehle, wie z.B. ShellExecute vergessen. Stattdessen kann man einfach die Unit Process einbinden, sich einarbeiten und ist auf der plattformunabhängigen Seite. Java ist im Vergleich zu Lazarus mit Garantie fehlerfreier. C/C++ ist ideal, da du einfach nur die GNU Compiler Collection (gcc) installieren musst und dann problemlos alles machen kannst (der Compiler für C heißt übrigens auch gcc und für C++ eben g++). Zu Distributionen kann man nur sagen, dass du dich schlau machen musst, was am besten zu dir passt. Am einfachsten wird es wahrscheinlich mit C/C++ oder an nicht Lazarus, sondern nur FreePascal. Es ist deine Entscheidung. |
Re: Entwickeln für Linux
Guis mit Java sind eine Katastrophe. Es mag sich vielleicht im Backend-Bereich für die eine oder andere nicht performance-Kritische Anwendung eignen, aber versuche einfach mal ein Gui mit Java zu bauen. Danach wirst Du Dich unter Garantie nach Alternativen umgucken.
|
Re: Entwickeln für Linux
Hallo,
also ich habe hier Wine (0.9.43). Da läuft sogar eine alte BDE-App (Firebird als DB) ganz gut. Aber es stimmt, es kann immer mal passieren, dass ein API noch nicht umgesetzt wurde. Heiko |
Re: Entwickeln für Linux
Zitat:
@Fred Zitat:
Wenn du den Delphi/Wine Weg gehen willst, stelle sicher welche Fonts du wählst. Du blöd es klingt, aber die größten Probleme mit Wine sind einfach nur Fonts... :lol: Auf der anderen Seite kannst du dein Projekt auch zu FPC/Lazarus portieren. Die notwendigen Codeänderungen können von lächerlich wenig bis krass viel werden, je nachdem wie RAD-verseucht dein DB-Zugriff und/oder deine Logik ist. Delphi-Formulare lassen sich mit einem Tool in Lazarus Formulare umwandeln. (Lazarus unterstützt keine Resources, da Linux keine hat) Cross compiling gibt es nur mit 50 Umwegen, aber das willst du nicht. Kompiliere die Windows app unter Windows und die Linux App unter Linux. Eine "richtige" Linux App, mit Lazarus kompiliert, wird aber immer besser ankommen und sich besser benehmen als eine Windows app in Wine. IMMER. |
Re: Entwickeln für Linux
Für eine plattformunabhängige GUI würde ich am ehesten Qt, z.B. im Zusammenhang mit Visual Studio 2005 (ab Standard) oder KDevelop, empfehlen. Da musst du aber bedenken, dass eine kommerzielle Entwicklung auch eine kommerzielle Lizenz erfordert, deren Preis im vierstelligen Bereich (pro Entwickler) liegt. Für alles außer GUI kommt man eigentlich auch ohne Qt zurecht, auch wenn es mit meist einfacher ist.
Was Java angeht: Plattformunabhängigkeit schön und gut, aber wie Phönix schon sagte, bau damit erstmal eine zünftige GUI und du wirst sehen, warum Qt im kommerziellen Bereich sehr viel weiter verbreitet ist. GTK+ würde ich mir auch nicht unbedingt antun, wenn es nicht absolut notwendig ist. Andererseits gibt es im C++-Bereich noch viele Alternativen wie zum Beispiel wxWidgets. So vollständig und ausgereift wie Qt ist allerdings keins davon. Qualität (:mrgreen:) hat eben ihren Preis. Dafür bekommst du eine Anwendung, die unter Windows, Linux und MacOS X nativ ist. Oh, noch was zu Java-GUIs: Qt gibt es seit einiger Zeit auch für Java *g* |
Re: Entwickeln für Linux
Zitat:
Klasse find ich auch das man in TreeViews seine eigenen Bäume usw reinhauen kann und damit völlig frei ist. Ich würds in Java machen, ist echt angenehm. Zumindest für mich und mit NetBeans. Ich kann nicht sagen obs mit Eclipse schwieriger ist |
Re: Entwickeln für Linux
Zitat:
Mit Lazarus ist man meiner meinung weit besser dran als mit Codegear. Bei .net bin ich mir da noch nicht so sicher aber ich für meinen teil setz lieber auf die native Lösung als auf interpretierten Code. Ach und zu den QT geschichten,das Lazarus QT Widgetset ist noch nicht ausgereift aber die zeit die du in die Entwicklung deiner kompletten Oberfläche ohne RAD steckst in der dürftest du auch etliche Sachen am QT Interface geradegezogen haben, und du wärst ja nicht der einzige der daran arbeitet ... Alternativ sind ja dann auch noch GTK,GTK2 da. |
Re: Entwickeln für Linux
Hallo,
> 10 min > > auf die native Lösung als auf interpretierten Code > jaja, wer im Glashaus sitzt ;) .net wird kompiliert vor der Ausführung (jit-Compiler), also nicht interpretiert. Und wer will, kann auch direkt nativs erzeugen (ngen). Heiko PS: zu kdevelop war doch gerade was im entwickler ? |
Re: Entwickeln für Linux
Zitat:
|
Re: Entwickeln für Linux
Zitat:
|
Re: Entwickeln für Linux
Hier geht's doch um die Portierung einer existierenden Applikation auf Linux, oder? Da ist es allemal einfacher, den Delphicode FPC kompatibel zu machen und unter Linux zu übersetzen, als das gesamte Programm in einer neuen Sprache neu aufzusetzen. Zudem ist der Code dann nativ. Java und Qt in Ehren, aber solche Alternativen sucht man, wenn man ein neues Projekt aufsetzt.
p.s.: Du kannst ja in der Delphi-IDE entwickeln und den Code gelegentlich durch den FPC-Compiler jagen, was der dazu sagt, dann umgehst Du auch den ach so verbuggten Lazarus (mahl ehrlich, die Syntaxprüfung allein dauert im Lazarus schon ewig). Mit der Zeit entwickelt man dann schon ein Gefühl, was FPC mag und was nicht, der hält sich nämlich wesentlich strenger an die Delphi-Language, als der Compiler von Borland (Beispiel Zuweisung von Eventhandlern: Da verlangt der FPC-Compiler ein @, was eigentlich korrekt ist, aber die Borlands haben das aus Kulanzgründen wegfallen lassen). |
Re: Entwickeln für Linux
Muß dass wirklich eine Linuxanwendung sein? Habe etliche D6-Anwendungen die bestens
unter Linux-Wine laufen. Das Wineprojekt ist inzwischen richtig gut geworden. PS: Eventuell muß Wine nachinstalliert werden, aber dass sollte kein Problem sein. Grüße // Martin |
Re: Entwickeln für Linux
Zitat:
Ich denk wir brauchen uns nicht zu streiten was schneller ist dafür gibts Benchmarks, und die sind eindeutig. Zitat:
Die Codetools parsen deinen code ständig ohne das du es auch nur mitbekomst um zu wissen wo ne variable zu finden ist oder wo man ne deklaration einfügen kann usw. Also wenn man nicht weiss wovon man redet... |
Re: Entwickeln für Linux
Es gibt auch irgend einen Weg Windows-EXEn so umzuändern und mit wine-libs zu verlinken, so dass sie nativ (auch ohne installierten wine) unter Linux laufen. Das hat z.B. Google mit diesem Bildprogramm (Picasa?) gemacht.
Aber ich weiß nicht, ob das auch mit Delphi läuft. |
Re: Entwickeln für Linux
Wurde auch bei Kylix so gemacht. Nennt sich WineLib
|
Re: Entwickeln für Linux
Mit WineLib und Delphi? Hat dass eine Chance ??? // Grüße // Martin
|
Re: Entwickeln für Linux
Wäre wohl eine gewisser Aufwand, welcher ab von Borland damals als geringer als die Neuentwicklung/portierung der IDE von VCL nach CLX erachtet wurde.
|
Re: Entwickeln für Linux
Ja nur das es schlichtweg keine nativen Anwendungen sind und man ne menge geschwindigkeit wegwirft und ausserdem noch nichtmal ein natives Look&Feel hat.
|
Re: Entwickeln für Linux
Hallo!
Vielen Dank für eure Antworten! Erstmal zur "Richtigstellung": Das Projekt existiert noch nicht wirklich. Soll heißen, die Entwicklungszeit liegt momentan noch mehr in der Planung. Es wurden noch nicht mehr als 100 Zeilen Code dazu geschrieben ;) Allerdings ist halt die Sache, dass das Programm zunächst wohl mal unter Windows laufen soll und erst später dann (möglichst ohne großen Aufwand)... Ich versuche mal eure "Meinungen" zusammenzufassen: Qt wäre prima - kostet aber im gewerblichen Bereich einiges (geht ja erst bei 1420 € los - fällt für mich wohl raus) Java widerstrebt mir persönlich ( ;) ) und diese Sache mit dem gui-designen erinnert mich an eigene Erfahrungen Dann blieben noch Lazarus (von dem einige sagen, dass es wohl verbuggt wäre...), die C++ Sache (wo finde ich denn da mehr Infos?) und eben Wine (o.ä.), wobei mir diese Lösung etwas komisch vorkommt - also bewusst unter Linux mit Windows arbeiten finde ich etwas seltsam... Habe ich das soweit richtig erkannt? Wie schätzt ihr allgemein die Realisierbarkeit ein für jemanden, der noch nie was mit Linux zu tun hatte? Ciao, Frederic |
Re: Entwickeln für Linux
Programme, welche gegen die Winelib gelinkt sind, sind native Anwendungen. Die Winelib lenkt ja Win32-APIs auf Linux-AISs um.
|
Re: Entwickeln für Linux
Zitat:
Hast du schonmal über Chrome ( ![]() Gruß Mef |
Re: Entwickeln für Linux
Uner Chrome funktioniert sogar Crosscompiling von .net zu mono. Das einzige ist, dass du entweder konsequent Gtk# verwendest, oder zwei Interfaces bastelst - die System.Windows.Forms-Unterstützung von Mono ist noch, um es so zu sagen, unvollständig. Ich hab Control.Anchors nie richtig funktionierend in Aktion gesehen ;)
|
Re: Entwickeln für Linux
Zitat:
|
Re: Entwickeln für Linux
Zitat:
![]() Bei größeren Anwendungen wirst du definitiv auch kentnisst über das betriebsystem und möglicherweise auch das Widgetset brauchen. Weiterhin ist die Frage ob du Unicode brauchst, die neuen Widgetsets sind weitestgehend dahin umgestellt aber die stabilen alten noch nicht. Mach dir von allem selbst ein Bild, ich kann nur sagen das ich mittlerweile 3 Jahre gut mit Lazarus fahre. Es ist nicht Bugfrei und es ist keine Hilfe wie in Delphi vorhanden (wobei man die Delphi Hilfe durchaus nutzen kann 90% Treffen zu) viele leute die von Delphi kommen sind auch sehr Windows lastige Lösungen gewohnt. Man kann im lazarus die WinAPI z.b. nicht komplett benutzen es sich sicher weniger als 1% implementiert das ist aber auch nicht der Sinn der Sache. Es gibt sehr oft schöne Pascaltaugliche Plattformunabhängige Wege etwas zu machen statt die WinAPI zu benutzen. ich kann bei den leuten die hier schrein Lazarus sei verbuggt nur vermutungen anstellen da diese ja nie dazu sagen wo Sie Probleme hatten aber oft kommt mir das vor wie "nach 10min verzweifelt" oder "Ich hab Schalter sowiso nicht an der selben Stelle wie im Delphi gefunden". Lazarus ist nicht Delphi und das ist auch gut so. Man kann damit aber Oberflächen zusammenklicken und Pascal programmieren. |
Re: Entwickeln für Linux
Hi!
Ok, Theorie ist schön und gut - ich hab mich mal an der Praxis versucht! Ob, der Weg gut war, würde ich jetzt gerne von euch hören ;) Also: Man nehme einen virtuellen (oder realen) PC (ich denke, das macht keinen Unterschied), packe die neueste Ubuntu-Version drauf... Dann installiere ich diese tolle "Anjuta IDE" - und mit etwas Müh und Not, kann ich Hello World auf den Bildschirm schreiben... Das Ganze sogar nicht nur in der Konsole, sondern als "echtes" Fenster... Geschrieben habe ich den Krempel jetzt in C++ und was das grafische angeht, habe ich (soweit ich das überblicke) irgendwie was mit Glade für oder mit Gnome-"Unterstützung" erstellt... Ist das Ganze da ein gangbarer Weg, um erste Erfahrungen zu sammeln oder bin ich hier auf dem Holzweg? Wenn gangbar, reicht es dann für mehr als erste Erfahrungen oder eher nicht? Jeglicher Tipp ist willkommen! Eine grundsätzliche Frage noch, weil ich da hab was läuten hören: Läuft das erstellte Programm auch auf anderen Linux-Distributionen oder wären dafür spezielle Schritte notwendig? (vor allem Debian-fremde Systeme)? Ciao und vielen Dank Frederic |
Re: Entwickeln für Linux
Das kommt immer aufs Widgetset an aber GTK(2) bringen eigentlich alle aktuellen Distributionen mit. Versteh nur nicht warum du nicht Lazarus nimmst, aber deine Geschichte.
|
Re: Entwickeln für Linux
Hi!
Was genau ist denn dieses "Widgetset"? Welches bringt denn Lazarus da mit? Laufen die Lazarus-Anwendungen auf anderen Rechnern ohne, dass sont etwas installiert werden muss? Warum ich nicht gleich Lazarus verwendet habe? Weil es mich erstmal weitere 6 Stunden gekostet hat, es zum Laufen zu bekommen :stupid: Jetzt isses aber auch drauf und einsatzfähig... Ciao, Frederic |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz