Klein Jar

Motivation

The Java ecosystem contains a large number of interesting and/or useful frameworks and tools. Although some of these can be accessed via network (e.g., HTTP) interfaces, many cannot. Even when network access is possible, Java-based APIs may offer superior capabilities.

Neo4j is a fairly typical example. The Transactional Cypher HTTP endpoint can return JSON-encoded graphs in response to Cypher-based queries. However, to go beyond this capability, one must write an "unmanaged extension" in Java or some other JVM-supported language.

There are also interesting libraries in other JVM-supported languages (e.g., Clojure, Groovy, JRuby, Jython, Scala). It would be nice to have a convenient way to experiment with these languages, assessing interoperability, etc.

Proposal

My (imagined) "Klein Jar" is a JAR file, supporting a variety of language implementations and tools. For convenience, it uses Leiningen, a Clojure-based build automation tool. Elixir users may wish to access this through Mix.

Approach

  • Combine JAR files for Clojure, Groovy, JRuby, etc.
  • Fold in Erjang, Elixir, and Neo4j.

  • Test for functionality and interoperability.
  • Create HowTo documentation, packaging, etc.
  • Publish on GitHub; ask for comments and help.

Proposed Content

Languages

  • Erjang (BEAM on the JVM)
    • Elixir, a modernized Erlang variant
    • Erlang, a concurrency-oriented language

  • Jython (a Python implementation)

Packages

  • Jena (a semantic web framework)

  • Ptolemy (a graph-based modeling framework)

To be continued...


This wiki page is maintained by Rich Morin, an independent consultant specializing in software design, development, and documentation. Please feel free to email comments, inquiries, suggestions, etc!

Topic revision: r3 - 28 Apr 2015, RichMorin
This site is powered by Foswiki Copyright © by the contributing authors. All material on this wiki is the property of the contributing authors.
Foswiki version v2.1.6, Release Foswiki-2.1.6, Plugin API version 2.4
Ideas, requests, problems regarding CFCL Wiki? Send us email