Object Windows Library
Encyclopedia
The Object Windows Library (OWL) is a Borland C++
Borland C++
Borland C++ is a C and C++ programming environment for MS-DOS and Microsoft Windows. It was the successor to Turbo C++, and included a better debugger, the Turbo Debugger, which was written in protected mode DOS....

 object-oriented framework originally designed for WinAPI
Windows API
The Windows API, informally WinAPI, is Microsoft's core set of application programming interfaces available in the Microsoft Windows operating systems. It was formerly called the Win32 API; however, the name "Windows API" more accurately reflects its roots in 16-bit Windows and its support on...

. It was used in Turbo Pascal
Turbo Pascal
Turbo Pascal is a software development system that includes a compiler and an integrated development environment for the Pascal programming language running on CP/M, CP/M-86, and DOS, developed by Borland under Philippe Kahn's leadership...

 for Windows, Borland Pascal and their Borland C++
C++
C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...

 package. It was a competitor to the Microsoft Foundation Class Library
Microsoft Foundation Class Library
The Microsoft Foundation Class Library is a library that wraps portions of the Windows API in C++ classes, including functionality that enables them to use a default application framework...

 (MFC).

OWL had incomplete support by the Borland C++
Borland C++
Borland C++ is a C and C++ programming environment for MS-DOS and Microsoft Windows. It was the successor to Turbo C++, and included a better debugger, the Turbo Debugger, which was written in protected mode DOS....

 IDE and wasn't always upwardly compatible from release to release. It was eventually deprecated in favor of the Visual Component Library
Visual Component Library
VCL is a visual component-based object-oriented framework for developing Microsoft Windows applications. It was developed by Borland for use in, and tightly integrated with, its Delphi and C++Builder RAD tools...

 (VCL), which is written in Object Pascal
Object Pascal
Object Pascal refers to a branch of object-oriented derivatives of Pascal, mostly known as the primary programming language of Embarcadero Delphi.-Early history at Apple:...

 and included in Delphi and C++ Builder
C++ Builder
C++Builder is a rapid application development environment, developed by Borland and owned by Embarcadero Technologies, for writing programs in the C++ programming language. C++Builder combines the Visual Component Library and IDE written in Delphi with a C++ compiler...

 Studios.

An open source
Open source
The term open source describes practices in production and development that promote access to the end product's source materials. Some consider open source a philosophy, others consider it a pragmatic methodology...

 internet community
Virtual community
A virtual community is a social network of individuals who interact through specific media, potentially crossing geographical and political boundaries in order to pursue mutual interests or goals...

 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, MSVC 2008, MSVC 2010, BDS C++ 2006, CodeGear C++ 2007, CodeGear C++ 2009, CodeGear C++ 2010). The project name: OWLNext.

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
Dynamic dispatch
In computer science, dynamic dispatch is the process of mapping a message to a specific sequence of code at runtime. This is done to support the cases where the appropriate method can't be determined at compile-time...

 Virtual Tables (DDVT), this allowed objects to bind 'events' (windows messages) with 'methods' (functions). This mechanism avoided saturating the OO virtual function
Virtual function
In object-oriented programming, a virtual function or virtual method is a function or method whose behaviour can be overridden within an inheriting class by a function with the same signature...

 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 simply a wrapper around WinAPI, and was criticized for not being truly object oriented.

In 1993 Borland launched Borland C++ 2.0 for OS/2
OS/2
OS/2 is a computer operating system, initially created by Microsoft and IBM, then later developed by IBM exclusively. The name stands for "Operating System/2," because it was introduced as part of the same generation change release as IBM's "Personal System/2 " line of second-generation personal...

 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
AppWare
AppWare was a rapid application development system for Microsoft Windows and the Mac OS based on a simple graphical programming language. AppWare was developed by Joseph Firmage and marketed by Serius, a company started by Firmage in 1989...

 Foundation. AppWare Foundation was an API designed by Novell to be cross-platform
Cross-platform
In computing, cross-platform, or multi-platform, is an attribute conferred to computer software or computing methods and concepts that are implemented and inter-operate on multiple computer platforms...

, 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
Microsoft Windows
Microsoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal...

