Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Entwickeln für Linux (https://www.delphipraxis.net/98225-entwickeln-fuer-linux.html)

fkerber 23. Aug 2007 13:16


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

Torpedo 23. Aug 2007 13:26

Re: Entwickeln für Linux
 
Zitat:

Zitat von fkerber
Gibt es sonst Alternativen mit denen ich im Idealfall gleichzeitig für Linux und Windows entwickeln kann?!

Ja, du kannst Qt oder GTK+ benutzen. Damit werden auch Programme wie Opera, Skype (Qt) oder Gimp (GTK) entwickelt.

Nils_13 23. Aug 2007 13:30

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.

Phoenix 23. Aug 2007 13:34

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.

hoika 23. Aug 2007 13:44

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

Elvis 23. Aug 2007 13:46

Re: Entwickeln für Linux
 
Zitat:

Zitat von Nils_13
Wine ist imho nicht so gut, da es nichts wirklich gut emulieren kann.

MS Office läuft darin, Win-Thunderbird und Win-firefox auch. Also wird wohl eine Delphi-App mit wenig externen Abhängigkeiten auch laufen.
@Fred

Zitat:

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).
Cool, somit gehört ihr dann nicht mehr zu denjenigen, die ihre User zu Windows zwingen, right? :)


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.

OregonGhost 23. Aug 2007 13:52

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*

Angel4585 23. Aug 2007 14:30

Re: Entwickeln für Linux
 
Zitat:

Zitat von Phoenix
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.

Also bei NetBeans ist ein guter GUI Builder drin, ich finde es ziemlich einfach.
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

christian_u 23. Aug 2007 14:43

Re: Entwickeln für Linux
 
Zitat:

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.
Also ich weiss ja nicht wie alt dein Lazarus war, bzw wie viele Minuten du dich damit beschäftigt hast. Ich entwickle jetzt seit 3 jahre mit Lazarus und hab alle meine großen Projekte dorthin portiert. Darunter z.b. ein komplettes ERP System. Ich könnt immer an die Decke springen wenn Leute sich 10 min mit was beschäftigen und dann solche Aussagen treffen. Lazarus ist nicht Bugfrei. Aber als ich das letzte mal mit Delphi 7 arbeitete, war es unter Mindows verbuggter als Lazarus heute unter Linux. Unter Linux hakts doch schon noch ab und zu unter Windows hab ich schon ne ganze weile keinen Stress mehr gehabt.

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.

hoika 23. Aug 2007 15:00

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 ?

s-off 23. Aug 2007 15:08

Re: Entwickeln für Linux
 
Zitat:

Zitat von Elvis
[...]Du blöd es klingt[...]

War das ein Freud'scher Versprecher? :lol:

Elvis 23. Aug 2007 15:11

Re: Entwickeln für Linux
 
Zitat:

Zitat von s-off
Zitat:

Zitat von Elvis
[...]Du blöd es klingt[...]

War das ein Freud'scher Versprecher? :lol:

:lol: au weia

Sidorion 23. Aug 2007 15:14

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).

mschaefer 23. Aug 2007 15:55

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

christian_u 23. Aug 2007 16:04

Re: Entwickeln für Linux
 
Zitat:

.net wird kompiliert vor der Ausführung (jit-Compiler),
also nicht interpretiert.
Quark, JIT Compiler compilieren auch wärend der ausführung stückchenweise den code.
Ich denk wir brauchen uns nicht zu streiten was schneller ist dafür gibts Benchmarks, und die sind eindeutig.

Zitat:

dann umgehst Du auch den ach so verbuggten Lazarus (mahl ehrlich, die Syntaxprüfung allein dauert im Lazarus schon ewig)
Lazarus hat gar keine Syntaxprüfung jedenfalls nicht so wie delphi. Es kann den code nur compilieren und das tut der fpc.
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...

Torpedo 23. Aug 2007 16:07

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.

mkinzler 23. Aug 2007 16:08

Re: Entwickeln für Linux
 
Wurde auch bei Kylix so gemacht. Nennt sich WineLib

mschaefer 23. Aug 2007 16:23

Re: Entwickeln für Linux
 
Mit WineLib und Delphi? Hat dass eine Chance ??? // Grüße // Martin

mkinzler 23. Aug 2007 16:25

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.

christian_u 23. Aug 2007 19:08

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.

fkerber 23. Aug 2007 19:11

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

mkinzler 23. Aug 2007 19:11

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.

Meflin 23. Aug 2007 20:06

Re: Entwickeln für Linux
 
Zitat:

Zitat von fkerber
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 ;)

Mich wundert ja dass Elvis es noch nicht vorgeschlagen hat :mrgreen:

Hast du schonmal über Chrome ( www.chromesville.com ) nachgedacht? Das ist (imho im Vergleich zu Delphi wesentlich besseres) Pascal für .Net und - in dem Fall wichtig - Mono. Da solltest du also ziemlich gut fahren können mit der Unterstützung für zwei Betriebssysteme.

Gruß
Mef


Dax 23. Aug 2007 20:08

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 ;)

RWarnecke 23. Aug 2007 20:10

Re: Entwickeln für Linux
 
Zitat:

Zitat von fkerber
Wie schätzt ihr allgemein die Realisierbarkeit ein für jemanden, der noch nie was mit Linux zu tun hatte?

Eher schlecht als Recht. Du solltest für eine Programmierung für ein Programm schon Linux kennen, ansonsten finde ich das ziemlich unrealistisch. Aber wenn Du genügend Zeit hast Dich in Linux einzuarbeiten undd Erfahrungen sammeln kannst, dann solltest Du das schon hinbekommen. Sorry, wenn ich so direktbin, dass ist nur meine Meinung.

christian_u 23. Aug 2007 21:00

Re: Entwickeln für Linux
 
Zitat:

Wie schätzt ihr allgemein die Realisierbarkeit ein für jemanden, der noch nie was mit Linux zu tun hatte?
Kommt auf dein projekt an, wenn du mit Standrtkomponenten klar kommst, und keine Hardwareanbindung brauchst mit Lazarus recht gut. Hilfe findest du dazu in entsprechenden Foren (www.lazarusforum.de, englishsprachiges forum auf der lazarus Page).

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.

fkerber 27. Aug 2007 02:03

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

christian_u 27. Aug 2007 06:42

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.

fkerber 27. Aug 2007 12:47

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