Object Windows Library

From Wikipedia, the free encyclopedia

The Object Windows Library (OWL) is a Borland C++ object-oriented framework originally designed for WinAPI. It was used in Turbo Pascal for Windows, Borland Pascal and their Borland C++ package. It was a competitor to the Microsoft Foundation Class Library (MFC).

OWL had incomplete support by the Borland C++ IDE and wasn't always upwardly compatible from release to release. It was eventually deprecated in favor of the Visual Component Library (VCL), which is included in Delphi and C++ Builder Studios.

An open source internet community has released a series of improvements and patches to the original OWL which also allowed newer compilers (BC++ Builder 5, BCC55, BC++ Builder 6, GCC, MSVC++ 6, MSVC 2003, MSVC 2005, BDS C++ 2006, CodeGear C++ 2007). The project name: OWLNext.

Contents

[edit] History

In the early 90s Borland dominated the C++ market. In 1991 Borland introduced Borland C++ 3.0 with 'Application Frameworks' which included Turbo Vision for developing DOS applications and OWL for the Windows platform. C++ was just beginning to replace C for development of commercial specially with the rising of Windows platform (and the complexity that involves) this allowed to OWL to gain some popularity.

The first version implemented a proprietary extension called Dynamic Dispatch Virtual Tables (DDVT), this allowed objects to bind 'events' (windows messages) with 'methods' (functions). This mechanism avoided saturating the OO virtual function system with one function for each window message. In the next version of OWL, DDVT was replaced with a RESPONSE_TABLE, a macro based mechanism, which is maintained today. A conversion tool (OWLCVT) was included to migrate code from OWL1.0 to OWL2.0.

In 1992 Microsoft launched MFC. A DOS version of MFC was short lived. The windows version was simple a wrapper around WinAPI, and was criticized for not being truly object oriented.

In 1993 Borland launched Borland C++ 2.0 for OS/2 which included a version of OWL 2.0. OWL 2.0 used BIDS, the newer template library for 'container' or 'class library'.

In April 1993 Borland and Novell settled an agreement to port OWL to Novell AppWare Foundation. AppWare Foundation was an API designed by Novell to be cross-platform, allowing deploy apps in Mac, Windows and Unix clients and with several Networks services. The main tools for developing in AppWare were OWL and AppBuilder (a visual tool to link Application Loadable Modules through an 'Application Bus').

In January 1994 Borland launched Borland C++ 4.0 for Windows which also included OWL 2.0. It added Doc/View support, VBX controls, OLE. Win16, Win32s and Win32 was supported (Windows 95, the Win32 successor of Windows 3.x appeared in August 1995).

Late in 1994, Novell CEO Raymond Noorda resigned. Novell expansion plans were reconsidered, AppWare development was stopped and so was OWL for AppWare. In 1995 a group of original team members bought AppBuilder. In the same year, Software UNO (www.uno.com) offered a commercial port for OWL 2.0, to several platforms: AIX 3.2.5, DEC Alpha OSF/1, HP-UX 9.03, Linux 1.2, Solaris 2.x, Sun OS 4.1.x, and SVR4 fox x86, it was called WM_MOTIF.

Early in 1995 Borland C++ 4.5 with OWL 2.5 was launched. As it was launched before Win95, Borland promised a free upgrade for any incompatibility present in the final Windows 95 (when available). Versions 4.51 and 4.52 followed. OWL 2.5 also included the Object Component Framework (OCF) to ease OLE development.

In August 1995 Microsoft released Windows 95 and Visual Studio 4.0. Contrary to popular belief, the inclusion of the MFC40.DLL with Windows 95 did not have a huge impact on the adoption of MFC. By 1995, Visual Studio 1.5 had already eclipsed Borland C++ in shipments, due partly to the volume and quality of documentation included with Visual Studio. The nearly seamless transition of MFC projects from Visual Studio 1.5 and Visual Studio 4.0 also contributed to its popularity. The instability of the original Borland C++ 4.5 and quirky treatment of OWL also persuaded many developers to drop Borland C++ and OWL in favor of Visual C++ and MFC.

