03 July, 2008
 
 

 

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.