BeOS API

From Infogalactic: the planetary knowledge core
(Redirected from Be API)
Jump to: navigation, search
The BeOS architecture

The BeOS API, often called the Be API after Be Inc., is the application programming interface required to write graphical native applications on BeOS, and hence its derivatives such as ZETA and Haiku.

The API is divided into a number of "kits", which collect related classes together and bear some relation to the library which contains the supporting code.

It is almost entirely C++, with third-party bindings for most classes in Python and a tiny subset of classes, mostly Storage kit related, in Perl.

Kits

Application Kit

The Application kit contains the basic classes required to launch a BeOS application, as well as support for the global clipboard, inter-application and internal messaging, timers, rosters and other functions seen as required to support any graphical application. Application kit classes are supported by libbe.so

Storage Kit

The Storage kit provides methods for manipulating files from creating and managing symlinks all the way to the file open/save panels for graphical applications, as well as dealing with Be File System attributes. Storage kit classes are mostly in libtracker.so, Tracker being the native file manager on the OS.

Interface Kit

The Interface kit provides a large collection of widgets for building graphical applications from the main window class down to dialogue boxes, including font handling and rendering control. The majority of libbe.so comprises this kit.

Kernel Kit

The Kernel kit provides threading, semaphores and the ability to access system information, and is also in libbe.so

Support Kit

The Support kit provides more advanced functions which do not readily fall into another kit, such as assisted memory allocation and list support.

Network Kit

The Network kit provides either a rudimentary (BeOS R5 and lower) or almost complete (BeOS Dano and higher) implementation of Berkeley sockets and BIND as well as "native" functions based on the Nettle C++ networking library. libnet.so provides the Berkeley sockets on R5, later replaced by the more common libsocket/libbind.so nomenclature; and libnetapi on R5, later replaced by libbnetapi provides the modified version of Nettle.

Mail Kit

The Mail kit provides a native email format as well as a way to use the system to fetch and receive email using standard protocols (POP3 and SMTP). The Mail kit is supported in libmail.so

Translation Kit

The Translation kit provides a method whereby both images and plain text formats are handled by addons allowing applications to support only one format, a native intermediate one, and save/load to any addon-supported format. The API also allows video and audio translation through the library, although this was superseded by BeOS R4 and immediately disabled. The Translation kit is supported in libtranslation.so

Media Kit

The Media kit provides an audio and video input/output abstraction layer based on pluggable addons, as well as handling sound mixing, audio and video format translation and other media related functions. Media kit functions are supported by libmedia.so

MIDI Kit

The MIDI kit provides MIDI hardware input and output abstraction as well as a software synthesiser (provided by Headspace in BeOS R5). libmidi.so provides the old, BeOS R3 era MIDI API, libmidi2.so provides the R4+ API.

Game Kit

The Game kit provides a number of sound formats suited to computer game audio output, as well as the ability to run full-screen applications and use video overlays.

OpenGL Kit

The OpenGL kit provides an implementation of OpenGL as well as supporting classes to allow its use in native applications. In BeOS R5, the supported OpenGL version was 1.1, and was software accelerated, although the kit was hardware-neutral, and in fact outperformed many hardware implementations that were running on competing platforms which could not deliver similar latency/bandwidth performance due to underlying inefficiencies in their design or implementation.[1]

Device Kit

The Device kit provides platform-abstracted direct hardware access to serial and parallel ports, as well as the BeBoxs infamous GeekPort.

Locale Kit

The Locale Kit provides classes to localize applications to different languages, timezones, number formatting conventions etc. The kit is only found in the Haiku implementation of the BeOS API.

Services Kit

The Services Kit provides a lightweight direct connection to web services. The kit is only found in the Haiku implementation of the BeOS API.

Web Kit

The Web Kit provides means of rendering web pages and is a fork of the Apple's Webkit. The kit is only found in the Haiku implementation of the BeOS API.

Package Kit

The Package Kit provides the means of package management. The kit is only found in the Haiku implementation of the BeOS API.

Non-BeOS implementations

The majority of the Be API has been reimplemented by Haiku for their open-source BeOS replacement, although in an effort to catch up with the intervening years since BeOS R5 some additional functionality has been added, ranging from large changes to the Mail kit to support IMAP, encrypted connections and multiple accounts, and a move to OpenGL 1.5 support via Mesa 3D.

Alternative systems have attempted to draw some inspiration (Syllable) from the BeOS API, but are not making attempts to provide a base to port applications.

A private port of much of the API to Microsoft Windows and later Linux (using GTK+) was done by Gobe Software[2] to enable them to port their Gobe Productive office suite to these platforms from BeOS, where it had originally been developed.

Documentation

The entire API, as it was at the stage of BeOS Revision 3, was documented in two paper books - the Be Developer Guide and Be Advanced Topics, released by O'Reilly Media under a Be, Inc imprint in 1997/8. In addition, a digital representation of this was provided and updated with BeOS itself. In 2007, ACCESS Co Ltd, the owners of Be, Inc's intellectual property, released the text of this under a Creative Commons licence.[3]

References