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
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.