How do you respond to criticism that using XML to express business logic is a 'verbose' approach?
XML is verbose, and that is why we created ConciseXML. ConciseXML is a new open syntax that is compatible with XML but is as concise as Java for code and CSV for data. Instead of hiding XML through wizards and other tools, we made it easy for developers to work directly with a concise form of XML. The Water language is based on XML syntax. Don't most people assume that XML is limited to storing and transporting data?
XML originated in the document-centric SGML world and is not well suited for data-centric applications. We have removed the document-centric constraints of XML to simplify its use for data as well as logic. Many companies have struggled trying to integrate Web services and XML with object-oriented programming. One important feature of a pure Web services platform such as [Clear Method's] Steam is that XML is used for both the external interfaces as well as internal processing. The use of a single, common syntax for data and logic is a big simplification. What's the incentive for developers to learn to use Water when there are so many other object-oriented languages out there, such as Java, C++ and C#?
The truth is that both Java and .NET require the use of a whole bunch of additional languages. For example, JavaDoc and Java Server Pages are separate languages, each with a different syntax. Water can be learned real quickly because it supports simple and uniform object-oriented concepts and builds on the programmer's familiarity with XML syntax. Water supports the notion of 'learn once, use everywhere,' so developers can focus on their task without dealing with the complexity of multiple special-purpose languages. Many people have been looking for a way to simplify Web development. Water provides that simplification.
It is important to point out that Java, C++ and C# are only 'half object-oriented' languages. They contain 'low level' types that don't behave as the other objects in the system, so a developer is forced to learn at least two different 'data systems' in one tangled language. But this is just the tip of the iceberg of unnecessary complexities in Java, C++ and C#. Is XML really suited to being the basis for a procedural programming language?
One important benefit of XML is that millions of programmers are already pretty familiar with it. Remember, though, that XML is just a syntax, not a language. The Water language supports any number of programming models, including procedural, declarative, aspect-oriented, object-oriented and functional programming. XML provides the basis for an especially uniform syntax that makes it much easier for a developer to understand the language and also much easier to write great tools for the language. Water supports the view that code is data. That view is very powerful and has been around for over 40 years. Could you give me a brief example of a customer who is using the Water language and the Steam platform to develop a Web service?
One example would be Pratt & Whitney aircraft, where Dave Loda's applied technologies group is developing a mobile, distributed computing architecture for the company's products to improve both supply chain efficiencies and customer support. In one instance, the group is embedding the Steam platform in a portable jet engine maintenance station. Dave found that the platform allows them to consolidate what would normally have been multiple code-generating layers of applications into a single software systems architecture. Why did Clear Methods design Water so that it requires your proprietary runtime environment (Steam Engine)? Wouldn't Water have had more appeal if it were compatible with the .NET or J2EE platforms?
Water is an open language that supports open standards such as HTML, XML, HTTP, URIs. Water runs on any machine with a Java VM. This makes it easy to integrate with either .NET or J2EE. Other companies can create compatible Water runtime environments. Free versions of the runtime environment and development environment are available from Clear Methods. How much code writing is involved in Water's application-development process, as opposed to, say, a Java-based approach?
The best way to answer this is to show some Water code. Here is a Web service that serves out a stock price. With either of the two leading platforms, this example would take several pages and would require the use of several different tools and languages. With Water, no intermediate code is generated -- the XML is directly executed.
Here is a description of what each step does.
- Define a Web service
- Create a server for that service
- Create a local proxy to the remote service
- Call the remote service
- Create a test case that validates the result
- Document the application
<defmethod stock_quote symbol> <if> symbol.<is "IBM"/> 50.5 </if> </defmethod> <server root_object=stock_quote/> <set stock_quote_remote=<web "http://localhost"/> /> <stock_quote_remote symbol="IBM"/> <test <web "http://localhost?symbol=ibm"/>.result 50.5 /> stock_quote.<doc> Given a stock symbol, return a price. </doc>
FOR MORE INFORMATION:
Expert advice: Thoughts on the Water language
Best Web Links: XML