Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Next »

Groovy tries to be as natural as possible for Java developers. We've tried to follow the principle of least surprise when designing Groovy, particularly for developers learning Groovy who've come from a Java background.

Here we list all the major differences between Java and Groovy.

h2 Common gotchas

Here we list the common things you might trip over if you're a Java developer starting to use Groovy

  • == means equals on all types and === means identity compare. In java there's a wierd part of the syntax where == means equality for primitive types and == means identity for objects. Since we're using autoboxing this would be very confusing for Java developers (since x == 5 would be mostly false if x was 5 (smile). So for simplicity == means equals() in Groovy
  • if you want to use the neat syntax sugar for passing closures into methods or using GroovyMarkup - be aware that the { must be on the same line.

For example the following is valid groovy

However if you want to specify the { on a separate line then you must use the more verbose parentheses version like this

i.e. you cannot do this

Error rendering macro 'code': Invalid value specified for parameter 'lang'
[1, 2, 3].each
{ 
	println it 
}

As the above is interpreted as the use of the 'each' property and then the creation of a closure; which is not passed into an each() method call.

h2 Things to be aware of

  • semicolon is optional. Use then if you like (though you must use them to put several statements on one line).
  • the return keyword is optional
  • you can use the _this_ keyword inside static methods (which refers to this class)
  • things are public by default. There's no need to use the public modifier on classes or methods though you can if you like
  • protected in Groovy is the equivalent of both package-protected and protected in Java. i.e. you can have friends in the same package - or derived classes can also see protected members.

h2 New features added to Groovy not available in Java

  • Error rendering macro 'link' : Link needs a name and a URL as arguments.
  • native
    Error rendering macro 'link' : Link needs a name and a URL as arguments.
    for lists and maps
  • Error rendering macro 'link' : Link needs a name and a URL as arguments.
    and GPath support
  • native support for
    Error rendering macro 'link' : Link needs a name and a URL as arguments.
  • polymorphic
    Error rendering macro 'link' : Link needs a name and a URL as arguments.
    and powerful
    Error rendering macro 'link' : Link needs a name and a URL as arguments.
  • dynamic and static typing is supported - so you can omit the type declarations on methods, fields and variables
  • you cam embed expressions inside
    Error rendering macro 'link' : Link needs a name and a URL as arguments.
  • lots of new helper methods added to the
    Error rendering macro 'link' : Link needs a name and a URL as arguments.
  • simpler syntax for writing
    Error rendering macro 'link' : Link needs a name and a URL as arguments.
    for both properties and adding event listeners
  • No labels