OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

 


 

   The Free World vs Microsoft Inc: A Closer Look At Groovy

[ Lists Home | Date Index | Thread Index ]

Hi,

  allow my to follow up with another commentary on
XAML - Microsoft's latest "innvention" unveiled at the
Longhorn Love-In last week in Los Angeles - that lets
you mix markup languages with classic programming
languages and declares both first-class citizen made
for each other.
  
  To see how "revolutionary" Microsoft's latest XAML
thingy is may I introduce Groovy a new dynamic
scripting language for the Java runtime cooked up by
James Strachan (of Geronimo, Jelly, dom4j and more
fame) and Bob McWhirter (of Jaxen, dom4j, codehaus and
more fame) that lets you do more with less and that
also tries to fix up XML using the headline
"TreeBasedSyntax".

   James writes on the Groovy TreeBasedSyntax Wiki
page:

We have native syntax support for List and Maps. We
should also support arbitrary nested tree structures.
e.g. DOMish APIs or Ant tasks or Jelly tags or Swing
widgets or whatever. Each may have their own
particular factory mechanism to create the tree of
objects - however they can share the same markup
syntax to define them - in a concise alternative to
XML.

In general we'd like to support a few kinds of
markup...

* generic tree structures (making groovy.lang.Node a
first class syntax like Map and List are)
* custom tree structures (beans, DOMs, Swing, Ant,
Jelly etc)
* metadata (JDK 1.5 style) 

  Now James is not all talk but also wipes up some
examples that already work with the latest Groovy CVS
snapshot:

f = frame(size:[300,300], text:'My Window') {
    label(bounds:[10,10,290,30], text:'Save changes')
    panel(bounds:[10,40,290,290]) {
        button(text:'OK', action:{ save(); close() })
        button(text:'Cancel', action:{ close() })
    }
}

 James also shows off how you can mix scripting with
markup:

f = frame(text: calculateFieldName(foo, 1234))

    // lets iterate through some map
    map = [1:"hello", 2:"there"]

    for e in map {
      label(name:e.value)
      textfield(name:e.value)
    }
}
    
  Full story @
http://wiki.codehaus.org/groovy/TreeBasedSyntax

  Any comments?

  - Gerald

PS: For more info about Groovy, check out the Java
Republic stories titled "Groovy - Jazzing Up Plain Old
Java" online @
http://viva.sourceforge.net/republic/2003/09/groovy_jazzing_up_plain_old_java.html
and "Groovy: Making Java More Funky" online @ http://viva.sourceforge.net/republic/2003/10/groovy_making_java_more_funky.html

______________________________________________________________________ 
Post your free ad now! http://personals.yahoo.ca




 

News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 2001 XML.org. This site is hosted by OASIS