New in version 3: Support for creating objects dynamically from source code, see Class to Object Demo (movie).
Version 3.2 brings many small improvements related to the client-server setup.
Obba provides a bridge between spreadsheets and Java classes. With Obba, you can use spreadsheets as GUIs (Graphical User Interfaces) for your Java libraries. Compatible with Excel/Windows, OpenOffice/Win/Mac/Linux, LibreOffice/Win/Mac/Linux, NeoOffice/Mac.
Obba's main features are:
- Stateful access to almost all objects and methods running in a Java virtual machine via a fixed set of spread sheet functions.
- Client/server support: The Java virtual machine providing the add-in may run on the same computer or a remote computer - without any change to the spreadsheet.
- Loading of arbitrary jar or class files at runtime through a spreadsheet function.
- Instantiation of Java objects, storing the object reference under a given object label.
- Invocation of methods on objects referenced by their object handle, storing the handle to the result under a given object label.
- Asynchronous method invocation and tools for synchronization, turning your spreadsheet into a multi-threaded calculation tool.
- Allows arbitrary number of arguments for constructors or methods (avoids the limitation of the number of arguments for Excel worksheet functions).
- Serialization and de-serialization (save Serializable objects to a file, restore them any time later).
- All this through spreadsheet functions, without any additional line of code (no VBA needed, no additional Java code needed).
- For Spreadsheet Users: Creating powerful spreadsheet calculations using external libraries, running calculations in Java.
- For Java Developers: Testing, debugging and analyzing Java libraries with spreadsheets. Setting up unit test in spreadsheets. Using spreadsheets as GUI to your object while debugging.
- Run Obba server (and its JVM) on one machine, while the spreadsheet (with Obba add-in) runs on another machine.
- Obba allows to create an object from Java source code (dynamically compile source to java.lang.Class, re-load the class definition and instantiate an object from it), see Class to Object Demo (movie).