Buju is the BBeans Universal Java Utility. Buju provides
your application full access to Sun's
Java language and platform, as well as software written in Java, even if your
application is not written in Java. It is open source, and free to use and distribute,
in accordance with the GNU LGP License.
Buju allows applications which can't normally instantiate or use Java objects
to do just that. All you need is a socket connection (by default an SSL socket)
and access to the host running the Buju server. No Java is required on
the client side. Think of it as a local web service for doing anything you want
Buju is a server which provides remote access via TCP/IP by your application
to the open source Java interpreter BeanShell.
It has a number of security layers and administrative services that wrap around
BeanShell. And many of its features are implemented in BeanShell script, which
is loosely-typed Java code (or optionally, strict Java). That means you can easily
customize and extend it without having to re-compile classes.
Multi-threaded, multi-user server.
Multiple layers of security.
Multiple private and shared Java interpreters (think of them as namespaces).
Interpreter locking, for atomic operations which span multiple client/server
Namespace 'push' and 'pop' within an interpreter.
Most administrative functions implemented in interpreted Java script for ease
Freely distributable (GNU LGPL).
Buju has been used to access Java PDF, RTF and HTML libraries (iText),
MS Excel and Word libraries (POI),
charting libraries (JFreeChart),
e-mail libraries (Java's activation and mail libraries), embedded web servers,
web services of all kinds, as well as just standard Java classes such as
Why, Why, Why:
Why a Java service?
Because, believe it or not, there is still plenty of code written in languages
that can't make use of the extensive world of Java libraries and applications
without some sort of bridging mechanism. By making BeanShell available via secure
TCP/IP socket connection, Buju opens up the world of Java to those other
programming environments in the simplest way possible.
Other alternatives to accessing Java from non-Java applications are:
- Using BeanShell's built-in httpd-based server, which was primarily meant to
provide interactive access to BeanShell via a web browser, but probably could
be modified to add more security and a simple application interface.
- Creating a secure web service wrapper (in Java, I would imagine) to specific
Java application(s) (even BeanShell), and then creating a web service client to
those services in your own applications.
It is free. But you should feel motivated to send
money if this product:
- Saves you time.
- Helps you sell your own product.
- Impresses you enough to want to donate.
No, I'm serious. Part of your donation goes to the BeanShell
project and the Java
Service Wrapper project, both of which are a part of the Buju distribution.
The rest goes to defray the time and cost of bringing Buju to you.
But if you are currently monetarily challenged, you can
still contribute to the further development of Buju. Enhancements, documentation,
examples, feedback, success stories, near-success stories, bug reports, anything
to make Buju better -- its all welcome.
Why open source?
For many good reasons, but here are a few:
- Two major components in Buju -- BeanShell and Java Service Wrapper
-- are already open source.
- We want to promote Java activity in areas that have been traditionally shut
- The product will develop more rapidly the more it is used and the more users
send in their improvements and suggestions.