Christopher B. Browne's Home Page
cbbrowne@acm.org

Application Frameworks

Christopher Browne


Table of Contents
1. Introduction
2. Wild-Eyed Ideas
3. Query and Reporting Tools
4. "Middleware" - Interfaces to Databases
5. Transaction Processing Monitors

1. Introduction

The deployment of applications on free operating systems like Linux that use databases, "forms," and generate reports, can be eased by the availability of application frameworks to support their development.

In the ancient past, COBOL was a standard that effectively defined an operational environment. (Albeit one that lacked lots of things we might like to have today...)

More recently, Ashton Tate's dBase defined the "business application" platform for CP/M and then for MS-DOS. It supplied database infrastructure as well as ways of defining "forms" or "screens" for data entry as well as reports.

IBM and other database vendors defined SQL, the "Structured Query Language." The definition did not provide a definition for the overall processing environmnent, with the result that SQL always gets deployed as a component of an overall system, and not as something that provides a complete system in and of itself.

An unfortunate result (in my opinion) of this is that many of the database vendors have thus built "application environments" that tightly integrate to their database systems, thus locking users into using their tools. Once you have written an application to use Oracle SQL*Forms , redeploying it on another database system is virtually impossible even if both databases "conform to SQL standards."

Today, the "Win32 world" has various "application platforms" notably including Borland Delphi, Sybase PowerBuilder , Microsoft Visual BASIC , and Microsoft Access .

And, getting to the point, Linux needs to have some such sort of "application platform" to support the construction of business applications. The business sector has an unbelievable number of "bespoke" applications deployed using these sorts of tools; Linux could become indispensible to the "small business" or departmental communities if it offered tools for building these sorts of applications. There are a number of tools and approaches out there; I would argue that none are entirely satisfactory.

1.1. Web-Based Frameworks

An approach that the growth of the World Wide Web has popularized is that of creating client/server applications that use a web browser as the front end, and then a Web (HTTP) server as the "application server," presenting applications via HTML forms that communicate using CGI gateways or some functional equivalent.

More sophisticated approaches on the client side use more deeply embedded web browser functionality such as JavaScript/ECMAScript or Java, albeit with a certain loss of portability and stability.

It is straightforward for the web server software to then request data from other systems, whether via relational databases or otherwise.

Many of these sorts of tools are freely available for Linux:

  • Philip and Alex's Guide to Web Publishing

  • RADpage - Create DB-driven Web Pages (Nonfree)

  • Midgard Project - Web-Based Application Framework

  • Z Object Publishing Environment

    What is Zope?

    The short answer is, Zope is a free, open source web application platform used for building high-performance, dynamic web sites.

    Could you give a longer answer than that?

    Sure can. The Zope architecture competes in the web application server market against products such as Cold Fusion, Silverstream, Netscape Application Server, and the like. These products are aimed at systems programmers and relational databases. Zope, however, contains a powerful and simple scripting object model and high-performance, integrated object database. Thus the term "platform."

    Zope is divided into a number of systems, each described below. First, the Z Publisher provides object publishing that integrates with common web servers using a number of protocols, such as Zope's Persistent CGI. The Z Framework contains the foundation for the environment and builtin objects such as folders, documents, and images. The Z Template system provides dynamic page generation. The Z Object Database gives an advanced storage system that integrates tightly with Zope's web object model. Finally, Z SQL Methods and Z Database Adapters provide object-relational integration of data in popular SQL servers.

    Uses the Zope Public License, patterned after Apache's license, Zope is a Python-based system.

  • The Zope Book

  • MOT- Programming-free DB/Web framework for Apache / PHP / MySQL

Unfortunately, this approach means that you must either on the one hand limit yourself to the rather basic functionality provided by HTML Forms, or depend deeply on the functionality of the web browser, which is risky in the wake of both the diverse (and somewhat incompatible) feature sets provided by the "leading" browsers from MSFT and NCC.

The "shifting sands" of the Browser Wars leads me to suggest that the world is not quite ready yet to depend on the web browser as a platform that is both rich in functionality as well as stable for applications.

A further problem is that this approach provides such a wide diversity of choices that it is difficult to come up with any consistency in design or architecture.

The one major "upside" to this approach is that there is a fairly rich set of Free Software options. Freedom permits ubiquity, which is a good thing.

Teaching by Philip Greenspun; likely to be integrated into the ArsDigita University curriculum

1.2. Database Frameworks

