Web Object Oriented Programming
Although we don’t communicate too much externally about it, we have research activities related to web technologies at SAP Research France. More particularly, we’re investigating where the REST concept could take us, that is, beyond the enablement of RESTFul Services. We look at a mix between REST and WSDL to enable Object Oriented Programing on the web. This is what we call WebOO for Web Object Orientation.
Our activities around Object Oriented Programming through web technologies came first because of our work around REST, and the discovery of a (miraculous) vision:
While originally focusing on REST as a simple way to access to resources, we realised that when discussing with SOA-aholics, it was a bad idea to position REST as a competitor to webservices. The message should actually be different. The message should be bolder, and present REST as complementary to webservices. Services represent operations, whereas REST focus on resources. Operations… resources… well this looks like some of the building blocks that could enable object oriented programming using web technologies! That’s it! This is the “future internet” that people are looking for. Making the assumption that webservices will soon become fully functional (that is, truly interoperable between different platforms, as it’s theoratically the case since the beginning 😛 ), developers and “standardisers” will be looking for more. And what more than to look for object orientation, once you have standardised your operations.
After some discussions with colleagues in Sophia Antipolis (where the best researchers of the known world are located) and elsewhere, here are a bunch of questions/answers that could allow you to better understand our vision:
- 1. Where is the novelty? -> There is no “research” novelty. Novelty is in the standards proposed to enable OO. Plenty of frameworks have already been developed for enabling distributed OO (J2EE-EJBs, CORBA), but although working fine, none of them really took off as a recognised standard. There was no research neither for webservices, as the focus is on standardisation.
- 2. Don’t we already have everything with webservices? -> this is exactly the same discussion between structured and OO-programming languages generally speaking, not necessarily distributed. People started with structured (hence operations/methods/services driven) programming languages, but decided to move on to another level, driven by easier representation of the real world, through objects. You can always implement an application with the exact same behaviour using either a structured or an OO programming language. But the way you model the problems, and the reusability of the code, is greater in OO programming than in structured programming.
- 3. Why do you think people will want this OO stuff? -> just look at the history of programming languages. For “local” (as opposed to distributed) programming languages, people progressivly migrated from structured to OO programming. We simply do the assumption that the exact same migration will take place on the web. Our vision is that similarly to webservices, the development community will look for reknowned webstandards for a web OO, rather than for proprietary recommandations.
- 4. Aren’t webservices standards sufficient already for enabling OO? -> After investigation, the new WSDL 2.0 enables REST, but only as a transport mechanism to keep on doing services. It’s not about describing and exposing objects. Focus of webservices is on operations, and although it allows to describe data models, those are conceptually centered around the signatures of the operations. We want to extend wsdl2.0 so that it can describe an object, i.e. its attributes, there protection level, and its operations. Obviously for the latter we can use wsdl directly, but the attributes and protection parts require modifications. The challenge is more a question of perspective than of possibilities. Webservices put the emphasis on services description, which need descriptions of their signature, and OO focuses on objects, which need descriptions of theirs services/operations.
I hope this introduction was inspiring to you. We’ve worked on much more since these ideas came out, especially we have been working on a web2.0 collaborative model sharing site, a WODL language allowing to describe the objects, and a design time/runtime framework to test all this. And because we love public security, we applied these concepts to a use case related to criminal investigations. Let us know if you like the concepts!