- is non-intrusive: You do not need to change existing code.
- easy to configure: You can use Spring for configuration.
- has very few dependencies: Basically just XStream and logging.
- easy to integrate into your J2EE or stand alone applications: You should easily be able to slip SemiSpace into your standard J2EE stack.
- supports generics for ease of use.
- can be distributed: Terracotta can be used for distributing the space and contents therein.
- has a Terracotta Integration Module (TIM) included.
- can be distributed (or not) both from console applications and J2EE application servers: Geronimo, Jetty, or some other J2EE- or webapp-server, can easily contain SemiSpace.
- does not need Jini installed ... as SemiSpace does not use Jini.
- uses getters in addition to public fields: In difference to the JavaSpaces specification.
- does not use the Entry mix-in interface: Allows any XStream-able class to be put into the space.
- is Open Source and licensed under Apache 2
- exposes statistics over JMX (if you use the webapp module).
- can be configured to use a JDBC back end for long time persistence.
- supplies a simple actor pattern framework.
- has a Maven generated manual.
SemiSpace is a light weight open source interpretation of Tuple Space / Object Space based on ideas from JavaSpaces. The library can be included as single, stand alone, space in a Java SE 1.5.x (or greater) application, or clustered with Terracotta. The source and binaries can be found in the Maven repository, and can be included in your project with a simple Maven dependency. SemiSpace
- Posted by: Erlend Nossum
- Posted on: June 30 2009 09:30 EDT
- Re: SemiSpace: an open source JavaSpaces inspired tuple space by Nati Shalom on June 30 2009 11:41 EDT
- Few questions by Nikita Ivanov on June 30 2009 12:40 EDT
- SemiSpace, ActiveSpace .. by Cameron Purdy on June 30 2009 14:47 EDT
Congrats.. Nice to see that the JavaSpaces is becoming more popular these days. There were few interesting posts on JavaSpaces recently: - Lord Of The Cloud A very interesting presentation by Prof David Gelernter from Yale university. Excellent description of the model for those who are new to the concept. - JavaSpaces and the Next Big Thing Interesting post by Jason Lenhart that talks on JavaSpaces as an essential component in the next generation application architecture.. Is that a trend? I believe that its worth noting that GigaSpaces provides a free community edition. The free community edition provide the same level of hub/spoke clustering that you would get with free Terracotta version (BTW We don't use the term cluster for hub/spoke topology). Obviously the community edition also comes with all the other goodies that you can get with the GigaSpaces distribution such as monitoring and full scale-out application platform etc... Anyway i like the direction that SemiSpace took i.e. POJO driven API etc. which is along the lines of the direction that we took two years ago. Perhaps its time to collaborate on JavaSpaces09 along those lines. Best of luck Nati S GigaSpaces
Congrats guys. So, what kind of locking and/or transactions you support in a distributed scenario? How is this different from several already available distributed hash maps? Thanks, Nikita Ivanov. GridGain - Open Cloud Platform
How is this different from several already available distributed hash maps?Nikita - tuple spaces tend to be used for coordination (e.g. master/worker), while key/value stores tend to be used for more data-centric purposes, i.e. a key/value store tends to be used by an application as a live repository of data. While it's possible to glue either on top of the other, they each have their own fundamental purpose that they are best at serving. Peace, Cameron Purdy | Oracle Coherence http://coherence.oracle.com/
Hm... That's an interesting take... My question though was more of the general one: how is this different from Terracotta itself, Hazelcast, etc. I mean is the only difference a JavaSpace-like API? Thanks! Nikita Ivanov GridGain - Open Cloud Platform
Hm... That's an interesting take... My question though was more of the general one: how is this different from Terracotta itself, Hazelcast, etc. I mean is the only difference a JavaSpace-like API?In a word: Yes. SemiSpace is an implementation which uses Terracotta for distribution. An analogy is the way a webapp uses a webapp-container. I suppose it would be possible to support other distribution technologies as well. An implementation which uses SemiSpace has the advantage that the effort it takes to distribute it is low. Thanks, Erlend Nossum
What I understand is, basically its a layer over terracotta !? a project which internally use terracotta for communication and high availability of messages but exposes JavaSpaces API. Has anyone thought of exposing the same interface 'JavaSpaces' and use JGroups underneath for communication ? just an idea for new project :) anyways, our java community is good @ reinventing the wheel and explaining how their "wheel" is better than the others +1 for thinking along those lines. -Karephul
Interesting concept: tuple spaces without the baggage. Here's the seminal interface for Semispace. It reminds me a little of ActiveSpace by James Strachan. Peace, Cameron Purdy | Oracle Coherence http://coherence.oracle.com/
Interesting concept: tuple spaces without the baggage. Here's the seminal interface for Semispace. It reminds me a little of ActiveSpace by James Strachan.According to the documentation of the main interface of Active Space, it only supports one kind of query on the space. SemiSpace supports ad hoc queries, and a mix of different objects in the space.