Einzelnen Beitrag anzeigen

Benutzerbild von IBExpert
IBExpert

Registriert seit: 15. Mär 2005
646 Beiträge
 
FreePascal / Lazarus
 
#8

AW: Von Delphi auf Lazarus umsteigen. Geht das?

  Alt 24. Aug 2015, 23:36
Moin,

ja, wir haben alle neuen Projekte seit mittlerweile 4 Jahren nur noch auf lazarus begonnen. Da wir damals ein großes neues ERP Projekt begonnen haben, stand die Frage im Raum: Womit entwickeln wir auch noch in 10 Jahren das System weiter? Und wer bietet echte und native Multiplattform Entwicklung ohne fette Frameworks ...

Zu dem Zeitpunkt hat sich Delphi XE* nicht gerade mit Ruhm bekleckert und stand ziemlich schnell nicht mehr oben auf der Liste. Einige Versuche später war dann die Entscheidung für Lazarus klar und aufgrund der von mir geplanten Architektur (Front End interpretiert Datenbankinhalte, um Formulare zu erstellen und die Business Logik befindet sich eh in der Firebird DB) war eh klar, das ich nahezu alles zur Laufzeit erstelle und nur ganz wenig Sachen im klassischen Formularmodus entwickeln werde.

Erst haben wir Code Typhoon eingesetzt, dann sind wir aber wieder umgesteigen auf Lazarus ohne die doch manchmal voreiligen Schritte im CodeTyphoon mitgehen zu müssen, die nicht immer gut waren und in einigen Bereichen auch manchmal lizenztechnisch nicht ganz sauber sind. Wenn wir was brauchen, was im Lieferumfang von Lazarus nicht dabei ist, bei CodeTyphoon aber schon, übernehmen wir den entsprechenden Ordner aus dem CodeTyphoon System in das Lazarus System und wenn das läuft (war bisher immer so), dann nutzen wir genau den Stand der Komponente, ggf nach einem rebranding (pl_* wird brp_* )

In der Zwischenzeit sind wir diverse Male auf neuere Lazarus Versionen umgestiegen und es gab nie Probleme, auch weil alles portabel ist, also nicht jeden stuss in die Registry schreibt, sondern lokale Konfig Dateien in definierbaren Pfaden nutzt, so das man die IDE auch auf dem USB Stick oder externe Platte an einem völlig neuen Rechner starten kann, ohne tagelang irgendwelchen Kram nachinstallieren zu müssen.

Obwohl unser ERP Projekt zunächst nur für win32 entwickelt wurde, war die Portierung zuerst auf win64 mit der Lazarus IDE (eine Codezeile musste angepasst werden) sehr schnell erledigt, obwohl das Gesamtprojekt mittlerweile in Lazarus auch 200000 Zeilen selbstgeschrieben Pascal Code hat. Da der erste Port so einfach war, hab ich den nächsten gleich hinterhergeschoben. Der Port auf MacOSX dauerte ca eine Stunde, um das Projekt dann in der Lazarus IDE, die nativ auf Mac läuft, compilieren zu können und auch gleich dort laufen zu lassen. Es waren halt hier und da noch typische windows api sachen drin, die man halt so immer gemacht hat. Dafür passende Multiplattform Lazarusroutinen zu finden, war meist einfach, oft sogar war die Lazarus Implementation wesentlich leisungsfähiger (Beispiel shellexecute->TProcess). Eine halbe Stunde später lief der komplette Quellcode dann auch nativ auf Linux und kompiliert in der Linux Lazarus IDE, ohne weitere Änderungen am MaxOSX kompatiblen Source. Das nenn ich Multiplattform.

Für diverse kleinere Projekte haben wir auch kleine Programme auf dem Raspberry Pi mit Lazarus gemacht, auch dort läuft die Lazarus IDE. Auch kleine Tests mit Android und iOS waren ausgesprochen interessant, aber mangels dafür zahlender Projektkunden fhlt uns da im Moment der Bedarf.

Was ich selber nie getestet hab, ist der Umstieg von einem vorhandenen Delphi Code auf Lazarus. Damit kann man sicherlich viel Zeit vertrödeln, aber wenn man konsequent ist, nimmt man das gleich zum Anlass, der eigenen Quellcode mal aufzuräumen. Große Teile lassen sich oft direkt oder mit wenig Änderungen übernehmen, sofern das nicht endlose Events hinter exostischen GUI Komponenten sind. Diese Art der Programmierung empfehle ich aber nachweislich schon seit ca. 15 Jahren auch in Delphi nicht mehr. Langlebige Projekte brauchen Architekturen, die über das Formularzusammenklicken hinausgehen. Das geht sowohl in Delphi als auch mit lazarus.

Das beste an dem Umstieg war, das ich nahezu alle Objektpascal und API Kenntnisse von Delphi sofort in die neue IDE übertragen konnte und wenn mal was nicht so war wie gewohnt, war geade da ein guter Punkt, um noch mal nachzudenken. Suche ich tagelang eine Komponente, die das wieder kann oder realisiere den Teil, den ich wirklich haben will, selbst mit Ownerdraw oder anderen Techniken. Da die selbstgeschrieben eh zur Laufzeit erzeugt werden, ist mir der ganze Objektinspektor Overhead auch völlig egal, das spart sehr viel Zeit für wichtigere Dinge.

Ob der Umstieg von Delphi auf Lazarus für euch vorteilhaft ist, kann man ohne nähere Kenntnis eurer Herangehensweise nicht pauschal beantworten. Man kann in jeder Programmiersprache, auch in Delphi und Lazarus, totalen Schrott programmieren, aber mit entsprechender Architektur lassen sich in Lazarus und in Delphi sehr gute Grundlagen für langlebige Projekte legen, mit denen man noch Jahre später glücklich ist. Ob das was embarcadero da macht, wirklich multiplattform ist, muss jeder selbst beurteilen, da es keine Delphi IDE auf Mac OSX gibt und nicht mal eine native Win64 Version der IDE existiert, ist da Lazarus sicherlich deutlich überlegen, von den Linux varianten gar nicht erst zu sprechen. Mit persönlich gefällt der Firemonkey Ansatz nicht, aber ich muss den ja auch nicht benutzen.

Da ich mittlerweile sicherlich 3000-4000 Stunden mit der lazaus IDE programmiert habe und vorher seit Delphi 0.9 im Jahr 1994 bis 2011 nahezu alles in Delphi gemacht habe, glaub ich schon, mir ein Urteil darüber erlauben zu können. Lazarus ist definitiv reif für den Einsatz im kommerziellen Umfeld.
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
IBExpert and Firebird Power Workshops jederzeit auch als Firmenschulung
  Mit Zitat antworten Zitat