|
|
Scriba is a software prototyping environment for the Java platform. The current UI
is based on the notebook concept from the Mathematica system and it supports
scripting with any dynamic language endowed with a JSR 223 binding. Special
support is implemented for BeanShell
(with code completion!).
Scriba can be used as a shell to the Java platform using your favorite scripting
language. Common uses are experimentation with a new library, prototyping of
pretty much any type of functionality, debugging existing code, writing test
scripts etc. Today, many scripting languages, old and new, have been implemented
for Java. This proliferation of language implementations and the growing interest
towards dynamically typed languages calls for a corresponding programming tool.
Traditional programming environments fall in two broad categories: (1) scripting
shells / interactive environments where a programmer types in expressions and
gets back responses and (2) IDEs with the big machinery for managing large projects,
and the classic compile-run-debug cycle. Scriba draws inspiration from the
experience accumulated from both those categories and sits somewhere in between them.
Get It
You can be obtain Scriba from the Scriba
download page or in source code form from the following URL:
https://svn.kobrix.com/scriba
Use your favorite Subversion client to access it. Let us know if you are using it!
Support
Scriba support, including general questions, bug reports etc. is provided through
the
Scriba Google Group.
Key Facts
- Free and open-source, and moreover you are welcome to contribute.
Development was initiated and remains hosted at Kobrix, however there are no
commercial ambitions tied to this project. We accept donnations, though (
more on this).
- Standalone Java Program that you can download
and play with.
- Define evaluation contexts each having a separate class path and
associate a notebook with an evaluation context. This is similar to a "project"
in a standard IDE, except that the purpose here is interactive evaluation instead
of compilation and then execution. It is also similar to a binding environment
in conventional dynamic shells, except that bindings are managed by Scriba
and shared amongst the currently installed scripting languages. While this feature
may seem like "nothing special", it presents the opportunity to practice a truly
multi-paradigm style of programming with each paradigm represented by a separate
language.
- Syntax Highlighting for popular scripting languages.
- Code completion for scripting language (currently only BeanShell) using
runtime variable binding in addition to static type information.
- Use of HyperGraphDB to save the current environment state. A HyperGraphDB instance is
installed as a permanent storage for the environment. This instance is naturally accessible from
the scripts and can be used to persist prototyping objects and current evaluation state, making
Scriba into a "live system" similar to a SmallTalk environment.
Immediate Goals
The short goals of this projects revolve around making it a tool of choice for
learning, experimentation, prototyping, testing and debugging for the Java platform.
More concretely, the following features are planned for next releases:
- Management of cells in HyperGraphDB - currently scripting notebooks
are saved as separate files in XML. A simple step forward is to save them
as HyperGraph atoms and share them between notebooks.
- Support for Swing in HyperGraphDB - HyperGraph transparently handles
basic Java objects that either follow idiomatic Java or implement java.io.Serializable.
An important extension towards our goal of a live system is to support
Swing components. This will be achieved simply by implementing a few HyperGraphDB
types.
- Flexible and extensible cell types - currently, we have input, output,
UI component, error and documentation cells, essentially a predefined set of
behaviors for cells. This needs to be fully generalized with behavior implemented
in a data-driven way.
- HTML support - already implemented to an extent, but we need a more
user-friendly editor. Should be done on top of the above improvements.
- Standard facility for installing plugins into the system. - this
overlaps with a HyperGraphDB subproject. Plugins are sub-graphs of HyperGraph,
but of course a convenient API do deal with them is needed, with versionning etc.
Long-Term Vision
We are hoping to grow Scriba into a full-blown, "next generation", collaborative
software development tool with a distributed peer-to-peer backbone based on
HyperGraphDB. We share the dream of implementing a live system
and eliminating the compile time vs. runtime distinction with several other
projects, but with the focus on practical, immediate utility as well. We are
hoping that a practical, day-to-day collaboration at a finer level of granularity
than current software practices will lead to an evolutionary computing performed
at a time scale better suited for us programmers and computer users.
YourKit is kindly supporting open source projects with its full-featured Java Profiler.
YourKit, LLC is creator of innovative and intelligent tools for profiling
Java and .NET applications. Take a look at YourKit's leading software products:
YourKit Java Profiler and YourKit .NET Profiler.
|