In 1996 Borland launched Borland C++ 5 for Windows, which included OWL 5, which was a major revamp of the library. In August 1997 Borland C++ 5.02 was introduced with slightly updated a version of OWL 5. A Japanese edition was also available. Additionally the Borland C++ Builder was included OWL in the 'companion CD'. After that Borland concentrated development in the VCL framework which has been evolving alongside OWL since Delphi 1.0 launched two years before. VCL continues to be the main framework of Borland (now Codegear) for Windows and .NET platforms. Examples on how linkage OWL apps with VCL Forms (Dialogs) were included in the last version of Borland C++. Borland stopped selling Borland C++ 5.02 and OWL in late 1999.

After Borland deprecated OWL, development was taken over by group and is called OWLNextOWLNExt which consists of patches to the original OWL source code.

In 2007 Borland/Codegear launched Borland C++ Builder 2007 which included OWLNext in the partner CD. The CD included VCL/OWL integration examples and some support for Windows Vista development.

[edit] Features

OWL applications supports (non-exhaustive list) Single/Multiple Document Interface (SDI/MDI), Doc & View Document Model, Drag&Drop, print and print-preview, GDI encapsulation, Windows Help (Winhelp), mail and messaging (MAPI), Internet (OwlSock/WinSock), OLE 1.0 and OLE 2.0 and other features. The "Borland Windows Custom Controls", an alternative to the standard widget set in Windows 3.1, were available in some versions of OWL, and this support propagated their unique look throughout many applications of the era.

All classes have prefix T (TApplication, TWindow, TFrameWindow, TDialog, TBitmap, etc.). VCL has the same prefix, but in VCL all classes derived from a single mother class: TObject; in OWL there are several root classes, the most common is TWindow from which derived all kind of Windows (TFrameWindow, TDecoratedFrameWindow, TDialog, TInputDialog, TFileOpenDialog, etc.) and even windows controls (TEdit, TStatic, TButton, TGlyphButton, TComboBox, etc.).

Applications made with OWLNext are compatible with DEP/NX feature which defend system against virus/internet attacks. Supports UNICODE even on non-UNICODE Windows systems (95/98/Me).

[edit] Advantages

  • Well designed Object oriented framework, provides real encapsulation of Windows APIs, allows inheritance and polymorphism.
  • C++ class for many common Windows resource-related data types that provide automatic closure of handles when the objects creating them go out of scope.
  • Provides a Document/View framework for creating Model-View-Controller-based architectures.
  • OWL comes with BIDS (Borland International Data Structure) a template class library.
  • OWLNext uses the Standard Template Library (STL), which simplifies ports to other platforms.
  • String class included in OWL.
  • Faster executables than produced by interpreters like Visual Basic (now deprecated by MS) or java.
  • Faster executables than those produced by the .NET Framework.
  • OWLNext developers can use the IDE of their choice: Borland C++ 5.0, Visual Studio 6.0, VS2003, VS2005, BDS2006, BDS2007
  • Windows API can be accessed directly from OWL based programs.
  • Small GUI executables :
    • executables do not require the end-user to have the .NET Framework, which is a 22.4 MB download.
    • executables do not require VB runtime.
  • Executables can use 'static' libraries
  • Several wizards are available for a variety of tasks, including third party tools, which reduced the work to generate the minimal working applications.
  • Fast compilation speed.
  • Ported to Linux, free and open-source solution.
  • Source code included. Developers can build an optimized version for a particular CPU.
  • Namespaces supported.
  • Windows 3.x to Vista compatible.

