26. Sep. 2007
Die 4D V11 SQL wurde rechtzeitig zur AppleExpo (25.-29. Sep. 2007) released, in Paris vor der eigenen Haustür. Alles neu macht der September? Wird das ein richtiger Kehraus oder mehr ein gleitender Übergang? Das Wichtigste sofort:
Die V11 bringt sinnvolle Neuerungen!
Sie ist kein kompletter Bruch, sie wirft nicht alles über den Haufen
Das ist gut so, Gerd Fröbe ist lange tot! 2004er-Datenbanken können mit einem überschaubaren Aufwand weiterlaufen. Wer gegen 4D programmierte oder immer einen eigenen Weg wählte, der hat mehr Arbeit. Niemandem, weder mir als Entwickler noch meinen Kunden, wird ein kompletter Wechsel aufgedrängt. Das spart sehr viel Aufwand in allen Ressourcen. Die Kontinuität wird gewahrt und der Fortschritt in verträglichen Dosen verabreicht. Super!
Es ist eine spannende Zeit. Dies habe ich in den ersten Stunden gesammelt:
4D V11 SQL
4D reicht jetzt – 4th Dimension [fɔːθ dɪˌmɛnʃ(ə)n] ist Vergangenheit. Die Zungenbrecher sind raus und im Sprachgebrauch war das immer schon 4D.
V11, das ist ein Sprung von der V6 über V7 (2003) und V8 (2004) bis heute.
Der Verzicht auf Jahreszahlen als Versionshinweis ist goldwert. Der Kunde muß sich nicht entscheiden, ob er bewährte Technik bekommt oder einen Ladenhüter. Adobe hatte das bereits 1989 gelernt und keinen Nachfolger zu Illustrator 88 rausgebracht. MicroSoft hat lange gebraucht, das rauszufinden.
SQL … „Ick bün al dor!“
Was die 4D V11 SQL kann, das steht auf der 4D WebSite und in der Feature-Liste. Hier gibt es ein work-in-progress, ständig entdecke ich was Neues.
Listboxen entwickeln sich zu den neuen Ausgabe-Formularen
Bisher konnten Listboxen nur Arrays darstellen. Das hat bei großen Arrays seine praktischen Grenzen. Jetzt stellen Listboxspalten wahlweise Felder und berechnete Inhalte dar. Es ist ein entweder oder, entweder Arrays oder Felder/Vars. Damit kann ich besser leben, als ohne diese Wahl.
Der on display event feuert für Listboxen, dito gibt Displayed line number die Zeilennummer zurück. Was will man mehr: on the fly Zellen füllen, berechnete Ausdrücke in Listboxen zur Laufzeit und nicht vorweg? Jetzt stampfe ich alle eigenen Caching-Ansätze ein, denn Listboxen laden Datensätze nach.
Bearbeiten in einer Listbox-Zelle ändert den Feldinhalt. Die Änderung wird automatisch gesichert und 4D kümmert sich ebenfalls um konkurrierende Zugriffe. Das hatte ich mir schon gebaut, kann ich für Pivot-Tabellen weitergebrauchen.
Included Layouts
Nicht mehr nur als Liste sondern auch als Einzeldatensatz-Formular. Das muß ich nochmal anders formulieren! Included Layouts können wie Dialoge verwendet werden und müssen noch nicht einmal aus einer anderen Tabelle stammen. Damit kann ein Formular in vielen anderen Formularen Verwendung finden – endlich, halleluja!
Das ist besser, sehr viel effizienter nutzbar als die geerbten Formulare in 4D. Die geerbten Formulare haben die beschriebenen Einschränkungen.
Unicode
In der V11 ist es einfach oder überhaupt erst möglich, alle Welt in eine Datenbank zu fassen. Osteuropäische, asiatische und alle andere Sprachen, Lautschrift, Braille, Symbole, …. Das sieht in 4D V11 so aus:
Spotlight für 4D?
Keyword-Suche ist Bestandteil der Datenengine. Sie funktioniert nur für Worte, erlaubt aber den Joker am Ende. Es gibt einen speziellen Indextyp für Schlüsselworte, damit das Tempo stimmt. Das und mehr als 16 Mio. Datensätze hilft mir gewaltig, meinen Anwender Spotlight-Fähigkeiten in 4D anzubieten.
Jetzt können wir Datenbankler auch große Festplatten füllen :-)
Ob ich passend dazu unzusammenhängende Auswahlen im Text darstellen kann, habe ich noch nicht probiert.
Fenster
Ich kann in einem Prozeß mehr als ein Fenster als Dialog öffnen. Nicht mehr pro Fenster ein Prozeß. Endlich oder doch zu spät? Der Paletten-Wahn läßt nach und die Schubladen-Fenster, für die ich das Extra-Fenster gut hätte brauchen können, laufen aus. Die Optionen aus den Paletten werden jetzt direkt ins Fenster gedockt, Mac wie Windows, und es bewährt sich. Für diesen Einsatz wird mir das neue Included Layout mehr nutzen. Muß ich ausprobieren.
Auf Mac wird das Alu-Fenster angeboten. Zu spät! Unified window ist der neue Alu-Look. Hier sind Fenstertitel und die Toolbar eine Einheit. Das würde helfen, denn auch die Ribbons in Vista und Office verbrauchen mehr Platz oberhalb der Nutzfläche.
Grenzen sprengen
Blau ist alt, rot ist neu. So klein udn nicht lesbar, wirkt der Zuwachs noch besser. Und wäre die Skala nicht logarithmisch, wäre diese Seite zu schmal.
Die maximale Anzahl Datensätze ist nicht unbegrenzt, wurde um drei 10er-Potenzen nach oben geschoben. Die Indizes nehmen noch mehr Einträge auf. Die Sorgen sind vorbei! China oder die Welt lassen sich noch immer nicht in eine Tabelle packen, aber sonst reicht es hin. Falls jemand nicht genug mit 256 Tabellen oder 512 Feldern je Tabelle hatte, kann beides bis zur praktischen Grenze bei 32000 treiben. Will das jemand ausprobieren?
Textfelder nehmen bis 2 GB auf und Felder vom Typ Alpha sind von 80 auf 255 Zeichen gewachsen. Die IBM-Lochkarte ist tot. Texte/Blob werden nur geladen, wenn sie gebraucht werden, nicht wenn ein Datensatz geladen wird. Das nimmt uns Extra-Arbeit ab. Ville merci
Die Lange Ganzzahl (longint) ist getoppt durch die doppelt so lange Ganzzahl 64 Bit 264. Die integer heißt jetzt 216, longint wurde zur 232. Die Real-Zahl ist ergänzt um den Typ Fließkomma, also nichtganzzahlige Zahlen in einem wesentlich größeren Zahlenraum, als der der real.
4D führt in der V11 mehrere Indextypen ein. Mir wichtig sind der zusammengesetzte Index (endlich) und der Keyword-Index. B-Tree (ich dachte 4D verwende immer schon B-Tree) und clustered B-Tree muß sich noch zeigen.
Datensegmente fallen ganz weg, die 2 GB-Grenze für eine Datendatei ist gefallen. Ich hätte mir gewünscht, daß Segmente bleiben und die 2 GB fällt. Segmente sind unter der Bedingung, daß ich als Entwickler festlegen kann welche Daten und Indizes in welches Segment gespeichert werden, eine gute Möglichkeit, zu modularisieren. Vielleicht sollte ich dazu auf die anderen Datenquellen ausweichen.
Andere Datenquellen
Nun kann 4D auf andere Datenquellen zugreifen. Wahlweise können Bilder, große Texte, Blobs auch außerhalb der Datenbank gespeichert werden. Via SQL sind Datentabellen außerhalb der 4D-Struktur ansprechbar. Heißt das SQLite-Tabellen ohne External?
4D Tools, 4D Backup, 4D Insider
4D Backup wurde mit der V8 in 4D integriert, jetzt sind Insider und Tools direkt in 4D. Alles mit schönen Editoren und per Programmiersprache anzusprechen. Sehr willkommen.
Ressourcen
Das Konzept war gut, die Technik ist veraltet. 4D hat den gleitenden Übergang eingerichtet. Die Ressource-Befehle greifen bevorzugt auf XLIFF-Dateien zu. Finden sie keine, suchen sie nach den Ressourcen. Zusätzliches Plus, die xml-Dateien sind einfach übersetzbar, mehrere Sprachen können parallel geführt werden.
XLiff ist ein XML-Format. Das kann jeder Rechner lesen und ich mit einem Texteditor. Ich könnte XML auch mit einem Texteditor schreiben und pflegen. Das ist mühsam. An diesem Bild eines in 4D V11 geschriebenen XLiff-Editors ist sehr schön zu sehen, daß mit der V11 Oberflächen zu bauen sind, die dem Betriebssystem adäquat sind.
Apropos User-Interface
Das Adressbuch von OSX hat einige nette Oberflächen-Ideen. Bis zur V8 sah ich keine Chance, eine Oberfläche der Adressbuch-Art in 4D nachzubilden. Alle Ideen führten mir zu weit von 4D weg, von hinten durchs … nee, das machte keinen Sinn. Jetzt habe ich in den Beispielen die erste, schon recht nahe kommende Realisierung einer Adressbuch-Oberfläche mit 4D gesehen. Darum volle 5 Sterne für das Potential in Sachen User Interface.
Grafik: Draw/Chart/SVG
4D V11 liest SVG. Nicht jedes SVG, aber ich habe welche gefunden die klappten. Dazu habe ich auf die 4D 2004-Beispiele "SVGs erzeugen" zurückgegriffen. Es klappte die Liniengraphik. Die 3D Graphik klappte nicht richtig. Kompliziertere SVGs mit Schriften, schräggestellt oder aus Illustrator kamen nicht in 4D an.
Der SVG-Ansatz ist sehr zu begrüßen! Die SVGs sind Bilder wie PICTs auch. Hat man ein Programm, das mit PICT umgehen kann, aka 4D Draw, läßt sich das Bild verändern. Ein 4D SVG fehlt für SVG. Vielleicht läßt es sich im 4D Live Window zumindest soweit anfassen, wie in Safari 3.
Ich weiß nicht, was aus SVG werden wird. Adobe hat Macromedia=Flash gekauft und sein Interesse an SVG reduziert. Ohne Flash gäbe es kein SVG. Ob die SVG-Standardisierung und Weiterentwicklung in die Hufe kommt oder gar am Stand der Technik nagt, steht in den Sternen.
4D Draw wurde nicht modernisiert. Deshalb muß die V11 in Rosetta laufen, wenn 4D Draw verwendet wird. Auf Windows ist das egal, dort lief 4D Draw immer schon auf Intel. Ob über SVG die Fähigkeiten von 4D Draw ersetzbar sind, muß ausprobiert werden.
4D Chart ist noch in 4D eingebunden. Also wurde ein Teil der 4D Draw-Engine doch nach Intel transferiert. Was ist mit dem anderen Teil? Bin ganz verwundert: die 4D Chart-Objektbefehle, der Teil wo 4D Chart seine Wurzeln in 4D Draw zeigt, sind in die V11 gerettet.
Nice to have
Damit sie in den großen Neuerungen nicht übersehen werden, hier meine Liste der Rubrik nett.
Systemabfragen
Die Zahlen-, Datums- und Zeiteinstellungen sind abfragbar. Die eigenen Tricks Num("1.1")>10
können ab- und ausgebaut werden.
Der Farbwähler des Systems ist ohne External erreichbar und liefert den RGB-Wert. Leider fand ich meine ausgesuchten Farben nicht wieder. Das wird der .0 zuzuschreiben sein.
Drucken
Endlich kann ich festlegen, welchen der beiden Druck-Dialoge ich brauche. Also nicht immer beide. Und auf einander folgende Drucke können in einen Druckjob geleitet werden (OPEN PRINTING JOB, CLOSE PRINTING JOB). Beides ist mir sehr willkommen.
Das Menü-System ist ausgebaut. Menüs sind ähnlich den hierarchischen Listen organisiert. Jetzt habe ich meine Anwendungen in den letzten 20 Jahren immer weiter vom Menü-Gebrauch wegentwickelt, weil es der Trend ist und 4D nicht nachkam. Ob ich die neuen Menüs gebrauchen kann, weiß ich noch nicht. Es ist gut, die Option zu haben.
Transaktionen
Verhalten sich konformer, keine negativen Datensatznummern mit allen Nebeneffekten mehr, und ich kann die Verschachtelungsebene abfragen.
Drag & Drop
Ist ausgebaut. Funktioniert zwischen Finder und 4D, wie schon mit Textfeldern in der V8. Es klappt gut vom Finder in ein 4D-Formular. Umgekehrt ist schwieriger. Aus dem Formular-Editor geht es gar nicht, weil 4D das Formular automatisch scrollt. Ich schaffe es einfach nicht über die Fensterkante hinaus. Auf Runtime-Ebene muß ich das erst testen.
Drag & Drop hängt eng mit der Zwischenablage zusammen, die ausgebaut und in Pasteboard umbenannt wurde. Ob es mir hilft oder meinen Anwendern die Arbeit vereinfacht, weiß ich nicht.
Hierarchische Listen
machen nun den Redraw selber und bekamen die eine oder andere Verbesserung. So können sie unterschiedliche Schriften je Zeile haben. Der Find in list-Befehl bedeutet, ich brauche keine Wrapper-Methode mehr, um einen Text-Eintrag in einer hierarchischen Liste zu finden. Die Icons müssen nicht mehr aus Bildbibliothek kommen. Alles nett und warum nicht gleich so?
Oder doch zu kurz gesprungen? Ich suche, wenn schon Listen, dann was modernes wie in iTunes und Derivaten. Also mehrspaltige Listen ohne feste Spaltenbreiten über alle Zeilen. Nur gelesen, nicht getestet: über einen Selektor kann ein rechtsbündiger Text hinzugefügt werden. Das muß ich ausprobieren, ob ich via Unicode-Symbolik die Listen aufhübschen quasi tabellieren kann?
Bilder
Hier die Bildformat-Liste auf meinem Rechner. Die wichtigsten Formate macht 4D ohne QuickTime, PDF nur auf dem Mac. Wichtig ist das PNG-Format, endlich Transparenz ohne auf weiß angewiesen zu sein.
Transform Picture ist neu. In der Liste der Operatoren ist Crop
dabei, Rotate
fehlt. Die anderen Operatoren hatten wir bereits seit der V1. Auf Combine Pictures (;;Superimposition;;;) bin ich gespannt.
Das Bildfeld selbst erinnert mich an die TN 06-24_PictContainer. Das ist keine schlechte Ausgangsbasis.
Programmieren
Match regex bringt uns regex ohne External.
Text konvertieren ist ausgebaut. Ziel-Formate u.a. UTF-x, ISO-8859-x, ebcdic-x, …
SQL
… oder der Mut zur Lücke? Für eine erste Übersicht, scheint mir das Wichtigste implementiert. Es gilt SQL92. Das hört sich älter an, als es ist. Die funktionalen SQL-Ergänzungen 1999 (regex), 2003 (XML), 2006 (XML, XQuery) werden ± schon länger oder noch frisch in der 4D Programmiersprache abgedeckt.
Tab-Controls
Seit Jahren sehen die Tabulatoren unter OSX so aus, wie jetzt in der 4D V11. Das Ikon des Objektes nahm in der V8 mit dem richtigen Symbol die Entwicklung vorweg.
Sehr schön gelöst unter OSX: passen nicht alle Tabs in eine Reihe, werden sie zu einem Popup. Habe ich das außerhalb von 4D schon einmal gesehen? Gefällt mir viel besser als der Pfeil am rechten Ende der Safari-Tabs.
One more thing
Schon lange wünsche ich mir einen inkrementellen Compiler. Also kompilierten und interpretierten Code in einer Datenbank. Was fertig ist, ist kompiliert. Die Methoden in Arbeit bleiben interpretiert. Über die neue Komponenten-Struktur ist das Nebeneinander kompilierter und interpretierter Methoden machbar. Das muß ich ausprobieren.
Die Beispiele 4DPop sind als kompilierte Komponenten gelöst. Klappt in den ersten Stunden prima. Der Quellcode der 4DPop-Komponenten liegt im Ordner Source des Paketes.
Zu den neuen Komponenten gehört der Befehl Execute method, von dem ich noch nicht weiß, ob es mir gefällt.
Vermißt oder noch nicht entdeckt
- kein styled text im Alpha- und Textfeld.
- keine Unterstützung der systemweiten Rechtschreibung
- keine transparenten Fenster, kein unified window
- kein Datentyp: Datum+Zeit
- kein kleiner bin am Arbeiten-Drehkranz, nur ein platzfressendes Barbershop-Thermometer. Vielleicht läßt sich das mit einem GIF, das 4D ab der V11 abspielt, kompensieren.
- Stilformate wurden um einen Eintrag für Vista ergänzt. Leider keine grundlegende Modernisierung oder gar CSS. Schriften bleiben absolut festgelegt, dito Schriftgrößen.
- kein WebBrowser direkt integriert, ohne PlugIn. Auch die Online-Doku könnte ihn gut gebrauchen.
Zum Schluß – vorerst
- lohnt sich die V11?
Ja!
- rechnet sich die V11?
Ja! Die Preise sind vernünftig, sollten sich in der Projektarbeit rechnen!
- kann ich die V11 produktiv einsetzen?
Keine Ahnung! Der Server kommt später! Die Gefahr ist im Einzelplatz nicht so groß.
PS: den Wunsch in Paris zu releasen kann ich nachvollziehen. Und unser Hunger nach neuen Möglichkeiten, 3 Jahre nach der letzen Version, war groß. Es sollte was passieren!
Vieles ist noch semi: es ist noch nicht alles da oder fertig, z.B. Beispiele die V11-spezifisch sind, ein XLiff-Editor, die Sprachen mischen sich auf der WebSite und in der Doku, … es mußte in Paris passieren. Bon!
Ich kann es gelassen angehen: .1 | .2 | .3 | .x