BeOS API

Last updated
The BeOS architecture Beostru.PNG
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 Haiku and ZETA.

Contents

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. [1]

Storage Kit

The Storage kit provides methods related to access to the file system, including manipulating files, navigating the file system hierarchy, creating and managing symlinks, dealing with 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. [2]

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, drawing operations and rendering control. The majority of libbe.so comprises this kit. [3]

In the Haiku version of the API, it adds the Layout API, that provides tools to design user interfaces. [4]

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. [5]

Device Kit

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

Locale Kit

The Locale Kit provides classes to internationalize and localize applications, including translation to different languages and switching language strings at runtime, management of time zones, dates and number formatting conventions according to the locale preference of the user. [6] 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 Apple's WebKit. The kit is only found in the Haiku implementation of the BeOS API.

Package Kit

The Package Kit provides an application programming interface aimed to develop package management tasks, including reading and writing Haiku packages files, software repositories management tasks such as adding, removing and querying repositories, and package management operations such as installation, removal, updates and package dependencies solving. [7] 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 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. [8]

Related Research Articles

<span class="mw-page-title-main">Allegro (software library)</span> Software library for video game development

Allegro is a software library for video game development. The functionality of the library includes support for basic 2D graphics, image manipulation, text output, audio output, MIDI music, input and timers, as well as additional routines for fixed-point and floating-point matrix arithmetic, Unicode strings, file system access, file manipulation, data files, and 3D graphics. The library is written in the C programming language and designed to be used with C, C++, or Objective-C, with bindings available for Python, Lua, Scheme, D, Go, and other languages. Allegro comes with extensive documentation and many examples.

Cocoa is Apple's native object-oriented application programming interface (API) for its desktop operating system macOS.

<span class="mw-page-title-main">GNUstep</span> Open source widget toolkit and application development tools

GNUstep is a free software implementation of the Cocoa Objective-C frameworks, widget toolkit, and application development tools for Unix-like operating systems and Microsoft Windows. It is part of the GNU Project.

<span class="mw-page-title-main">Windows API</span> Microsofts core set of application programming interfaces on Windows

The Windows API, informally WinAPI, is Microsoft's core set of application programming interfaces (APIs) available in the Microsoft Windows operating systems. The name Windows API collectively refers to several different platform implementations that are often referred to by their own names. Almost all Windows programs interact with the Windows API. On the Windows NT line of operating systems, a small number use the Native API.

An object-oriented operating system is an operating system that is designed, structured, and operated using object-oriented programming principles.

<span class="mw-page-title-main">IBM i</span> Operating system

IBM i is an operating system developed by IBM for IBM Power Systems. It was originally released in 1988 as OS/400, as the sole operating system of the IBM AS/400 line of systems. It was renamed to i5/OS in 2004, before being renamed a second time to IBM i in 2008. It is an evolution of the System/38 CPF operating system, with compatibility layers for System/36 SSP and AIX applications. It inherits a number of distinctive features from the System/38 platform, including the Machine Interface, the implementation of object-based addressing on top of a single-level store, and the tight integration of a relational database into the operating system.

<span class="mw-page-title-main">Virtual Studio Technology</span> Audio plug-in software interface

Virtual Studio Technology (VST) is an audio plug-in software interface that integrates software synthesizers and effects units into digital audio workstations. VST and similar technologies use digital signal processing to simulate traditional recording studio hardware in software. Thousands of plugins exist, both commercial and freeware, and many audio applications support VST under license from its creator, Steinberg.

Hardware abstractions are sets of routines in software that provide programs with access to hardware resources through programming interfaces. The programming interface allows all devices in a particular class C of hardware devices to be accessed through identical interfaces even though C may contain different subclasses of devices that each provide a different hardware interface.

<span class="mw-page-title-main">Haiku (operating system)</span> Free and open-source operating system inspired by BeOS

Haiku is a free and open-source operating system capable of running applications written for the now-discontinued BeOS, which it is modeled after. Its development began in 2001, and the operating system became self-hosting in 2008. The first alpha release was made in September 2009, and the last alpha was released on November 2012; the first beta was released in September 2018, followed by beta 2 in June 2020, then beta 3 in July 2021. The fourth beta was released on December 23, 2022, still keeping BeOS 5 compatibility in its x86 32-bit images, with a greatly increased number of modern drivers, GTK3 apps and Wine port, as well as Xlib (X11) and Wayland compatibility layers.

In computing, gettext is an internationalization and localization system commonly used for writing multilingual programs on Unix-like computer operating systems. One of the main benefits of gettext is that it separates programming from translating. The most commonly used implementation of gettext is GNU gettext, released by the GNU Project in 1995. The runtime library is libintl. gettext provides an option to use different strings for any number of plural forms of nouns, but this feature has no support for grammatical gender.

