In some applications a full-fledged bit-mapped graphical user interface is
not feasible or appropriate. For example, you may be using
ruggedized mobile computers that only have an ASCII display; or you may need
to develop an administrative interface for a remote server or firewall, and
you don't have enough bandwidth for X Windows or
the
VNC protocol. In such cases, CHARVA may be your solution.
CHARVA is a Java framework for presenting a "graphical" user interface,
composed of elements such as windows, dialogs, menus, textfields and buttons,
on a traditional character-cell ASCII terminal. It has an API based on
that of "Swing" (a.k.a. the Java Foundation Classes). Programmers familiar
with AWT and Swing will find programming CHARVA straightforward.
User interfaces can be designed on WYSIWYG IDEs such as Borland JBuilder
and then easily converted to CHARVA merely by changing the "import" statements
to import the "charva.awt and "charvax.swing" packages instead of the
standard "java.awt" and "javax.swing" packages.
CHARVA was designed to bring the power and flexibility of Java to applications
on Linux/Unix systems (and has also been ported to Windows). ASCII
terminal-based applications can now benefit from Java features such as
object orientation, multithreading, automatic garbage-collection, and a
vast range of libraries such as:
CHARVA now also has mouse support on terminal-emulators that report mouse
events, such as "xterm" and
"PuTTY"
- socket and HTTP networking using Java 2 Standard Edition
(J2SE)
- SSL and HTTPS encryption using Java Secure Socket Extension
(JSSE)
- asynchronous messaging using Java Message Service
(JMS)
- database access using Java Database Connectivity
(JDBC)
- mail access using
JavaMail
- XML parsing and generation using Xerces
from Apache.org
- and many more....
(click here for a list)
Here are some benefits of CHARVA:
CHARVA is composed of two components:
- A library of Java classes that implement the various "graphical widgets"
- A dynamically-loaded shared library, written in C.
CHARVA is not a "Pure Java" package; the Java classes use the
Java Native
Interface (JNI) to call screen-handling functions provided by the shared
"libTerminal.so" library, which is linked with the
GNU ncurses
library. Porting CHARVA to a different platform involves recompiling the C
source code for the libTerminal.so shared library. GNU ncurses is supported
on dozens of Unix flavors besides Linux; CHARVA should be able to run on
any platform that supports both Java and ncurses.
CHARVA has been ported to the following operating systems and environments:
- HP-UX
- MS-Windows, using the
PDCurses
(Public Domain Curses) library and the
MinGW compiler.
- AIX, using GNU ncurses 5.2 and the gcc compiler.
- Solaris (although some users have reported difficulty in getting
Charva to run reliably on Solaris).
- Mac OS 10.2.
- FreeBSD
- GCJ (the GNU Java Compiler)
- BeOS
(OS-specific Makefiles are provided in the download tarball).
Many developers have used CHARVA in their
applications, and have reported that it is reliable and stable.
|