Oracle Programmentwicklung mit Ada Frank Piron frank pironkonad

  • Slides: 42
Download presentation
Oracle Programmentwicklung mit Ada Frank Piron, frank. piron@konad. de Kon. Ad Gmb. H, In

Oracle Programmentwicklung mit Ada Frank Piron, frank. piron@konad. de Kon. Ad Gmb. H, In der Reis 5, D-79232 March-Buchheim

Überblick • Was ist Ada? • Ada und PL/SQL im Vergleich • Warum Ada

Überblick • Was ist Ada? • Ada und PL/SQL im Vergleich • Warum Ada für Oracle Programmierung? • Die Konada. Db Bibliothek • Ada Multitasking verwenden • GUI-Programmierung • Realisierte Programme und Ausblick

Was ist Ada? Wer war Ada? Augusta Ada Byron, Countess of Lovelace (1815 -52),

Was ist Ada? Wer war Ada? Augusta Ada Byron, Countess of Lovelace (1815 -52), Tochter von Lord Byron. Assistentin und Mäzen von Charles Babbage. Arbeitete mit an der „Analytical Engine“.

Was ist Ada? Eine Definition: „Ada ist eine universelle Programmiersprache mit einer besonderen Eignung

Was ist Ada? Eine Definition: „Ada ist eine universelle Programmiersprache mit einer besonderen Eignung für die professionelle Entwicklung großer und sicherheitskritischer Programme, für die Korrektheit und Stabilität von besonderer Bedeutung sind. “ John Barnes, „Programming in Ada 95“, 2 nd Edition, 1998

Was ist Ada? Die Entwicklung von Ada § 1974 – Das amerikanische Do. D

Was ist Ada? Die Entwicklung von Ada § 1974 – Das amerikanische Do. D fördert die Entwicklung einer neuen Programmiersprache. Honeywell Bull gewinnt die Ausschreibung und ein Team unter der Leitung von Jean Ichbiah entwickelt Ada. § 1983 – Ada 83 wird standardisiert (ANSI/MIL-STD 1815) -> (1991) PL/SQL § 1987 – Ada 83 wird durch ISO 8652 genormt § 1988 – Das Do. D initiiert das Ada 9 X-Projekt § 1995 – Ada 95, entwickelt bei Intermetrics unter der Leitung von Tucker Taft wird nach ISO 8652 freigegeben. § 2007 – Der Konsolidierungsstand Ada 05 wird freigegeben.

Was ist Ada? Hello

Was ist Ada? Hello

Was ist Ada? Strenge Typisierung

Was ist Ada? Strenge Typisierung

Was ist Ada? Fehlerbehandlung durch Exceptions

Was ist Ada? Fehlerbehandlung durch Exceptions

Was ist Ada? Objektorientierung mit Tagged Types

Was ist Ada? Objektorientierung mit Tagged Types

Was ist Ada? Der Sprachumfang von Ada 95/05 Core Language mit Multitasking Predefined Library

Was ist Ada? Der Sprachumfang von Ada 95/05 Core Language mit Multitasking Predefined Library Annexes • Systems Programming • Real-Time Systems • Distributed Systems • Information Systems (COBOL) • Numerics • Safety and Security

Was ist Ada? • Standardisiert, objektorientiert • Blockstrukturiert: declare…begin…exception…end • Parallelverarbeitung durch Tasks in

Was ist Ada? • Standardisiert, objektorientiert • Blockstrukturiert: declare…begin…exception…end • Parallelverarbeitung durch Tasks in Core eingebaut • Hohe Softwarequalität durch strenge Typisierung • Laufzeitfehlerbehandlung durch Exceptions • Statischer Polymorphismus mit Generics (Templates) • Flexible Paketstrukturen und inkrementelle Kompilierung • Geeignet für Embedded Systems (Real-Time Annex) • Compiler und Runtimes für alle gängigen Plattformen

Was ist Ada? Kompilierungssysteme • GNAT – GNU Ada Translator (Maintainer: Ada. Core) Bestandteil

Was ist Ada? Kompilierungssysteme • GNAT – GNU Ada Translator (Maintainer: Ada. Core) Bestandteil der GNU Compiler Collection – gcc Verfügbar für Windows, Sun-Solaris, GNU-Linux, … Weitere • Object. Ada – für alle Plattformen. Enthält GUI-Builder Hersteller: Aonix, wird wahrscheinlich nicht weiterentwickelt • Janus/Ada 95 von R. R. Software mit Claw Windows Bindung • Rational Apex Ada von IBM, speziell für embedded Systems

Was ist Ada? Zertifizierung Jeder Ada Compiler muss sich einer Zerifizierung gemäß ISO 8652

Was ist Ada? Zertifizierung Jeder Ada Compiler muss sich einer Zerifizierung gemäß ISO 8652 unterziehen. Compiler und Runtime Bibliothek müssen die im ARM (Ada Reference Manual) niedergelegte Spezifikation erfüllen. Konsequenz: Gemäß ARM geschriebener Code, der keine zusätzlichen Bibliotheken einbindet, kompiliert mit jedem zertifizierten Compiler und das Kompilat läuft unter jeder vom Compiler unterstützten Plattform.

Ada und PL/SQL im Vergleich Ada 83 => (1991) PL/SQL Ada und PL/SQL sind

Ada und PL/SQL im Vergleich Ada 83 => (1991) PL/SQL Ada und PL/SQL sind syntaktisch sehr ähnlich Wichtige Unterschiede Ada • Streng typisiert • Komplexe Sichtbarkeit • Kein varchar 2() Typ • Konkatoperator „&“ • Keine out-Parameter bei Funktionen! • Multitasking • OO-Sprache PL/SQL • Implizite Typumwandlg. • Einfache Namensräume • varchar 2() Typ • Konkatoperator „||“ • „out“ Parameter bei Funktionen erlaubt • Kein Multitasking • Keine OO-Sprache

Ada und PL/SQL im Vergleich Oracle PL/SQL Ada Übergangschwierigkeiten • Wo ist mein varchar

Ada und PL/SQL im Vergleich Oracle PL/SQL Ada Übergangschwierigkeiten • Wo ist mein varchar 2 Datentyp? • Programmieren auf dem Stack • Von Oracle Namen zur Ada Sichtbarkeit • Editoren und Compiler • Brauchen wir einen GUI-Builder? (Forms)

Ada und PL/SQL im Vergleich Erfahrung: Einige PL/SQL-Features lernten wir erst während der Beschäftigung

Ada und PL/SQL im Vergleich Erfahrung: Einige PL/SQL-Features lernten wir erst während der Beschäftigung mit Ada kennen. Beispiel: Paketinitialisierung im Package-Body zwischen abschliessendem begin … end; (Obwohl im PL/SQL-User Guide erwähnt) Später divergierten Ada und PL/SQL. Deshalb gibt es große Unterschiede im Bereich komplexer Datentypen wie Arrays, Collections und vor allem in den objektorientierten Sprachelementen.

Warum Ada für Oracle Programmierung? Ausgangssituation (2001) • Ende der 1990 er Jahre stoppte

Warum Ada für Oracle Programmierung? Ausgangssituation (2001) • Ende der 1990 er Jahre stoppte Oracle die Weiterentwicklung des Client-Server Toolsets Developer 2000 • Oracle Forms erlaubt keine 100%-tige Systemintegration (Beispiel: Kein Com oder DDE-Server) • Kein Multitasking mit Oracle Forms • Oracle Applikationen unter verschiedenen Plattformen mit hohen Anforderungen an Stabilität und Performance entwickeln Anfang 2002 Nach 6 Monaten Evaluierung Ada

Warum Ada für Oracle Programmierung? Pro • Ähnlichkeit zwischen Ada und PL/SQL • Sprachmerkmale

Warum Ada für Oracle Programmierung? Pro • Ähnlichkeit zwischen Ada und PL/SQL • Sprachmerkmale von Ada Multitasking Objektorientierung Systemintegration Plattformunabhängigkeit Standardisierung • Ada ist geeignet zur Herstellung großer, zuverlässiger Softwaresysteme

Warum Ada für Oracle Programmierung? Contra • Ada ist keine Mainstream-Sprache Wenige Ada Programmierer.

Warum Ada für Oracle Programmierung? Contra • Ada ist keine Mainstream-Sprache Wenige Ada Programmierer. Innen Kundenakzeptanz? Lebensdauer der Sprache • Ada ist nicht leicht zu lernen • Es gibt nur wenige Bibliotheken für Datenbankzugriff und Windows GUI-Programmierung

Warum Ada für Oracle Programmierung? 2002 Wissensaufbau Ada 95 und Entscheidung für GNAT Wir

Warum Ada für Oracle Programmierung? 2002 Wissensaufbau Ada 95 und Entscheidung für GNAT Wir benötigten Bibliotheken für die Interaktion mit Oracle und Windows GUI-Programmierung Web Recherche und Evaluierung ü Adaoci (Dmitriy Anisimkov) als Startpunkt der Entwicklung eines Oracle-Access Layers Entscheidung gegen SQL*Module ü GWindows (David Botton) als Basis für die Erstellung einer Windows GUI-Bibliothek

Die Konada. Db Bibliothek Adaoci Methoden Create Konada. Db Sqltype Bind/Set Execute Fetch Get

Die Konada. Db Bibliothek Adaoci Methoden Create Konada. Db Sqltype Bind/Set Execute Fetch Get Anwendung …. Die Verwaltung von Bindevariablen und Defines wird automatisch von der Bibliothek vorgenommen

Die Konada. Db Bibliothek

Die Konada. Db Bibliothek

Die Konada. Db Bibliothek Nächster Schritt: Rowtype und. Tabletype Daten abfragen und ändern ohne

Die Konada. Db Bibliothek Nächster Schritt: Rowtype und. Tabletype Daten abfragen und ändern ohne SQL DB Db Tabelle Konada. Db. Tables Objekt

Die Konada. Db Bibliothek Tabletype

Die Konada. Db Bibliothek Tabletype

Die Konada. Db Bibliothek Windows GUI-Programmierung Was ist GWindows? Eine GUI-zentrierte Ada-Bindung an die

Die Konada. Db Bibliothek Windows GUI-Programmierung Was ist GWindows? Eine GUI-zentrierte Ada-Bindung an die Windows API von David Botton ü Einfach zu nutzen ü Klar codiert ü Einfach zu erweitern ü Frei verfügbar (GMGPL) 2003: Entscheidung für GWindows

Die Konada. Db Bibliothek GWindows_Extended • Neue Controls, abgeleitet von GWindows Typen mit mehr

Die Konada. Db Bibliothek GWindows_Extended • Neue Controls, abgeleitet von GWindows Typen mit mehr Features • Bug fixing • Neue Methoden und Utilities GWindows List_View_Control Header-Drag. And-Drop GWindows_Extended Icons Header-Click-Event Ex_List_View_Control

Die Konada. Db Bibliothek win 32 Oracle OCI Netzwerk Win 32 -API Andere Adaoci

Die Konada. Db Bibliothek win 32 Oracle OCI Netzwerk Win 32 -API Andere Adaoci GWindows Konada. Db + GWindows_Extended. Rows Netzwerk . Tables Controls (Single-, Multirow) & Anwendung – z. Bsp. El. Sch

Ada Multitasking verwenden Erzeugter Task Rendezvousanfrage Haupt Programm Task Rendezvous Datenaustausch

Ada Multitasking verwenden Erzeugter Task Rendezvousanfrage Haupt Programm Task Rendezvous Datenaustausch

Ada Multitasking verwenden Beispiele für die Verwendung von Tasks • Paralleler Verbindungsaufbau zu verschiedenen

Ada Multitasking verwenden Beispiele für die Verwendung von Tasks • Paralleler Verbindungsaufbau zu verschiedenen Hosts, z. Bsp. FTP und Db Server • Ermittlung von sperrenden Benutzern. Ein Task agiert als Waiter, ein zweiter fragt V$lock ab • Paralleles Laden von Daten ohne Blockierung der GUI-Oberfläche

Ada Multitasking verwenden FTP-Task Logon Daten ermitteln File in Db registrieren (Post) Ja: Filetransfer

Ada Multitasking verwenden FTP-Task Logon Daten ermitteln File in Db registrieren (Post) Ja: Filetransfer Commit, falls OK Nein: Rollback FTP Verbinden (ja/nein)? Verbindung aufgebaut? Task

Ada Multitasking verwenden Main FTP-Task

Ada Multitasking verwenden Main FTP-Task

Ada Multitasking verwenden Verhalten von Tasks während Execute- und Fetch-Phase Fetch Connection Fetch T

Ada Multitasking verwenden Verhalten von Tasks während Execute- und Fetch-Phase Fetch Connection Fetch T 2 T 3 Execute: synchron andauernd T 1 T 2 T 3

Ada Multitasking verwenden Weitere Erfahrungen • Mithilfe der Ada-Multitasking Sprachelemente lassen sich stabile, multithreaded

Ada Multitasking verwenden Weitere Erfahrungen • Mithilfe der Ada-Multitasking Sprachelemente lassen sich stabile, multithreaded Oracle-Anwendungen auf verschiedenen Plattformen (Windows/Solaris/ Linux) entwickeln. • In Verbindung mit der Möglichkeit, SQL-Statements via OCI asynchron auszuführen (wurde in Konada. Db. Sql realisiert), ergeben sich alternative Lösungen für parallele Verarbeitung. • Da Tasks in Ada wie Objekte behandelt werden – man kann etwa Arrays von Tasks dynamisch erzeugen – ist die Erstellung von Applikationsserver. Anwendungen relativ einfach möglich.

GUI- Programmierung Zielvorstellungen Erstellung von GUI-Komponenten mit den nachstehenden Eigenschaften: • Anzeige und Manipulation

GUI- Programmierung Zielvorstellungen Erstellung von GUI-Komponenten mit den nachstehenden Eigenschaften: • Anzeige und Manipulation einzelner Datensätze wie auch Anzeige und Manipulation in einem Grid • Automatisches oder programmatisches Layout (Kein GUI-Builder) • Vollständiges Event-Modell • Baum-Navigation, wobei der Baum das logische Datenmodell oder Prozessmodell reflektiert • Ablage der GUI Konfiguration in der Datenbank soll möglich sein dynamische Erzeugung/Anpassung der GUI-Oberfläche

GUI- Programmierung Single-Record Control Mit automatischem 4 -Spalten Layout

GUI- Programmierung Single-Record Control Mit automatischem 4 -Spalten Layout

GUI- Programmierung Single-Record Control - Codebeispiel

GUI- Programmierung Single-Record Control - Codebeispiel

GUI- Programmierung Multi-Record Control Mit aktivierter Filterfunktion

GUI- Programmierung Multi-Record Control Mit aktivierter Filterfunktion

GUI- Programmierung

GUI- Programmierung

Realisierte Programme und Ausblick • El. Sch. Der Elektronische Schreibtisch ist ein voll funktionaler

Realisierte Programme und Ausblick • El. Sch. Der Elektronische Schreibtisch ist ein voll funktionaler Workflow-Client für Windows, der vollständig in Ada realisiert wurde. • Karcis. Eine unter Solaris lauffähige Archivkopplung zwischen KWfl, unserem Workflow- und Dokumenten Managementsystem und dem Archivsystem ARCIS. • Kutil. so. Ein shared-Object zur Nutzung von Solaris Systemdiensten innnerhalb von PL/SQL stored Procedures. • Vertiffserver. Ein Windows-Service, der im Hintergrund Winword-Dokumente in das TIFF 4 -Format überführt. Der Service ist ein TCP-Listener und kann zur Laufzeit über ein grafisches Interface gesteuert bzw. konfiguriert werden

Realisierte Programme und Ausblick

Realisierte Programme und Ausblick

Realisierte Programme und Ausblick • In einem aktuellen Projekt wird eine Branchen-ERP Lösung vollständig

Realisierte Programme und Ausblick • In einem aktuellen Projekt wird eine Branchen-ERP Lösung vollständig in Ada und PL/SQL realisiert • Eine Bibliothek zur Gestaltung von Web-Interfaces für Oracle Applikationen ist in Planung • Ein IDE für die Entwicklung von GUI-Oberflächen (Kein Layout-Editor) ist in Planung

Literatur • John Barnes: Programming in Ada 2005 • Burns/Wellings: Concurrency in Ada Das

Literatur • John Barnes: Programming in Ada 2005 • Burns/Wellings: Concurrency in Ada Das Buch über Multitasking in Ada. • „Ada destilled“ von Richard Riehle Für erfahrene Programmierer, die Ada lernen wollen. http: //www. adaic. org/docs/distilled/adadistilled. pdf • comp. lang. ada Newsgroup. Klein, aber sehr aktiv. • http: //en. wikibooks. org/wiki/Programming: Ada Ein guter Startpunkt. • http: //www. adapower. com Viele Codebeispiele.