<span class="mw-page-title-main">Kodi (software)</span> Free software media player

Kodi is a free and open-source media player and technology convergence software application developed by the XBMC Foundation, a non-profit technology consortium. Kodi is available for multiple operating systems and hardware platforms, with a software 10-foot user interface for use with televisions and remote controls. It allows users to play and view most streaming media, such as videos, music, podcasts, and videos from the Internet, as well as all common digital media files from local and network storage media, or TV gateway viewer.

<span class="mw-page-title-main">OpenSceneGraph</span>

OpenSceneGraph is an open-source 3D graphics application programming interface, used by application developers in fields such as visual simulation, computer games, virtual reality, scientific visualization and modeling.

<span class="mw-page-title-main">Architecture of Windows NT</span> Overview of the architecture of the Microsoft Windows NT line of operating systems

The architecture of Windows NT, a line of operating systems produced and sold by Microsoft, is a layered design that consists of two main components, user mode and kernel mode. It is a preemptive, reentrant multitasking operating system, which has been designed to work with uniprocessor and symmetrical multiprocessor (SMP)-based computers. To process input/output (I/O) requests, they use packet-driven I/O, which utilizes I/O request packets (IRPs) and asynchronous I/O. Starting with Windows XP, Microsoft began making 64-bit versions of Windows available; before this, there were only 32-bit versions of these operating systems.

Core OpenGL, or CGL, is Apple Inc.'s Macintosh Quartz windowing system interface to the OS X implementation of the OpenGL specification. CGL is analogous to GLX, which is the X11 interface to OpenGL, as well as WGL, which is the Microsoft Windows interface to OpenGL.

The Apple Developer Tools are a suite of software tools from Apple to aid in making software dynamic titles for the macOS and iOS platforms. The developer tools were formerly included on macOS install media, but are now exclusively distributed over the Internet. As of macOS 10.12, Xcode is available as a free download from the Mac App Store.

<span class="mw-page-title-main">AmigaOS</span> Operating system for Amiga computers

AmigaOS is a family of proprietary native operating systems of the Amiga and AmigaOne personal computers. It was developed first by Commodore International and introduced with the launch of the first Amiga, the Amiga 1000, in 1985. Early versions of AmigaOS required the Motorola 68000 series of 16-bit and 32-bit microprocessors. Later versions were developed by Haage & Partner and then Hyperion Entertainment. A PowerPC microprocessor is required for the most recent release, AmigaOS 4.

Embedded Wizard is a graphical user interface tool developed and distributed by TARA Systems GmbH for creating graphical user interface (GUI) applications mainly for embedded systems. It provides a WYSIWYG front-end for editing graphics, effects and logic of the user interface and generates ANSI C code for particular target hardware. Embedded Wizard is independent of a specific graphics hardware or color format and supports object oriented programming.

<span class="mw-page-title-main">Haiku Applications</span> List of applications bundled with the Haiku operating system

Haiku is a free and open-source operating system compatible with the now discontinued BeOS.

SceneKit, sometimes rendered Scene Kit, is a 3D graphics application programming interface (API) for Apple Inc. platforms written in Objective-C. It is a high-level framework designed to provide an easy-to-use layer over the lower level APIs like OpenGL and Metal. SceneKit maintains an object based scene graph, along with a physics engine, particle system, and links to Core Animation and other frameworks to easily animate that display. SceneKit views can be mixed with other views, for instance, allowing a SpriteKit 2D display to be mapped onto the surface of an object in SceneKit, or a UIBezierPath from Core Graphics to define the geometry of a SceneKit object. SceneKit also supports import and export of 3D scenes using the COLLADA format. SceneKit was first released for macOS in 2012, and iOS in 2014.

References

  1. Be Inc. 1997 , chapter 2 "The Application Kit"
  2. Be Inc. 1997 , chapter 3 "The Storage Kit"
  3. Be Inc. 1997 , chapter 4 "The Interface Kit"
  4. "Introducing the Layout API". The Haiku Book. Haiku Documentation Team. Retrieved 15 November 2021.
  5. ATI Radeon/Voodoo2 OpenGL Benchmarks, BeOS vs. Windows98 again! Who's faster?, By Eugenia Loli, 2001 October 16, BeNews
  6. "Introduction to the Locale Kit". The Haiku Book. Haiku Documentation Team. Retrieved 6 December 2021.
  7. "Package Management Infrastructure". Haiku internals documentation. Haiku development team. Retrieved 24 November 2021.
  8. ACCESS Co. Releases BeBook and Be Newsletters, by koki, 2007-04-03, Haiku Project

Bibliography