Water Programming Author:Mike Plusch, Christopher Fry Water is a new XML-Native programming language that allows you to program in XML. It is an open language designed to simplify the creation of new Web services and programs. Water adheres to a "Learn Once, Use Everywhere" philosophy where a single language unifies data, logic, and presentation. An interpreter is available for most platforms. ... more »Water uses XML to describe data, present data, write code. Water extends XML to include programming logic so it is easy to build web services and applications with XML. Water is a superset of XML and is backward compatible with XML 1.0. In other languages, XML is manipulated through an application programming interface (API). The object system for XML is completely different from the object system of leading programming languages. This difference adds complexity or may cause confusion when building XML-based software with other programming languages. Water eliminates this mismatch because Water's object system is the XML object system. Why Do We Need Another Language? XML is being used in many different ways: data representation, function calling, data storage, etc. It is used on client-side, server-side and legacy systems. XML parsers are widely available for most programming languages so why do we need a new language to use with XML? Before we answer this question, let us consider the following question. When programmers code in Java, do they think about the Java parser? They usually do not because it is built into the language and is transparent to the programmer. Most importantly, the Java parser does not have to be called explicitly. The compiler calls the parser for the user. The creators of Water think that XML should be able to be used in the same way. However, this is not possible unless there is an XML-native programming language. The authors realized that if XML is used to represent general-purpose data, then a general-purpose language is required to manipulate this data. Water fills this role and is designed for use with XML. We say that Water is XML-native because Water is a superset of XML, and it is backward compatible with XML version 1.0. Water is designed to simplify building Web services and applications. Building an HTML page is easy, but building a secure, distributed applications is orders of magnitude more difficult. To build a basic web service on a J2EE or .NET platform, often a dozen or more languages and technologies such as XML, HTML, SQL, XSLT, JSP, JavaServlets, JavaBeans, JavaScript, JavaDoc, CSS and shell scripts are required. Most of these languages or technologies are very different from one another. Each one has a different syntax, a different object model, a different way to represent data, and a different way to debug programs. When an application is being built, these differences add significant complexity to the effort. As a result, the development process is slowed and it is more difficult than it needs to be. Complexity is the biggest problem facing software developers today; it increases cost, lowers performance, affects security, and reduces reliability. Water is an XML-native language designed to reduce dramatically the complexity of building Web services and applications. Water can be used in place of all the languages and technologies discussed above. Water is a single unified tool that embodies the "Learn once, Use everywhere" philosophy.« less