[edit] Disadvantages

  • Not ported to Mac OS X, WinCE, or .NET.
  • As most libraries based in C++ (MFC, wxWidgets, Qt), C++ language requires a learning curve.
  • Alternatives such as VCL provide rapid application development (RAD).
  • Windows API is not completely covered, requiring deeper knowledge of it.
  • .NET offers a more object oriented, complete, and organized API.
  • Significantly fewer users than MFC.
  • Poor third party support in the form of books, web sites, articles and third party libraries (such as CodeJock)
  • No native support for reading/writing JPG or PNG files
  • No native XML support

[edit] OWLNext: the future of OWL

When Borland deprecated OWL in favor of VCL, a group of developers lead by Yura Bidus started the project of maintain the library in 1998. The original websites were http://owlnext.starbase21.com, http://www.geocities.com/SiliconValley/Campus/5642/owlnext.html and http://members.xoom.com/yuri_b. The project actually is hosted in SourceForge: http://owlnext.sourceforge.net or http://www.owlnext.com. The extension is open source, free and the license allow to develop commercial applications.

The original name was OWL NExt, where NExt meaning was New Extensions. Later was joined to OWLNExt and actually is called OWLNext. Current version at 2007 is OWLNext 6.20, it's the last version to officially support Win16 platform.

OWLNext support UNICODE, even allow to deploy UNICODE based applications in Win95. Added support for HTMLHelp.

OWL still is property of Borland and covered by several patents, however the version included in the 'Companion CD' for C++Builder can be downloaded from current CodeGear site. It also allow to download the version 6.04 of OWLNext, but the official site for OWLNext is SourceForge.

Original OWL used BIDS (Borland International Data Structure) libray as 'class library' (library for managing data structures like vectors, lists, etc.), OWLNext moved to STL (Standard Template Library), and also provides an emulation layer to minimize porting work for existing applications.

Linux support was added to OWLNext in version 6.16 using WINELIB, there are also private ports to Solaris. The support for Win64 is on the plan. Currently there is no plan to support .NET platform since native Vista will allow better performance.

Yura Bidus started an alternative to OWL/OWLNext called GUI Object Library (GObjects or GOL for short), which avoids Borland/CodeGear patents and also offer more platforms. The project is also open-source and hosted in sourceforge.

[edit] Books about OWL & Borland C++

There are several books about the C++ / OWL, the among these are:

  • Advanced OWL 5.0: Power Tools for OWL Programmers, Ted Neward, ISBN 1884777465.
  • Borland C++ 4.x Tips, Tricks and Traps, Clayton Walnum, ISBN 1565298950
  • Borland C++ 4.5 Object-Oriented Programming, Ted Faison, ISBN 0672306050
  • Borland C++ 5.0 Programming Starter Kit Deluxe, , ISBN 1575954303
  • Core OWL 5.0: OWL Internals for Advanced, Ted Neward, ISBN 1884777503
  • Mastering Borland C++ 4.5, Tom Swan, ISBN 0672305461
  • Object Windows 2.0 Programming, Victor E. Broquard, ASIN 0553371207
  • Programming for OWL for Windows 95, Victor E. Broquard, ASIN 0134922735
  • Teach yourself OWL Programming in 21 days, Ian Spencer, ISBN 067230600X
  • Windows Graphic Programming with Borland C++, Loren Heiny, ISBN 0471309303

[edit] Versions (non-exhaustive list)

Product version OWL version
Borland C/C++ 3.1 OWL 1.0
Borland C/C++ 2.0 for OS/2 OWL 2.0
Borland C++ 4.0x OWL 2.0
Borland C++ 4.5x OWL 2.5
Borland C++ 5.0x OWL 5.0
Borland C++ 5.0x Japanese OWL 5.0
Borland C++ Builder 4.0 OWL 5.0
Borland C++ Builder 5.0 OWL 5.0
Borland C++ Builder 2007 OWLNext 6.20
Turbo Pascal for Windows 1.0
Turbo Pascal for Windows 1.5

[edit] See also

[edit] External links