.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
Tru64 UNIX
Tru64 UNIX is a 64-bit UNIX operating system for the Alpha instruction set architecture , currently owned by Hewlett-Packard . Previously, Tru64 UNIX was a product of Compaq, and before that, Digital Equipment Corporation , where it was known as Digital UNIX .As its original name suggests, Tru64...

 AXP, HP-UX
HP-UX
HP-UX is Hewlett-Packard's proprietary implementation of the Unix operating system, based on UNIX System V and first released in 1984...

 9.03, Linux 1.2, Solaris 2.x, Sun OS
SunOS
SunOS is a version of the Unix operating system developed by Sun Microsystems for their workstation and server computer systems. The SunOS name is usually only used to refer to versions 1.0 to 4.1.4 of SunOS...

 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
Windows 95
Windows 95 is a consumer-oriented graphical user interface-based operating system. It was released on August 24, 1995 by Microsoft, and was a significant progression from the company's previous Windows products...

 (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++
Visual C++
Microsoft Visual C++ is a commercial , integrated development environment product from Microsoft for the C, C++, and C++/CLI programming languages...

 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 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
CodeGear
CodeGear is a wholly owned division of Embarcadero Technologies. CodeGear develops software development tools such as the Delphi IDE, the programming language Delphi, and the database server InterBase. Originally a division of Borland Software Corporation, it was launched on 14 November 2006...

) 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 OWLNext 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
Windows Vista
Windows Vista is an operating system released in several variations developed by Microsoft for use on personal computers, including home and business desktops, laptops, tablet PCs, and media center PCs...

 development.

In 2010 Embarcadero Technologies
Embarcadero Technologies
Embarcadero Technologies is an American computer software company that develops, manufactures, licenses, and supports a wide range of products and services related to software through its various dynamic product divisions...

 (which bought CodeGear from Borland) launched Borland C++ Builder XE which included OWLNext in the partner CD.

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
Object Linking and Embedding
Object Linking and Embedding is a technology developed by Microsoft that allows embedding and linking to documents and other objects. For developers, it brought OLE Control eXtension , a way to develop and use custom user interface elements...

.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).

Advantages

  • Well designed Object oriented
    Object-oriented analysis and design
    Object-oriented analysis and design is a software engineering approach that models a system as a group of interacting objects. Each object represents some entity of interest in the system being modeled, and is characterised by its class, its state , and its behavior...

     framework, provides real encapsulation of Windows APIs, allows inheritance and polymorphism.
  • C++ class
    C++ structure
    The C++ programming language allows programmers to separate program-specific datatypes through the use of classes. Instances of these datatypes are known as objects and can contain member variables, constants, member functions, and overloaded operators defined by the programmer...

     for many common Windows resource-related data type
    Data type
    In computer programming, a data type is a classification identifying one of various types of data, such as floating-point, integer, or Boolean, that determines the possible values for that type; the operations that can be done on values of that type; the meaning of the data; and the way values of...

    s 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
    Borland
    Borland Software Corporation is a software company first headquartered in Scotts Valley, California, Cupertino, California and finally Austin, Texas. It is now a Micro Focus subsidiary. It was founded in 1983 by Niels Jensen, Ole Henriksen, Mogens Glad and Philippe Kahn.-The 1980s:...

     Data Structure
    Data structure
    In computer science, a data structure is a particular way of storing and organizing data in a computer so that it can be used efficiently.Different kinds of data structures are suited to different kinds of applications, and some are highly specialized to specific tasks...

    ) a template class
    Generic programming
    In a broad definition, generic programming is a style of computer programming in which algorithms are written in terms of to-be-specified-later types that are then instantiated when needed for specific types provided as parameters...

     library.
  • OWLNext uses the Standard Template Library (STL), which simplifies ports to other platforms.
  • String class included in OWL.
  • Faster executables than Visual Basic
    Visual Basic
    Visual Basic is the third-generation event-driven programming language and integrated development environment from Microsoft for its COM programming model...

     P-Code
    P-code
    P-code can refer to:* Precompiled code, for example Java Byte code, MATLAB .p-files, etc.* p-code machine * Code used in the UCSD p-System...

     Executables or java.
  • Faster executables than those produced by the .NET Framework
    .NET Framework
    The .NET Framework is a software framework that runs primarily on Microsoft Windows. It includes a large library and supports several programming languages which allows language interoperability...

    .
  • 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
      End-user
      Economics and commerce define an end user as the person who uses a product. The end user or consumer may differ from the person who purchases the product...

       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
    Source code
    In computer science, source code is text written using the format and syntax of the programming language that it is being written in. Such a language is specially designed to facilitate the work of computer programmers, who specify the actions to be performed by a computer mostly by writing source...

     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

