Unique Features of the Z++ Language:



Invariants and Constraints -

Z++ class invariants ensure that instances of a class remain in a correct desired state. On the other hand, constraints trap invocations of methods with incorrect arguments. Systematic inclusion of invariants and constraints in software development is generally known as Design-by-Contract.

A short and simple reading of these powerful features of Z++ for designing correct software is provided in Invariants (read whitepaper). Z++ Visual includes simple and well-documented project examples showing the use of invariants and constraints.

Component-orientation -

Z++ language is inherently component-oriented. Z++ applications are composed of components. Each component of a Z++ application is a Z++ program that may be running on any device in a network.

The intuitive and simple linguistic facilities of Z++ are directly supported by the Z47 distributed operating system. This allows developing Z++ components of a large application concurrently in disparate geographic locations.

The whitepaper Component (read whitepaper) provides further information on this important feature. Z++ Visual includes several well-documented example projects illustrating the power of component-orientation in software development.

Resumption from Exception -

Without the ability to resume, an exception mechanism is only partially useful. Z++ provides two forms of resumption for a complete control over the course of action to be taken when an exception can be handled. In addition, Z++ exception model ensures that all exceptions thrown in user code are eventually caught at some point.

Z++ Visual contains well-documented examples of exceptions occurring in threads or other components. The whitepaper Exception (read whitepaper) illustrates the Z++ exception model.

Template Patterns -

The whitepaper Template (read whitepaper) illustrates a very important Z++ addition to C++ templates. The simple mechanism of specifying patterns ensures that templates will not be instantiated with types that do not satisfy the desired conditions.

Threads -

Z++ threads, global or object-oriented, are managed by, Z47 Processor. Z47 does not make system calls for creating threads. Thus, Z++ multi-threaded applications are entirely platform independent and are available even when the underlying OS is not multi-threaded.

The whitepaper Thread (read whitepaper) introduces the notion of thread in Z++. In particular, Z++ tasks have several advanced features such as Task Idlers.

These features are illustrated via example projects included in Z++ Visual (Download).

Debugging Distributed Applications

The Z47 Processor provides a uniform view of distributed applications. The components of an application may be running on a single machine, or spread among the nodes of the Internet. This simple unified view provides the power to debug distributed applications just as easily as applications running entirely on a single machine.

Since Z47 is a distributed operating system, the location of execution of each component of an application is irrelevant. The more important fact is that, once an application has been tested on a single machine, it can be made distributed without code change.

Namespaces -

Static libraries are indispensable in creating large applications. Z++ static libraries are also platform independent. A large Z++ project may be composed of specialized static libraries as well as Z++ components.

Z++ extensions to C++ namespace provide an intuitive and effective mechanism for organizing large software. In particular, one can tell what part of a library is exposed in which part of the main code. Furthermore, the definition and the implementation of items in a namespace can be separated just as it is done for a class.

The whitepaper Namespace (read whitepaper) discusses the Z++ extensions to C++ namespace. Z++ Visual includes examples that illustrate the use of Z++ namespaces.

Collections -

Z++ extends the C++ enumeration in several directions. Collection is a type constructor unique to Z++. It may be thought of as a form of extending enumeration where one can assign an instance of a class as the value of an enumeration literal, rather than an integer.

Just as Z++ enumerations, collections can also derive from previously defined collections. Furthermore, collections introduce the powerful feature of shared methods. Specifically, a set of classes can have a method in common without the use of inheritance mechanism.

Z++ Visual contains example projects illustrating the use of collections. The whitepaper Collections (read whitepaper) provides an overview of this notion.

Autonomous Agents -

An autonomous agent is a live process moving from one destination to another, while maintaining its entire state. A process is a Z++ program as opposed to a single class. This technology is feasible only when the infrastructure supports a distributed operating system, like Z47. Thus, true autonomous agents are unique to Z++.

It is impossible to foresee all the uses of the versatile technology of autonomous agents. Z++ Visual provides several illustrative simple uses.

Z++ and Database -

Z++ language includes extended, object-oriented form of SQL for data manipulation. Z++ statements are essentially the same as their SQL equivalents. However, Z++ statements involve Z++ templates and objects along the side of database entities such as tables and fields. These simple extensions provide the power to interact with multiple databases from different vendors within one single Z++ application.

The whitepaper Database (read whitepaper) provides a simple reading of the Z++ database model, in addition to the illustrative examples included in Z++ Visual.

Graphical User Interface -

Z++ provides a unique and general approach to platform independent GUI. The approach is simple, intuitive and object-oriented. The notion of frame, as an equivalent of class for GUI, is unique to Z++. The instinct method of a frame is a more general, object-oriented form of what is usually called the input-wait-loop.

The whitepaper OO-GUI (read whitepaper) presents an illustration of the Z++ model for GUI. Z++ Visual includes a variety of illustrative examples.