The B++ Library is a thread-safe C++/Java library that attempts to be as portable and reusable as possible. Hence, it provides a set of software components based on an object-oriented design that are independent of the compiler and the operating system. This library is fully documented, the binary code and the source code are free of charge to use, access or modify under .
This library is developed mainly for operations research and simulation purposes, but is built upon basic portable software components (types conversion, files management, threads, serialization...), and upon assistance tools for the development such as debugging controls and reports (tracing of the executed methods, control of the memory allocation and deallocation, control of the files opening and closing) and a semi-automatic generation of the documentation (the section named is its result).
More recently, the library integrates a mechanism we call that allows an easy use of Java classes directly in C++. It is based on the Java Native Interface (JNI). With each Java class is associated a C++ class that maps its attributes and methods, and has the equivalent inheritance. The purpose of such a facility is to provide a fully portable graphic environment for C++ applications. The only requirement is for the system to have a Java Virtual Machine (JVM).
These points make the B++ Library a useful environment for the development of any C++ program. Moreover, its integration into an existing C++ program is quite easy (even if the compilation step is a bit tricky due to both C++ and Java code interacting in the library), which allows anybody to develop and distribute software components that are portable and reusable in any C++ environment.
Here are some Web sites where you can find an appropriate C++ compiler.
A Java compiler with JNI is also required for the parts written in Java. You can get one in the site of Sun Microsystems.
Download here the different parts of the library. Two versions exist because operating systems have not the same ASCII end of line sequence. The ASCII 10 version is for Unix operating systems. The ASCII 13-10 version is for Microsoft operating systems. For the other operating systems, we do not know the ASCII end of line sequence, so try both versions. One of them should work.
Use software like WinZip (for MS-Windows) or TAR and GZIP (for Unix) to extract these three archives. Start by extracting the sources archive that will create a folder named
Documentation about the various algorithms for graphs implemented in this library can be found in the sources listed below, some are in English, other are in French.
The following documentation attempts to explain how to compile this library and how to use it for the development of a C++ program. Each module of this library is detailed. Nevertheless, if you have questions, problems to compile or use the library, comments or bugs to report, you can send an e-mail to