Disadvantages

  • Not ported to Mac OS X
    Mac OS X
    Mac OS X is a series of Unix-based operating systems and graphical user interfaces developed, marketed, and sold by Apple Inc. Since 2002, has been included with all new Macintosh computer systems...

    , WinCE
    Windows CE
    Microsoft Windows CE is an operating system developed by Microsoft for embedded systems. Windows CE is a distinct operating system and kernel, rather than a trimmed-down version of desktop Windows...

    , 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
    Rapid application development
    Rapid application development is a software development methodology that uses minimal planning in favor of rapid prototyping. The "planning" of software developed using RAD is interleaved with writing the software itself...

     (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 Software
    Codejock Software
    Codejock Software is based in Morrice, Michigan USA and provides reusable software components that enhance the Graphical User Interface of Windows Desktop Applications...

    )
  • No native support for reading/writing JPG or PNG files
  • No native XML support

OWLNext: the future of OWL

When Borland deprecated OWL in favor of VCL, a group of developers led by Yura Bidus started the project of maintain 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 in 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 NExt meaning 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, it's the last version to officially support the 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 allows to download the version 6.04 of OWLNext, but the official site for OWLNext is SourceForge
SourceForge
SourceForge Enterprise Edition is a collaborative revision control and software development management system. It provides a front-end to a range of software development lifecycle services and integrates with a number of free software / open source software applications .While originally itself...

.

Original 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
Standard Template Library
The Standard Template Library is a C++ software library which later evolved into the C++ Standard Library. It provides four components called algorithms, containers, functors, and iterators. More specifically, the C++ Standard Library is based on the STL published by SGI. Both include some...

), 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. These ports are now being integrated into the upcoming OWLNext 6.40. The support for Win64 is on the plan. Currently there is no plan to support .NET platform since native Vista will allow better performance.

Books about OWL & Borland C++

There are several books about the C++ / OWL, among these are:
  • Advanced OWL 5.0: Power Tools
    Power tool
    A power tool is a tool that is actuated by an additional power source and mechanism other than the solely manual labour used with hand tools. The most common types of power tools use electric motors. Internal combustion engines and compressed air are also commonly used...

     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
    Object-oriented programming
    Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,...

    , Ted Faison, ISBN 0672306050
  • Borland C++ 5.0 Programming Starter Kit Deluxe, , ISBN 1575954303
  • Borland C++ Object Oriented Programs, Ted Faison, ISBN 0672307758, ISBN-13 978-0672307758
  • Core OWL 5.0: OWL Internals for Advanced, Ted Neward, ISBN 1884777503
  • Inside Object Windows Library, Ted Faison, ISBN 0672302195, ISBN-13 978-0672302190
  • 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

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
Turbo Pascal for Windows 1.0
Turbo Pascal for Windows 1.5

See also

  • Microsoft Foundation Class Library
    Microsoft Foundation Class Library
    The Microsoft Foundation Class Library is a library that wraps portions of the Windows API in C++ classes, including functionality that enables them to use a default application framework...

  • Visual Component Library
    Visual Component Library
    VCL is a visual component-based object-oriented framework for developing Microsoft Windows applications. It was developed by Borland for use in, and tightly integrated with, its Delphi and C++Builder RAD tools...

  • Turbo Vision
    Turbo Vision
    Turbo Vision is a DOS-based character-mode text user interface framework developed around 1992 by Borland for Pascal, and C++. Later it was deprecated in favor of Object Windows Library for the then-increasingly important Win16 API....

  • wxWidgets
    WxWidgets
    wxWidgets is a widget toolkit for creating graphical user interfaces for cross-platform applications. wxWidgets enables a program's GUI code to compile and run on several computer platforms with minimal or no code changes...


External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK