The Mjølner System: Overview


Rapid Application Development (RAD)

Modern object-oriented methodologies recommend an evolutionary approach with free alternation between analysis, design and implementation. The Mjølner System supports Rapid Application Development including initial prototyping, object-oriented modeling and design, implementation, documentation and development of full applications. The Mjølner System makes it easy to alternate between analysis, design and implementation. RAD with The Mjølner System includes UML-based design diagrams, GUI construction, and implementation.

Multiplatform Development

The same source code can be used on Windows 95/98/2000, Windows NT, UNIX and Macintosh. Multiplatform development includes: a common object format for persistent objects, heterogeneous object distribution, cross-platform development, and platform independent GUI framework.

Only one Language for Design and Implementation

The Mjølner System provides a modern object-oriented language, BETA, which is a design language as well as an implementation language. BETA has a graphical notation based on the Unified Modeling Language (UML) for describing object-oriented design diagrams. BETA has also a textual syntax for describing implementations. The underlying concepts are the same. BETA unifies class, procedure, generic class, process, exception, etc. into one abstraction mechanism, the pattern.

  class procedure generic class process exception
pattern + + + + +
subpattern + + + + +
virtual pattern + + + + +
pattern variable + + + + +
nested pattern + + + + +

Some of the advantages of the unified pattern concept are: In addition to class inheritance, subpatterns give method and process inheritance. Virtual methods are supported by virtual patterns which in addition support genericity (templates) without a special concept. Nested patterns are useful for structuring large frameworks with hierarchical structures. No special construct for exceptions.

Concurrent Objects

BETA has builtin concurrency in the form of active objects. The basic synchronization mechanism is the semaphore, but BETA's powerful abstraction mechanisms make it easy to define high-level concurrency abstractions on top of semaphores. The Mjølner System libraries contain a number of such abstractions, including monitors, and rendezvous-based synchronization.

Distributed Objects

Objects can be distributed in a network. Access to distributed objects is transparent and looks the same as for local objects. A proxy mechanism forwards remote method invocations. Client/server applications are supported, and an object can at the same time be a client as well as a server. It is easy to make distributed applications in a network of UNIX, Windows PC's and Macintosh computers.

Persistent Objects

Any BETA object may be saved in a persistent store. Persistence is type orthogonal. When an object is saved, all objects reachable from that object are also saved. Similarly when an object is read, all objects reachable from that object are also read by need.

Mjølner System Integrated Development Tool

Mjølner integrates a number of tools:

Lidskjalv: GUI Framework

Lidskjalv makes it easy to construct advanced graphical user interfaces. Lidskjalv is platform independent meaning that a user interface developed on one platform can easily be ported to another platform. The look-and-feel of a user interface will be that of the respective platform.

Bifrost: 2D Graphics Framework

Bifrost is a platform-independent object-oriented Stencil & Paint imaging model, for construction of advanced, interactive drawings, using e.g. Bezier splines, colors, fonts, and pictures. Drawings can be saved and restored using Encapsulated PostScript.

Basic Libraries

The basic libraries of The Mjølner System include classic data structures such as text, file, container, list, set, and hashtable.

Yggdrasil: Metaprogramming System

Yggdrasil provides a well-defined interface for manipulating programs as data. The metaprogramming system provides general grammarbased tools, including an LALR(1) parser generator and adaptive pretty printer.

External Interfaces

BETA has a general interface to external languages such as C making it easy to call C functions and provide BETA patterns as callback functions to C. The libraries include interfaces to the underlying operating systems.


Teaching of object-oriented software construction should be based on state of the art programming languages and tools. The Mjølner System provides a complete solution for teaching object-orientation. The Mjølner System has successfully been used for introductory programming, programming in the large, software engineering, distributed computing, and persistent data modeling.

More Information

If you are interested in a more elaborate introduction to the Mjølner System, please read the various
Mjølner System tutorials.

Mjølner is the name of the hammer of the god Thor. According to the mythology, this hammer is the perfect tool that cannot fail, grows with the task, and always comes back in the hand of Thor.