There have been several generations of database technology that have been associated with the building of business applications:

  • COBOL was a classic "platform" for applications. It's old, it's pretty ugly, but there's more COBOL code out there than can be readily imagined.

    And the scope covered by the typical COBOL environment is such that while COBOL may be a "very bad business programming language," it is not unfair to say that the others are much worse.

  • xBase

    Developed initially for CP/M, the Vulcan system proved to be a longstanding workhorse for small business systems, with a lively set of "clones" that are still in use today.

  • Relational 4GLs

    Unlike COBOL, where much of the environment could be standardized, while most SQL systems claim compliance to ANSI SQL standards, that standardization tends to only influence a small portion of the overall system.

    As a result, associated with the growth of relational databases (SQL) has been the growth of "application environments" to go along with them. Oracle has sold PL/SQL to deploy business applications for many years now; Informix has provided New Era ; most database vendors have provided some sort of application environment along with their databases.

    These extended environments unfortunately lock you into proprietary upgrade paths controlled by vendor of the database you bought.

  • Database "query tools" and "form builders"

    People look up to Microsoft's Access as an "application environment" that integrates database management tools, database query and reporting tools, and database "form" tools. It may be criticized for a lack of stability, but represents a not unreasonable modern equivalent in the GUI world to xBase.

    Cognos sells Impromptu as a tool directed at sophisticated reporting and querying of databases.

    Sybase sells PowerBuilder as a somewhat more "industrial strength" alternative to Access , and Imprise has similar intentions for Delphi.

    Some of these products are commercially available for Linux; there are no free alternatives at this time that are sufficiently wide sweeping in their functionality to be suited for building entire systems.

  • Messaging/Groupware tools like Lotus Notes

  • xBase Database Schemes

  • Gedafe

    Gedafe (Generic Database Front-End) is an application independent end-user web front-end for databases. Application independant means, that the front-end doesn't have any information about the structure and contents of the database.

  • Gnuccess

    GNUccess aims to provide the Open Source Community with the alternative for using proprietary tools like for example MSAccess or PowerBuilder. It will allow to create, manage and run database applications.

  • Gedafe

    A web front end to allow developing applications in Perl atop PostgreSQL with minimal intervening layers.

  • FreeGee

    An application framework based on Python , PostgreSQL , wxWindows , GnuPG, OmniORB , and Apache .

  • DWI -- Data With Interaction

    DWI is a fairly simple environment for quickly creating data-driven applications, that is, graphical applications that manipulate and show info from a database. This environment differs from others in that it is focused on native GTK/ Gnome support through the Glade GUI designer, and thus allows you to build user interfaces as elegant as you can make them in Glade.

  • Gemello

    Forms front end for applications using Gnome , PostgreSQL , Python .

  • Andromeda Framework

    This uses a CSS-like language to describe the database; you then get to extend this to describe user interface, forms, and reports.

1.3. XML Frameworks

A number of application frameworks have grown up surrounding the storage/transfer of data in XML form.

A number of application frameworks have grown up that involve the manipulation of XML documents, whether pulling them from an XML Database , or from disk files.

  • Apache AxKit

    AxKit is an XML application server for Apache . It works by checking requests to Apache to see if they are for XML documents. If so, AxKit takes over the processing; if not, it lets Apache continue with its processing.

    AxKit processing is done by one or more Perl modules. These can do anything from simply applying an XSL stylesheet to retrieving data from a database. The modules can be chained together in UNIX pipe-like fashion using one of three models. First, the XML document can be passed from one module to the next as a DOM tree. Second, it can be passed as a text string representing the document. Third, the modules can be set up like SAX filters, with each module acting as a SAX application for the previous module and a SAX parser for the subsequent module.

    Primarily uses Perl.

  • Apache Cocoon

  • JOnAS: Java Open Application Server

    Which conglomerates the efforts of Enhydra, France Telecom's Jonathan CORBA ORB, and Evidian (formerly Bullsoft) Bull EJB, as well as the Java -based DBMS, InstantDB.

  • Enhydra

    A Java and XML Application Server.

    A version is available under an "open source" license, although there are reports that "open source" licensing has been discontinued for the "enterprise" version.

  • Caucho Resin : XML Application Server

1.4. "Productivity Application" Frameworks

A number of vendors have built "office suites" and provide extension/integration languages in order to allow customizing the "suite." The following are Windows options:

  • Microsoft Office

  • Lotus SmartSuite

There are also some not dissimilar selections for Linux applications:

  • Angoss SmartWare

  • NeXS (Spreadsheet)

  • XeSS (Spreadsheet)

  • Hewlett Packard Eloquence

    A multiplatform deployment of an application framework (probably originally deployed on the HP MPE platform) that combines:

    • Integrated CUA-like IDE, graphically-based on MS-Windows, text-based on Linux and HP/UX.

    • Providing the HP Eloquence programming language that is based on HP Business Basic.

    • ODBC-accessible database management system.

    The Personal Edition is freely available for noncommercial use, allowing up to two concurrent users and a DB of up to 50MB in size.

    The product appears to be targeted particularly at German use; conferences and support offerings seem primarily to be available there.

  • OMNIS Studio RAD Tool

    A component-based system that includes its own object-oriented development language, and an runtime interpreter to run such code, which integrates with several relational databases (Oracle, Sybase, Informix, DB/2, MySQL) , provides a web-based user interface.

  • MetaCard Corporation

    Produce a system for developing applications using an environment very similar to Apple's "HyperCard" system.

  • Applixware SHELF

    Applix SHELF is an embeddable, full-featured programming language for use with the Applixware office suite. With SHELF added to Applixware's Extension Language Facility (ELF), application developers will be able to increase customization and extensibility of their applications by embedding Applixware language in their products.

    Applix SHELF was released under the GNU Library Public License (LPGL).

    Significant properties of the system include

    • The ELF interpreter emulates a multiregister CPU, performing arithmetic using a stack.

    • Applications may be implemented using multiple "tasks;" since Applix SHELF runs as a single process, this means that these "tasks" are what people would commonly term as "user threads."

      Memory is allocated on a per-task basis, and there are synchronization primitives so that tasks can be made pre-emptive by marking thread-safe code.

    • Methods are resolved at runtime, which means that code may be changed at runtime.

    • Applix/ELF widgets are layered directly atop Xlib rather than using some other system like Motif (which they had originally considered) or more recent ones like Qt or GTK.

  • SHELF sources at SourceForge

  • VirtuaLaw - An Open Source Legal Case Management System

    This system is presently based on Microsoft Access with Visual BASIC as the programming tool; the author intends to migrate this to run on Linux atop MySQL, programming mainly using scripting languages like Perl or Python.

