Oracle Forms
From Wikipedia, the free encyclopedia
Oracle Forms is a tool (somewhat like Visual Basic in appearance, but the code inside is PL/SQL) which allows a developer to quickly create user-interface applications which access an Oracle database in a very efficient and tightly-coupled way. It was originally developed to run server-side in character mode on any Unix box, before Windows existed. It was then ported to Windows to function in a client-server environment. Recent versions have been ported to Java. It now runs in a J2EE container and can integrate with Java and web services.
Contents |
[edit] Product Position
Forms is part of the Oracle Developer Suite. This was at one time known as Developer 2000 or D2K. Oracle marketted it as a Rapid Application Development tool.
[edit] How it works
Oracle Forms accesses the Oracle database and generate a default form that presents the data. The source form (*.fmb) is compiled into an "executable" (*.fmx), that is run (interpreted) by the forms runtime module. The form is used to view and edit data in business applications. Various GUI elements, such as buttons, menus, scrollbars, and graphics can be placed on the form.
The environment supplies built-in record creation, query, and update modes, each with its own default data manipulations. This minimizes the need to program common and tedious operations, such as creating dynamic SQL, sensing changed fields, and locking rows.
As is normal with event driven interfaces, the software implements a complex algorithm, consisting of special functions called triggers, which occur at critical steps in the processing of records, the receipt of keyboard strokes, and the receipt of mouse movements. Different triggers are called before, during, and after each critical step.
Each function is initially a stub, containing a default action or nothing. Programming Oracle Forms therefore generally consists of modifying the contents of these triggers in order to alter the default behavior. Some triggers, if provided by the programmer, replace the default action, others augment it.
As a result of this strategy, it is possible to create a number of default form layouts which possess complete database functionality yet contain no programmer-written code at all.
[edit] History
Oracle Forms is sold and released separately from the Oracle database. However, major releases of an Oracle database usually result in a new major version of Oracle Forms to support new features in the database.
Oracle Forms had its origin in the character-cell video tool called Interactive Application Facility (IAF), subdivided in two components (Interactive Application Generator (IAG) and Interactive Application Processor (IAP)) which accompanied Oracle Version 2, the first commercial version of Oracle. The character-cell video tool called FastForms was introduced with Oracle version 4 - an additional tool to help the programmer to generate a default form to edit with standard tool (IAG).
Renamed to SQL*Forms version 2 with the Oracle 5 database
Oracle Forms 2.3 was character based, and did not use PL/SQL. The source file was an *.INP ASCII file. It was common for developers to edit the INP file directly although that was not supported by Oracle. This version used its own primitive and unfriendly built-in language, augmented by user exits--compiled language code linked to the binary of the Oracle-provided run-time code.
Oracle Forms 3 was character based, and was the first real version of Forms, using PL/SQL. All subsequent versions are a development of this version. It could run under X but did not support any X interface specific features such as checkboxes. The source file was an *.INP ASCII file. The IDE was vastly improved from 2.3 which dramatically decreased the need to edit the INP file directly, although this was still a common practice. Forms 3 automatically generated triggers and code to support some database constraints. Constraints could be defined, but not enforced in the Oracle 6 database at this time, so Oracle used Forms 3 to claim support for enforcing constraints.
Oracle Forms version 4.0 was the first GUI based version, although a character based runtime was still available for certain customers. The arrival of Microsoft Windows 3 forced Oracle to release a GUI version for commercial reasons. But it was rumoured that it was in fact an internal demo which was only released as a stop-gap while Forms 4.5 was developed. Forms 4.0 accompanied Oracle version 6 and featured a common graphical interface designed to operate under Windows and X. This version was notoriously buggy and introduced an IDE that was unpopular with developers. This version was not used by Oracle Financials. The 4.0 source files were named *.FMB and were binary.
Oracle Forms version 4.5 was a major new release rather than a "point release" of 4.0. It contained significant functional changes and a brand new IDE (replacing the unpopular IDE introduced in 4.0). It is rumoured that it was named 4.5 in order to meet contractual obligations to support Forms 4 for a period of time for certain clients. It added GUI-based triggers, and looked very like Visual Basic to the inexperienced.
Due to conflicting operational paradigms, Oracle Forms version 5, which accompanied Oracle version 7, featured custom graphical modes tuned especially for each of the major systems. However, its internal programmatic interface remained system-independent. It was quickly superseded by Forms 6.
Forms 6 was released with Oracle 8.0; it was rereleased as Forms 6i with Oracle 8i. This was basically Forms 4.5 with some extra wizards and bug-fixes. But it also included the facility to run it inside a web server. A Forms Server was supplied which solved the problem of adapting Oracle Forms to a three-tier, browser-based delivery, without incurring major changes in its programmatic interface. The complex, highly interactive form interface was provided by a Java applet which communicated directly with the Forms server. However the web version did not work very well over HTTP. A fix from Forms 9i was retrofitted to later versions of 6i to address this.
The naming and numbering system applied to Oracle Forms subsequently underwent several changes due to marketing factors, without altering the essential nature of the product. The ability to code in Java, as well as PL/SQL, was added in this period.
Forms 9i included many bug fixes to 6i and was a stable version. But it did not include either client-server or character-based interfaces, and three-tier, browser-based delivery is the only deployment choice from here on. The ability to import java classes means that it can act as a web service client.
Forms 10g is version 9.0.4, so is merely a rebadged forms 9i.
Forms 11 will include some new features, relying on Oracle AQ to allow it to interact with JMS.
[edit] Version Summary
Name | Version | (*1) Database | Character/GUI | Comments |
---|---|---|---|---|
IAF | 2 | Character | No IDE | |
FastForms+IAG | 4 | Character | "Death by a thousand questions" | |
SQL*Forms | 2 | 5 | Character | |
SQL*Forms | 2.3 | 5 | Character | New IDE, No PLSQL, User Exits, INP ASCII File, FRM Runtime File |
SQL*Forms | 3 | 6 | Character | Major Rewrite, New IDE, PLSQL, X Support, Generate code to enforce constraints |
Oracle Forms | 4.0 | 6-7 | Gui / Character | Major Rewrite, New IDE, FMB source binary file, FMX Runtime, optimized for Client-Server. New interface is slow, buggy and not popular with client base. |
Oracle Forms | 4.5 | 7 | Gui / Character | Major Rewrite, New IDE based on Object Navigator & Property Sheets. Good release, fast, popular with client base. Oracle wanted customers to upgrade from v4 quickly because v4 was very buggy and Oracle was contracted to support v4 for a period of time for some large, important customers. So, Oracle named this release 4.5 (rather than 5) which allowed Oracle to claim continued support for v4. This allowed some customers who were locked into v4 for the life of their project to upgrade from v4 to v4.5 by claiming that this was a patch release even though it was clearly a major release. |
Oracle Forms | 5 | 7 | Gui / Character | |
Oracle Forms | 6 | 8 | Gui / Character | Forms Server / Web Forms introduced. Client-Server still available and used by most clients. Forms Server mode is slow, buggy and uses a lot of memory per session. |
Oracle Forms | 6i | 8 | Gui / Character | |
Oracle Forms | 9i (*2) | 9i | Gui | Client-Server runtime removed leaving Forms Server as only runtime option. Same memory requirements as before but memory is now cheaper so not as big an issue. |
Oracle Forms | 10g | 10g | Gui | This is a Forms 9 release (9.0.4.0.19). Renamed externally to indicate support for 10g database. Menu-Help-About displays v9.0.4.0.19 |
Oracle Forms | 10gr1 | 10gr1 | Gui | version 10.1.2.0.0 |
Oracle Forms | 10gr2 | 10gr2 | Gui | version 10.1.2.0.2 - registry home key moved. Max NUMBER length reduced from 40 to 38 |
Oracle Forms | 11g | 11g | Gui |
(*1) Each version of Oracle Forms can connect to numerous versions of the ORACLE database and is sold and released separately from the ORACLE Database. Oracle Forms is generally forward and backward compatible with the Oracle database - for example: Oracle Forms 9 can connect to at least Oracle 8,9, 10 and 11. The database versions listed here are the primary version that was available at the time of the Form release
(*2) Oracle products have historically followed their own release-numbering and naming conventions. This changed with Oracle RDBMS 9i release when Oracle Corporation started to standardizing Oracle Forms (and Reports and Developer) to use the same major version number as the database. This explains the jump in Oracle Forms versions from 6i to 9i (there was no v7 or v8)
[edit] Integration with Oracle Designer CASE Tool
Oracle Designer is a CASE tool that is sold by Oracle. It is able to generate various software modules including Oracle Forms and Oracle Reports
[edit] Current Status
Whilst Oracle's preferred approach for new development is its Java based Oracle Application Development Framework, Oracle's development tools statement of direction is quite clear in its commitment to continuing to support Oracle Forms and continue to develop and enhance it in the following areas:
- Making the upgrade to the web and to new releases as smooth as possible
- Allowing Forms and Reports applications to take full advantage of the application server services and inter-operate with J2EE applications.