Developer/2000 lets users build sophisticated systems that scale from workgroup to enterprise.
Developer/2000 is a virtuoso tool. By that I mean not only that it is capable of producing wonderfully rich and powerful database applications in the hands of a talented developer, but also that it requires someone highly skilled in its use to produce such a magnificent result. Given that database application development is still part art and part science, this analogy between the creation of musical masterpieces and software masterpieces is not as far-fetched as it may initially sound. Whereas some development tools can be picked up and used within hours to produce quick-and-dirty applications, Developer/2000 requires planning, study, and practice, but the payoff is in portability, scalability, and tight integration with Oracle Corp.'s databases.
This is a features-oriented review that looks at both Developer/2000 Release 1.4, the currently shipping version, as well as Release 2.0, which is scheduled to ship later this spring. It focuses on a few evaluation criteria that represent the most important issues to developers today.
So even back then, more than 10 years ago, Oracle's application development tools contained the rudiments of object orientation. Granted, it was a fixed-class hierarchy and new classes could not be defined by the developer, but it was a start. The Oracle tools have continued to evolve over the years, and the Forms portion of Developer/2000 now offers many more object-oriented programming facilities. (See Figure 1.) Here are a few examples:
Inheritance. Property classes are named lists of properties and methods (triggers). A property class can be applied to any object in an application. These objects will then inherit all of the properties that make sense for that object. If necessary, the values inherited from the property class can be overridden. If overridden at any point, these values can also be defaulted back to the value in the property class if required. Developer/2000 is intelligent in its inheritance of properties and will only inherit those properties and methods that make sense for the current object type. In Developer/2000 Release 2.0, Object Subclassing will be added to the Form Builder to overcome some of the existing limitations of property classes. With the new Object Subclassing, changes made to the structure or properties of the parent will automatically be inherited by the child. You can also override the inheritance and change the properties of the child.
Object reuse. Drag-and-Drop Object Inheritance allows objects and code to be copied or referenced between applications. This capability allows objects and methods to be encapsulated within a source module and reused throughout your development environment. When inheriting objects, you are given the option of copying or referencing the object. When you copy an object, the definition of that object is incorporated into the target module immediately. Any subsequent changes to the source object are not reflected in the target module, and the new object within the target module can be modified without concern. When you reference an object, a pointer to the object in the source module is incorporated into the target module. When you subsequently open or generate the form, Developer/2000 will resolve the reference and incorporate the latest version of the source object.
Encapsulation. Encapsulation allows program changes to be reliably made with a minimum amount of effort. Forms provides this functionality in three ways: Datasource Transparency, PL/SQL Libraries, and Application and Database Packages. Datasource Transparency lets you build template blocks based on database tables and leave the database interaction to Developer/2000 with no coding required. PL/SQL Libraries provide a mechanism to reuse application code and serve to abstract the use of the methods from their actual implementation. An Application or Database Package is an encapsulated collection of related procedures, functions, and other program objects within a single program unit. Once a package has been created and tested, the objects within the package can be modified, with no change required to the objects which rely on them.
Modularity. Complex software systems can become too large and cumbersome to work with. You can solve this problem by organizing and structuring the application in separate modules. The act of partitioning a program into separate components will reduce its complexity. Modularity can be achieved in Developer/2000 at the high level by structuring the application into multiple forms and at the procedural level by organizing the PL/SQL code into libraries and packages.
Polymorphism. Polymorphism means that differing object classes can implement the same function in a manner that is appropriate for the class. Within Developer/2000, polymorphism is implemented using the concept of overloading. Overloading is a method of implementing the same program unit multiple times within a PL/SQL package. Depending on the arguments passed to the package, the appropriate program unit is applied to the arguments. Thus polymorphism and overloading can be used to create generic routines that perform different functions depending on the class they are applied to.
Last year Oracle announced the NCA, which supports client application extensibility through de facto standards such as Java, browser plug-ins, and ActiveX objects. This year Oracle shipped Web Developer Suite, which currently enables the development of PL/SQL cartridges for NCA; in the future it will enable the development of other cartridges supported by this architecture. Web Developer Suite supports desktop ActiveX, Netscape ONE, and Java, and it contains licenses for many Oracle development tools: Developer/2000, Designer/2000 (CASE, modeling, analysis and design tool), WebServer 3.0 (Web application development platform), Oracle7 Universal Server or Workgroup Server, Oracle InterOffice, and a Network Computing Cartridge Development Kit.
Multitier applications are another form of distributed network computing ý one that is achieved by application partitioning. Two-tier application partitioning is the ability to move code between client and server, preferably in an environment that can execute the same language on both the client and the server. Oracle has long supported the PL/SQL language on both ends of the client/server connection, and this capability forms the basis of the company's application partitioning strategy. Developer/2000 offers "drag-and-drop application partitioning" of PL/SQL program units. In addition to two-tier partitioning, Developer/2000 can also create three-tier applications that centralize business logic on middle-tier application servers.
Oracle has over 6,000 partners providing add-ons that work with Oracle software products. The Web site alliance.oracle.com lists information about add-ons provided by third-party vendors, many of which work with Developer/2000.
Reports can be developed declaratively in Developer/2000 by defining queries and their relationships in the point-and-click interface of the data modeler, selecting a report format from the pictorial gallery of report styles, and then running the report.
Designer/2000 also plays a role in declarative application development. It provides model-driven development through industry-standard modeling techniques such as entity relationship, function hierarchy, dataflow, and matrix modeling.
Developer/2000 Release 2.0 contains declarative support for many datatypes in forms and reports, including charts, images, ActiveX controls, OLE containers, sound, and VBX controls. In addition, PL/SQL has procedural support for the LONG datatype, which means that application-specific complex datatypes can be manipulated procedurally within Developer/2000. The Universal Server Spatial Data option is a collection of programs and packages written in PL/SQL so the current release of Developer/2000 can make procedural calls to the Spatial Data programs, and the upcoming Release 2.0 will be able to base a block on a stored database procedure making it easier to take advantage of extended datatypes. Although Release 2.0 won't contain specific support for the Universal Server ConText option, Oracle plans to make the ConText open APIs accessible to Developer/2000 in the near future.
