A friend suggested the other day that web-services and SOA are a retro from Object-Oriented development back to procedural/functional development. He said that distributed object-oriented programming like .NET Remoting and Java RMI have failed because object oriented programming is not the best way to develop distributed systems.
I do not agree, I see SOA as a better way to achieve distributed object-oriented development.
It is true, you do not get polymorphism or control over the life-cycle of remote objects in web-services, but as stated in Wikipedia about Object Oriented Programming - “…In OOP, each object is capable of receiving messages, processing data, and sending messages to other objects. Each object can be viewed as an independent little machine with a distinct role or responsibility…” this sounds to me very much like the definition of web-services and SOA.
Doesn’t it?
When I have recently joined Microsoft, I was introduced to the other employees with a very nice email from my boss. The thing that got me thinking was the title of the email- “Amir Shevat has crossed the lines”, and he wasn’t alone, many of my friends also though that this is a very drastic move…
Initially it does seem peculiar- for the last five years I have been developing open source products in Java, PHP other programming languages, I have written several articles in onJava and JavaWorld and actively participated in JavaOne. But if you read my articles closely, I have been preaching all this time that development should be easier then it is and that J2EE is too complicated and cumbersome.
A major part of good development is choosing the right tool to do the right task and keeping it simple and clean. I have always worked very hard to make all of the products I managed and developed as easy as possible. Microsoft has seemed to grasp the idea of ease-of-use. And developing with .NET is simple and clean, this is something I have been waiting for and not getting from Java for a very long time.
Do not get me wrong, I still believe in open source, I believe that open source and commercial software can coexists and even benefit each other- I plan to drive interoperability efforts and this kind of cooperation in the future.
So my conclusion is this: Development is not religion, you can easily change from Java to .NET if you find it is easier to develop with (as I did) and there is no crossing the lines or lightning form the sky that hit you if you do so. I have not crossed the lines; I just found an alternative.