I recently performed a survey in order to see the status of the XML user interface definition languages currently available as a viable solution for enterprise applications. As there was no single and straight answer, I shall enumerate here what I found, just for the record. I am searching to see what is the most viable option for a Rich Internet Application and I want to see what the options are. For those who are not comfortable with the subject, writing forms in C#, Java or other OO language is not a viable option, XML seems to be a better way (see HTML for the web). How could the same concept be applied to windows based forms is not clear for now, at lease there's no standard.
There is a site called OPEN XUL Alliance which gathers a lot of informations about the available options for an XML based user interface. I do not want to copy those informations, just enumerate the most important (as I considered)
- Mozilla XUL
- Luxor XUL
- Thinlet
- MyXAML
- Xamlon
- XForms
A quick comment for the above, Mozilla will never be supported by MS, Luxor also. Thinlet and other Java-based must implement something close to MS XAML, otherwise the .NET industry (MS speciffic) will not adopt it. MyXAML is supported my Marc Clifton ans is quite nice, but it is .NET based, I don't see an option for cross platform. Xamlon allows you to write XAML without Vista but again no cross platform. This is a nice option but again it is MS oriented, I saw they released a beta version of Xamlon Web which somehow transforms IL bytecode into SWF files and is able to execute an application in a browser. I did not tried it but seeme doable.
XForms is a standard and that's it, nothing more.
You all heard about XAML which will be provided in WinFX but we all have to wait and for many of us it will even impossible to use. It comes into my mind big corporations which take very long to switch systems, which still have Windows 2000 and are happy with it. If you will develop enterprise software, the choice to couple with the XAML offered by MS is not viable. But let's go further...
Other options we have:
- Oracle UIX
- Macromedia Flex
- Microsoft XAML and WPF/E
UIX is bound to ORACLE and that means big bucks, because you have to buy oracle server and all those oracle tools. From the technological point of view it is somehow portable as it is based on HTML and JavaScript so if you have the bucks you might consider working with it.
I saw Macromedia Flex and it seemed to be a nice option. Let's see the goods and bads:
Goods:
- It runs in Flash and we all have the flash plugin, it runs in any browser (compact browsers also ? :) )
- It comes with full 2d/3d graphic support
- It is created by the authors of Flash, some guys who know what they are doing for optimisations, future releases, etc. (this is an bad point for all other creators of XUL in flash)
- It integrates well with Java Serve Side Applications and will also integrate with .NET
- Comes with a standardised scripting language (ActionScript)
Bads:
- Is proprietary
- It requires a server application to generate the SWF files from the XML sources
- Development environment is not very mature, debugging, support, etc. are questionable. (I didn't see the trial)
XAML from Microsoft will not ship very soon and in order to be widely adopted will take 2-3 years, so I don't see it as a solution, maybe use Xamlon for the time beeing and change to XAML only for the clients which allow it.
What I need:
- A standardized XML language which can define a rich user interface (like HTML on the web but richer) which could run on 2-3 platforms (Windows, Linux, Max)
- A good (maybe OO) language for performing simple UI process to be executed on the client (like JavaScript) but more reliable having good comunication skills (WebServices, etc)
Both of them must be open, accessible to everybody.
Why not HTML, because it does not offer the power of windows controls. This is however a problem because most of the people tend to create from an existing OO hierarchy (say WindowsForms) to create a XML version, so it is platform dependent. So we might not see very soon something standard and accepted by all people like HTML was.
Why not JavaScript, because it is not reliable. I worked much with IE from 5.5+ to 6.0 and pushed the limits of Javascript to it's ,limits, HTC components and a lot of tricky stuff. It fails to perform well, crashes the browser, hits 100MB of memory, a pain in the ass when debugging.
A good XML language for describing UI I did not found, but the language for UI processes might be Python. It's an early guess but look at how you call an webservice in python:
server = SOAPProxy('http://services.xmethods.net:80/soap/servlet/rpcrouter', http_proxy=proxy)
server.getTemp(zipcode='94063')
No class generation, no proxy, just call it. All you need is a good text editor which understands WSDL and autocomplete for WSDL. See also IronPython
I'm still searching...