White paper
UBF(A) spec
UBF(B) spec
UBF(C) spec

Quick start
Erlang servers
Java clients

Message Box
File server



Pre-release. Be warned. Things change frequently


UBF Home

UBF is a language for transporting and describing complex data structures across a network. It has three components:

  • UBF(A) is a data transport format, roughly equivalent to well-formed XML.
  • UBF(B) is a programming langauge for describing types in UBF(A) and protocols between clients and servers. UBF(B) is roughly equivalent to to Verified XML, XML-schemas, SOAP and WDSL.
  • UBF(C) is a meta-level protocol between used between UBF servers.

While the XML series of languages had the goal of having a human readable format the UBF languages take the opposite view and provide a "machine friendly" format.

UBF is designed to be easy to implement. As a proof of concept - UBF drivers For Erlang, Oz, Java and TCL can be found in the download area. Implementors are welcome to add new languages.

UBF is designed to be "language neutral" - UBF(A) defines a language neutral binary format for transporting data across a network. UBF(B) is a type system for describing client/server interactions which use UBF(A).

Programming by Contract

Central to UBF is the idea of a "contract" which regulates the set of legal conversations that can take place between a client and a server.

A software component (the contract checker) is place between a client and server which checks that all interactions between thew client and server are legal.

The digram shows a Java client talking to a C++ server.