SpringSource is offering on Tuesday upgrades to the Groovy dynamic language and Grails Web application framework with such features as improved performance and OSGi support. The upgrades include Groovy 1.6 and Grails 1.1, which can be downloaded at this Web site.
"Grails is a rapid Web application development framework built on the Groovy language and Groovy itself is a language that has the essence of Ruby and Python and so forth," as well as integration with Java and the Java Virtual Machine, said Graeme Rocher, head of Grails development at SpringSource.
Version 1.6 of Groovy offers better compile-time and runtime performance improvements, abstract syntax tree transformations that support transformation annotations, and support for OSGi. Developers with Groovy can extend the Java platform to match business requirements, SpringSource said. Extension can be done with scripting capabilities supporting domain-specific languages expressing business concepts.
Performance has been improved as much as 100 to 450 percent in some cases, Rocher said. This was done via call site caching, which is a way for dynamic languages to shorten the path to the invocation of a particular method, he said.
"If you can cache the particular method invocation, then you can callow the HotSpot JVM to in-line that into machine code, which improves performance greatly," Rocher said.
AST transformations reduce the number of lines of code needed to express certain patterns and enables further extension of the language. Meta-programming enhancements in version 1.6 streamline code and enable developers to write more expressive business rules. Also, meta-programming supports common enterprise APIs, such as Java 6 scripting APIs and JMX management.
Grails 1.1 offers optimized performance, incremental improvements to components, and easier integration with build systems. The Ant and Maven Java-based build systems are backed. Also, greater potential for modularity is offered through plug-ins. Transitive plug-in resolution in version 1.1 will install plug-ins that are dependent on each other.