Seco is a software scripting, prototyping environment for the Java platform. Seco 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. Seco draws inspiration from the
experience accumulated from both those categories and sits somewhere in between them.
- An infinite zoomable 2D canvas is at the basis of the Seco user interface.
It allows you to arrange components any way you wish, place them in nested
containers (themselves zoomable) and navigate what amounts to a two dimensional
map of components.
- Mathematica inspired scripting notebooks form the basic scripting
shell UI. This is a very friendly approach to scripting, much more convenient
than the conventional input-output shell.
- JSR 223 compliant: scripting is supported for any dynamic language endowed
with a JSR 223 binding.
- Prebundled languages: it is possible to add support for any JVM based language
using the Seco API. We've already implemented support for the languages shown above.
The main build only includes BeanShell,
in order to reduce the size of the download. The others may be downloaded and installed
separately from http://code.google.com/p/seco/downloads/list. All languages supported
are syntax highlighted, and many offer code completion capabilities as well.
- 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 Seco
and shared amongst the currently installed scripting languages.
HTML editing support within scripting notebooks allows you to interleave
documentation/exposition, scripts and their outputs, including interactive UI
components, in a single narrative flow.
- Use of HyperGraphDB to save the current environment state.
A HyperGraphDB instance is
created as a permanent storage for the environment and much of the runtime state is automatically
persisted in the form of hypergraph atoms. This instance is naturally accessible from
the scripts and can be used as a backing storage.
Real-time collaboration is available through chat system where HyperGraphDB atoms
can be communicated between peers, including scripting notebooks, individual scripting
cells and UI components.
We are hoping to grow Seco into a full-blown, "next generation", collaborative
software development tool with a distributed peer-to-peer backbone based on
HyperGraphDB. Nearly all "live systems", where the compile time vs. runtime distinction
is eliminated, are based on a single language running on a specialized VM. The
constraints imposed by the JVM make it hard (and perhaps impossible) to implement
a truly "live system", but we chose to focus on immediate, practical utility as well.
And the Java ecosystem has that. 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.
A detailed exposition of the long term vision can be read in the Rapid Software
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.