Vorbemerkung
Bekanntlich hat Microsoft ja die Weiterentwicklung von Visual FoxPro eingestellt. Dies hat zwar für die absehbare nächste Zeit erst mal keine Auswirkungen auf die Lauffähigkeit vorhandener Anwendungen, macht jedoch die Argumentation für größere Neuentwicklungen in Visual FoxPro relativ schwierig, falls keine passenden Rahmenbedingungen vorliegen, wie z.B. vorhandenes (Personal-)Know-How oder eine große existierende Codebasis.
Aus diesem Grund schauen sich viele FoxPro-Entwickler auf dem Markt nach geeigneten, alternativen Entwicklungswerkzeugen um. Der gleichzeitige Druck zu vermehrt browserbasierten Anwendung macht diese Entscheidungsfindung auch für Nicht-FoxPro-lastige Entwickler nicht einfacher.
Gründe für Servoy
Wir haben uns aus den folgenden Gründen für Servoy als strategische Plattform entschieden:
die aus FoxPro bekannte, sehr komfortable Datenbindung „fühlt“ sich in Servoy in weiten Teilen sehr ähnlich an und funktioniert sofort und ohne größere Verrenkungen.
die gesamte Infrastruktur für den Datenbankzugriff ist ausgereift und hoch performant.
Das aus FoxPro bei der Benutzung von DBF-Dateien bekannte endlose Scrollen in Listen, wird von Servoy durch dynamisches Nachladen der Daten unterstützt. Hierfür muss nichts programmiert werden.
Das Entwickeln unter Servoy ist sehr produktiv. Man muss sich relativ wenig um die Infrastruktur kümmern.
Woody hat es einmal treffend wie folgt ausgedrückt: „Während .NET-Entwickler noch im Maschinenraum Ventilschäfte polieren, kann ich mich in Servoy schon um die Extras für den Kunden kümmern“
Um performante, gut aussehende und vor allem sichere Webanwendungen zu entwickeln, muß man kein Experte für Webserver, HTTP-Kommunikation oder sichere Authentifizierung sein. Diese Themenbereiche werden von Servoy komplett und robust abgedeckt.
Servoy unterstützt alle Datenbanken/Datenquellen, für die es JDBC Treiber gibt - u.a. von
CDATA gibt es JDBC Treiber für alle möglichen Datenquellen, von Exchange bis hin zu SalesForce. Servoy-Code ist dabei grundsätzlich unabhängig von der eingesetzten Datenbank. Eine Ausnahme hiervon ist lediglich das Ausführen von selbst geschriebenem SQL Code („RAW-SQL“), was aber in der Regel nur in wenigen Sonderfällen notwendig ist.
Anwendungen können ohne Probleme gleichzeitig mehrere, auch sehr unterschiedliche Datenbanken, incl. DBC/DBF benutzen.
Der Hersteller pflegt sein Produkt seit vielen Jahren kontinuierlich und geht auf Wünsche der Entwickler ein. Wenn Wünsche der Kunden abgelehnt werden, dann wird dies begründet. Auf Fehlermeldungen wird meist zeitnah und in nachvollziehbarer Art und Weise reagiert.
Servoy legt großen Wert auf Abwärtskompatibilität. Als Servoy Entwickler muss man nicht damit rechnen, spätestens alle 3-4 Jahre große Teile seiner Codebasis und ggf. sogar die komplette Entwicklungsumgebung austauschen zu müssen.
Wie Servoy diese Abwärtskompatibilität bisher umgesetzt hat, kann man an der über 20-jährigen Entwicklung des Produktes sehen:
Um das Jahr 2000 führte Servoy den sogenannten „Smart Client“ ein, der eine auf dem Client lokal ablaufende Java-Anwendung ist.
in 2006 wurde zusätzlich der alternative „Web Client“ eingeführt, der im lokalen Browser läuft. Die Oberfläche der Anwendungen sieht nahezu identisch zum Smart Client aus. Sie hat dafür natürlich die Restriktionen einer Browser-Anwendung, wie z.B. den limitierten Zugriff auf lokale Resourcen. Änderungen an der Code-Basis waren für die Umstellung sehr überschaubar.
In 2015 wurde der „NG Client“ eingeführt, der auf damals aktueller Browser-Technik beruhte, wie AngularJS und Bootstrap. Auch hier waren die alten Anwendungen grundsätzlich weiterhin lauffähig. Für das Umsetzen von aktuellen Konzepten für die Benutzeroberfläche war das Anpassen des ggf. vorhandenen Oberflächen-nahen Codes notwendig.
Eine Deployment-Variante davon ist der NG Desktop Client, der einen NG Client in eine lokale Electron Laufzeitumgebung verpackt und somit wieder den Zugriff auf lokale Resourcen ermöglicht.
Im Jahr 2021 (erstes Release 2021.3) veröffentlichte Servoy einen neuen NG Client, „Titanium NG“ oder kurz „TiNG“ genannt, der auf dem aktuellen Angular Framework beruht. Von dieser Umstellung des kompletten UI-Stacks sind die Servoy Entwickler wiederum im Regelfall nur marginal betroffen - s.a.
Servoy zu "AngularJS to Angular.io What does it mean?".
Wir waren selbst an der Umstellung einer sehr umfangreichen Anwendung beteiligt, die zunächst einige Jahre als Smart Client-Anwendung lief und dann um den NG Client erweitert wurde, wobei beide Clients über zwei Jahre parallel liefen. Inzwischen (2023) erfolgte wegen des auslaufenden Supports für Angular JS die Umstellung auf TiNG, was wiederum insgesamt nur einen recht überschaubaren Aufwand für Anpassungen wegen der teilweise geänderten Ansteuerung der neuen UI-Controls erforderte.
Auf unseren Entwicklertreffen ist Servoy immer wieder ein Thema für den Erfahrungsaustausch.
Konzepte
Wir arbeiten noch an weiteren Inhalten…
Weitere Quellen
Auf https://www.visualfoxpro.com/ hat Omar van Galen sehr umfangreiche (englische) Infos zum Thema Migration von FoxPro nach Servoy zusammengestellt.
Dort gibt es auch eine Code Reference FoxPro ⇔ Servoy und das VFP2Servoy Toolkit, das für viele FoxPro Befehle fertige Implementationen in Javascript bereit hält.