It's interesting to watch how the recent trend to mobile and browser applications is changing the traditional understanding of client-server separation and how the traditional territories of some technologies are blurring.
Two recent examples in the field of persistence technologies illustrate this blurring of boundaries quite well:
With the Rack::CoreData library you define a client-server interface (REST API) and server backend with a OSX/iOS CoreData Model.
While CoreData has its root in the enterprise space, today it is primarily a client-side technology. I guess that in its current form it was never intended for anything else than persistence on client side and the only reason for it's transition to the server side is its wide usage due to the success of iOS.
- JBoss Errai
JBoss Errai represents the opposite trend compared to Rack::CoreData: It takes JPA into the browser! JPA is traditionally a server-side (or at least server-interfacing) technology. I am pretty sure that it was not intended as a browser technology. But with the rise of HTML5 and browser-side persistence there is the pressure to take that programming model to the web client.
It seems that the triumph of mobile apps and rich internet applications has quite a disruptive effect on the traditional server-side technologies and frameworks.
I am wondering where this will lead? Both of the above examples do not feel quite right in my opinion… but hey, maybe we will get JPA support in HTML6 or Oracle will include direct CoreData support in the future ...