Friday, January 2, 2009

Are Javaspaces recognized?

After some long discussions with my partner about the JavaSpaces topic I still have no clue why JavaSpaces or at least the Space Based Architecture (SBA) is not adopted by the developers and/or the "architects".

Personally, when it comes only to Java, I think that JavaSpaces could offer a complete stack from the event driven approach to rule engines, with including transactions (local and XA). My question is, am I under/over seeing something or the JavaSpaces and JINI are not being enough marketed by SUN, or the technology is too complicated for us the "developers". For the integration with other technologies or programming languages I for sure do opt for REST or for an ESB.

I see the JavaSpaces as an Object-oriented DataBase and also that some other technologies could almost perfectly fit in, like JMS and maybe even a workflow engine. What is surprising to me is that JavaSpaces are not a new technology and that today when most people are talking about grid or cloud computing, nobody is mentioning JavaSpaces. For sure it is much easier to distribute an existing application with Teracotta than writing a highly scalable application with a good architecture behind.

I also wrote about JAIN SLEE in a previous post and such a "soft real time" technology could also fit in JavaSpaces, at least in my opinion. JavaSpaces seem to be used only in highly scalable environments like Banks need, but what is the difference with Document Management, there we also do need a highly scalable environment.

There is an open source project Blitz and a commercial vendor GigaSpaces providing a community edition, personally I would chose GigaSpaces as it is a company with a big knowledge on the matter and their engine offers a lot of interfaces and features than the JavaSpaces specification describes.

Well, I just wanted to put my thoughts in this post and to make a relation between those kind of possibilities, maybe I am totally wrong but I would like to hear or find a good reason for that.

4 comments:

Shay Hassidim said...

Daniel,
Thank you for this.
There are financial , telecom , datacom , intelligence , logistics , entertainment , education, manufacturing , airlines and software companies using Javaspacea and its GigaSpaces implementation.
See examples: http://www.gigaspaces.com/resources/casestudies

The SBA is widely used and has large community around it. You can see http://www.openspaces.org/display/OS/OpenSpaces.org striving with full of users’ posts , activity and live projects.

There is large amount of users using the XAP community edition for free and many companies around the world joined the start-up program that are also using the product for free. There are also large amount of universities and high education organization using the product for their research…. Yes – for free.

The cloud offering and its special license (pay-as-you-use) that has been introduced lately is a big success and there are many companies joined this program. You can test drive GigaSpaces or deploy your application on the cloud in a matter of a single click.
See:
http://www.gigaspaces.com/cloud
http://www.gigaspaces.com/wiki/display/XAP66/Cloud+Web+Console

You don’t need to be a Jini user or even be familiar with JavaSpaces to build your application on top of GigaSpaces application server. In fact – most of our users are not familiar with Jini nor Javaspaces. Some of them are just plain Spring users or even .Net or C++ developers. Some of them simply accessing their data stored within GigaSpaces JavaSpaces implementation using simple Spring wiring , JMS , JDBC or HahsMap API.

GigaSpaces provides building blocks allowing developers to use ready made components such as event containers, web containers , map-reduce frameworks , mule integration , maven templates and many more that allows developers to use SBA concepts without even changing their application code or the application architecture.

Beyond the obvious benefits such as dramatic performance boost , low latency , high-availability and amazing scalability – you are getting very robust architecture that allows you to maintain the application and enhance it on top of incredible powerful foundation. This are the reasons why so many users choosing to use this technology.

Shay Hassidim
Deputy CTO
GigaSpaces
shay@gigaspaces.com

Daniel Gradecak said...

Hi Shay,

I also would like to thank you for such a nice explanation. With this post I wanted to see if other people do think the same about the technology.

One of the most interesting thing for us is the asynchronous database replication/synchronization that Gigaspaces provides and for sure the scalability it offers.

Shay Hassidim said...

The Mirror Service that its primary usage is obviously persisting the data into your favorite database using your own ORM is a smash hit. Being able to totally de-couple the application behavior and its in-memory transaction execution time from the database response time and the ORM activity involved here is a big plus when designing distributed systems. The database is not part of the critical path of the transaction execution time.

The Mirror service is also supported with the cloud deployment service where you can deploy your application on the cloud and have a dedicated virtual machine to run your database (mySQL) and a Mirror service collocated with the database process (on the same machine) pushing committed transaction done with the in-memory-data-grid into the database. It allows your application to provide the best performance available and persist it in asynchronous manner without worrying about the implication of the high latency involved when the application communicating with the database machine (which could be relatively high with cloud based deployment).

The Mirror service used also to synchronize remote sites via reliable data synchronization channel. We have software based and even hardware based solutions (via partners) that are built on top of this powerful technology allowing users to deploy their applications all over the glob and synchronize these remote sites in efficient , secured , robust and reliable manner.

Shay

Daniel Gradecak said...

Some times ago I was thinking of a possibility to have a Hibernate dialect for Javaspaces or directly for Gigaspaces, is there such an approach?

I do not know if it makes much sense but it would be so easy to migrate an app using Hibernate from a traditional relational database.

After all, as I said in the post I see Javaspaces as an Object oriented "database or store". Hibernate on its side is an ORM and I wonder if the idea could fit.