Object Windows Library
|This article needs additional citations for verification. (October 2009)|
|Developer(s)||Borland (now Codegear)|
|Stable release||OWLNext 6.30.9 / September 2, 2010|
|Preview release||OWLNext 6.31.5 / June 3, 2010|
|Written in||Borland C++, Borland Pascal|
|Operating system||Windows and Linux|
|Type||Library or framework|
|License||Originally proprietary; now freeware|
The Object Windows Library (OWL) is a Borland C++ object-oriented framework originally designed for Windows API. 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 written in Object Pascal and included in Delphi and C++ Builder Studios.
An open source internet community has released OWLNext, a series of improvements and patches to the original OWL which also allows newer compilers (Borland C++ Builder 5–6, GCC, Microsoft Visual C++ 6, 2003–2010, BDS C++ 2006, CodeGear C++ 2007–2010).
In the early 1990s, 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 software, especially with the rising of the Windows platform (and the complexity that it involves). This allowed 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 OWL 1.0 to OWL 2.0.
In 1992, Microsoft launched MFC. A DOS version of MFC was short lived. The Windows version was simply a wrapper around the Windows API 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 to deploy applications on Mac, Windows and Unix clients and with several network 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, and 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 OSF/1 AXP, 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 Windows 95, 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 has included OWL in the 'companion CD'. After that Borland concentrated development on 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 applications 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 OWLNext which consists of patches to the original OWL source code. It was included in the partner discs of Borland C++ Builder 2007 and Borland C++ Builder XE.
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.
In OWL, all classes start with letter "T" (e.g. TApplication); there are several root classes, the most common is TWindow from which window classes (e.g. TFrameWindow, TDecoratedFrameWindow, TDialog, TInputDialog, TFileOpenDialog, etc.) and controls classes (TEdit, TStatic, TButton, TGlyphButton, TComboBox, etc.) are derived. VCL classes also has the same prefix, but in VCL, all classes are derived from TComponent. Applications made with OWLNext are compatible with DEP/NX feature which defend system against virus/internet attacks. OWLNext supports Unicode, even on the Unicode non-compliant Windows 9x.
- 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 is included in OWL
- Faster executables than Visual Basic P-Code executables 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, 2003–2010, BDS 2006–2007
- The 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 Visual Basic 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 95 to Windows 7 compatible. Win 3.x supported until OWLNext 6.20.x.
- Not ported to Mac OS X, Windows CE, or other non-common platforms.
- Alternatives such as VCL provide rapid application development (RAD).
- The Windows API is not completely covered, requiring deeper knowledge of it.
- Significantly fewer users than MFC.
- Poor third-party support in the form of books, web sites, articles and third-party libraries (such as Codejock Software).
- No native support for JPEG or PNG files.
||This section may require cleanup to meet Wikipedia's quality standards. (November 2009)|
When Borland deprecated OWL in favor of VCL, a group of developers led by Yura Bidus started the project of maintaining the library in 1998. The original websites were http://owlnext.starbase21.com, http://www.webcitation.org/query?url=http://www.geocities.com/SiliconValley/Campus/5642/owlnext.html&date=2009-10-25+09:47:48 and http://members.xoom.com/yuri_b. Currently, the project is hosted by SourceForge: http://owlnext.sourceforge.net or http://www.owlnext.com. The extension is open source, free and the license allows the development of commercial applications.
The original name was OWL NExt, where the meaning of NExt was New Extensions. Later, it was joined to OWLNExt and currently, it is called OWLNext. The current version as of 2007 is OWLNext 6.20; the last version to officially support the Win16 platform.
OWLNext supports Unicode, even allowing developers to deploy Unicode-based applications in Win95. Added support for HTMLHelp.
OWL is still the property of Borland and is covered by several patents, however the version included in the 'Companion CD' for C++Builder can be downloaded from the current CodeGear site. The CodeGear site also allows developers to download the version 6.04 of OWLNext, but the official site for OWLNext is SourceForge.
Originally, OWL used BIDS (Borland International Data Structure) library 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, and there are also private ports to Solaris. These ports are now being integrated into the upcoming OWLNext 6.40. Win64 support is planned for a future release. Currently there is no plan to support the .NET platform since native Vista will allow better performance.
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 / Codegear C++ Builder 2007||OWLNext 6.20|
|Embarcadero C++ Builder XE||OWLNext 6.30|
|Embarcadero C++ Builder XE2||OWLNext 6.32|
|Embarcadero C++ Builder XE3||OWLNext 6.40 (planned)|
|Turbo Pascal for Windows 1.0|
|Turbo Pascal for Windows 1.5|
- Microsoft Foundation Class Library
- Visual Component Library
- Turbo Vision
- Microsoft Visual Studio
- Neward, Ted. Advanced OWL 5.0: Power Tools for OWL Programmers. ISBN 1-884777-46-5.
- Walnum, Clayton. Borland C++ 4.x Tips, Tricks and Traps. ISBN 1-56529-895-0.
- Faison, Ted. Borland C++ 4.5 Object-Oriented Programming. ISBN 0-672-30605-0.
- Borland C++ 5.0 Programming Starter Kit Deluxe. Pearson Software. June 2002. ISBN 1-57595-430-3.
- Faison, Ted. Borland C++ Object Oriented Programs. ISBN 978-0-672-30775-1.
- Neward, Ted. Core OWL 5.0: OWL Internals for Advanced. ISBN 1-884777-50-3.
- Faison, Ted. Inside Object Windows Library. ISBN 978-0-672-30219-0.
- Swan, Tom. Mastering Borland C++ 4.5. ISBN 0-672-30546-1.
- Broquard, Victor E. Object Windows 2.0 Programming. ASIN 0553371207. ISBN 978-0-553-37120-8.
- Broquard, Victor E. Programming for OWL for Windows 95. ASIN 0134922735. ISBN 978-0-13-492273-7.
- Spencer, Ian. Teach yourself OWL Programming in 21 days. ISBN 0-672-30600-X.
- Heiny, Loren. Windows Graphic Programming with Borland C++. ISBN 0-471-30930-3.
- OWL source code from CodeGear
- OWLNext 6.20 from Codegear
- OWLNext 6.30 from Embarcadero
- OWLNext website