As with options related to database integration, these systems are, by and large, not free software, which means that they cannot be universally deployed with Linux systems. If you pick Metacard as your framework, you have to buy all licenses from Metacard, and thereby become dependent on their continuing support and good graces.

Some vendors have been known to change directions, wherein lies the potential for grave danger; examples include:

  • Apple used to sell a personal digital assistant called the Newton. Various vendors had reasonably lively businesses going selling software and hardware for the Newton platform.

    The market opportunity targeted by Newton was not aligned with our new business strategy.

    Oops.

  • Apple, who had billed the "Yellow Box" application framework as something that would allow portability of applications to MacOS, Rhapsody, and Win32.

    Oops. It's not available on Win32 anymore.

  • Adobe used to license Display Postscript (DPS) as a highly functional crossplatform display system. NeXT had used it as the display substrate for NeXTStep.

    Oops. It's no longer available, which is part of what has given Apple grief in trying to deploy Rhapsody.

  • The Form Package for SIAG allows building form dialogs in Scheme .

One advantage to using free software is never having to worry about this sort of "Oops."

1.5. Frameworks Atop Messaging Infrastructures

Lotus popularized the notion of building applications atop Notes.

This approach may not be ideally suited to financial applications, where balancing of transactions is critical, but is certainly a viable approach for building custom systems where work flows involve documents.

  • Lotus Notes

  • Citadel/UX

    Citadel/UX is a groupware system based on the BBS system Citadel.

  • HP E-speak

    An "Open Source" commerce application platform from HP, running on Java .

    This appears to be a Java -based CORBA -like environment... It includes:

    • A "Core," providing messaging, mediation, security, naming, and service monitoring.

      Sounds rather like an ORB, no?

    • E-Speak Services, that include:

      • The Advertising Service

        Rather like Naming/Trading Services, but which can integrate with LDAP

      • The Distributed Event Service

        Rather like the Event and Notification Services

      • Logging Service

      • Policy Service

      • Process Manager

    • Tunnel Service

      Rather like CORBA Bridges

1.6. Other Tools

Here are some tools that don't seem to fit in elsewhere terribly well...

  • Data Demand

    They are planning to build an ODBC infrastructure for Linux, as well as some sort of Win32 emulation infrastructure for X, to be available under the GPL.

    Seeing as how others are already working on free ODBC drivers, and WINE has received several years worth of development effort, it is not clear what non-redundant things they have to offer...

  • Network Application Frameworks

    Overview book that discusses the various alphabet soups of

    • TCP/IP, IP routing, OSPF, BGP4, IGRP/EIGRP, IPv6, and IPv4.

    • Security: Kerberos, public key cryptography, X.509 certificates and certificate authorities, SSL, IPSEC, and SASL.

    • Objects: CORBA, Microsoft COM/DCOM, and Microsoft Transaction Server (MTS)

    • Directory Services: Windows NT 4, NT 5 Active Directory, NDS, LDAP, and X.500

    • Microsoft's key technologies and architectures, including WOSA, SPI, WinSock, ADO, UDA, ODBC, MAPI, and mainframe integration

    • Novell NetWare protocols, networking techniques, SAP and the bindery, NDS, TCP/IP integration, and interoperability for versions 3.x through 5.

    • IBM technologies, including SNA, SDLC, CICS, Token Ring legacy integration, and IBM mainframe integration with Web technologies and TCP/IP

    • Open Group DCE and RPC

  • Cursel - an interpreter for building "character user interfaces."

  • POSSL - Panther Open Source Software for Linux

    A framework for building client/server apps using Java and JavaBeans.

  • Mono

    Monois intended to be a free software implementation of the .NET Development Framework, including a compiler for the C-Sharp language, as well as implementations (to work with Gnome ) of the crucial APIs.

  • ProvideX

    An application deployment system that runs on Windows and Linux. The base language looks like something of a cross between BASIC (for syntax) and COBOL (for the network data model).

Google

If this was useful, let others know by an Affero rating

Contact me at cbbrowne@acm.org