在Groovy1.1 beta-1中,最大的亮点是支持Java的Annotation,今后我们在Groovy中可以方便地使用Guice, Hibernate等利用Annotation简化开发的框架了。另外Groovy1.1 beta-1中也支持了Java的静态导入(static import)。
点击下载下面是Release Notes:
Release Notes - groovy - Version 1.1-beta-1 - HTML format
Bug
- [GROOVY-393] - cannot update a write-only property
- [GROOVY-446] - cvs tags are wrong in two files in groovy.ant package
- [GROOVY-554] - a Node created with no value can not have children added to it.
- [GROOVY-571] - Groovy fails to complie against latest Xalan 2.6.0
- [GROOVY-737] - Aliasing problem
- [GROOVY-912] - Setting protected field using named arguments in constructor silently fails
- [GROOVY-929] - Setting private field in Bean constructor fails sliently
- [GROOVY-1048] - MetaClass.setProperty() tries to access protected fields instead of a given setter Method
- [GROOVY-1061] - try..catch can't be in the middle of a method
- [GROOVY-1167] - Object.collect(Collection,Closure) fails to work with Set parameter
- [GROOVY-1173] - When importing a class that's not on the classpath, the import fails silently.
- [GROOVY-1191] - -cp and Caller/Call example
- [GROOVY-1300] - ClassFormatError: Invalid method Code ... thrown when using JOGL
- [GROOVY-1322] - RangeExpression doesn't implement Expression not allowing it to be the target of an assert
- [GROOVY-1383] - DOMBuilder class raises NPE if value is null
- [GROOVY-1476] - Variable arity method problem
- [GROOVY-1492] - Setting property value via GString causes VerifyError
- [GROOVY-1518] - VerifyError
- [GROOVY-1522] - catch block without explicit exception type results in VerifyError
- [GROOVY-1530] - stack overflow error when supplying insufficient number of argments
- [GROOVY-1539] - java.lang.VerifyError
- [GROOVY-1551] - each invocation of run on GroovyScriptEngine don't share same GroovyClassLoader
- [GROOVY-1566] - problems with if statements not returning correctly
- [GROOVY-1598] - Access an element in a Map
- [GROOVY-1602] - Using the groovy task in ant, my tasks run twice
- [GROOVY-1615] - "Class is declared in a dynamic context"
- [GROOVY-1618] - Groovy SQL insertion failing against SQL Server using JTDS
- [GROOVY-1626] - Inconsitent stack height when using super
- [GROOVY-1629] - (null as String) should return null but throws NullPointerException
- [GROOVY-1634] - Can't set the delagate on a curried closure
- [GROOVY-1645] - r4814 fails to build under Java SE 6
- [GROOVY-1651] - Bitwise OR and AND operators with left operand inverted (!) cause VerifyError
- [GROOVY-1655] - Subscript operator semantics on Map different to property operator
- [GROOVY-1657] - XmlNodePrinter fails to print GString attribute values correctly
- [GROOVY-1663] - try-finally block creates a VerifyError when used in methods with return values
- [GROOVY-1664] - Case with Interface
- [GROOVY-1668] - replace not thread safe reference map implementation with thread safe version
- [GROOVY-1670] - toString() on NullObject does not throw a NPE
- [GROOVY-1675] - Outline view throws exception when clicking on import statment
- [GROOVY-1682] - polymorphic static methods
- [GROOVY-1697] - MemoryAwareConcurrentReadMap drops entries which are still live.
- [GROOVY-1703] - error in wiki example
- [GROOVY-1730] - curried closure: getParameterTypes() doesn't work
- [GROOVY-1747] - Compiler doesn't recognize fully qualified class name in method
- [GROOVY-1749] - java.lang.VerifyError with nested closures
- [GROOVY-1760] - Static methods on a extending class are just ignored and hidden by the extended class
- [GROOVY-1761] - NPE when the () after a method name are missing
- [GROOVY-1774] - Problem when using primitive return type inside a try block
- [GROOVY-1777] - Inconsistent stack height error
- [GROOVY-1787] - GroovyClassLoader fails to load a script from a file whose absolute name contains spaces
- [GROOVY-1788] - Can't execute Thread.setDefaultUncaughtExceptionHandler
- [GROOVY-1789] - problem with packages.
- [GROOVY-1790]
- Calling back into java base class method inside an if statement
causes java.lang.VerifyError: Inconsistent stack height 1 != 0
- [GROOVY-1792] - Non writeable properties witreable
- [GROOVY-1799] - this() does not work
- [GROOVY-1800] - Inconsistent stack height 0 != 1
- [GROOVY-1805] - SwingBuilder does not intialzie properties in code order
- [GROOVY-1806] - import static not supported
- [GROOVY-1810] - size() not supported on two-dimensional boolean arrays
- [GROOVY-1815] - import doesn't allow inner classes
- [GROOVY-1816] - Closure Listener does not work with method events that have more than one parameter
- [GROOVY-1817] - JTable ColumnModel not set in SwingBuilder
- [GROOVY-1821] - Expecting to find object/array on stack
- [GROOVY-1822] - Fallthrough in Switch Statements doesn't work for Patterns
- [GROOVY-1824] - map.class returns null
- [GROOVY-1829] - Problem with GString as names of the method call inside a closure.
- [GROOVY-1833] - blank in path makes calling one groovy file from another fail
- [GROOVY-1837] - Groovy console broken with NPE on Mac OS X
- [GROOVY-1839] - Fully qualified annotations are not parsed properly
- [GROOVY-1844] - Subclasses of groovy.lang.Closure can't be invoked like closures
- [GROOVY-1846] - Referencing a method closures should work with GStrings
- [GROOVY-1848] - GCL does not close input stream when using URL to parseClass
- [GROOVY-1852] - Closure constant on interface not callable without call()
- [GROOVY-1854] - DefaultGroovyMethods File[] null check
- [GROOVY-1856] - Error while selecting appropriate method
- [GROOVY-1862] - Resource leak in ResolveVisitor.isSourceNewer()
Improvement
- [GROOVY-1109] - provide method rows() and firstRow() on groovy.sql.DataSet
- [GROOVY-1311] - make Groovy Stubs and Mocks deal with property access same as with method calls
- [GROOVY-1376] - rename (or alias) assertArrayEquals to assertEquals
- [GROOVY-1542] - Implement groupBy() for Maps as well as for Lists
- [GROOVY-1619] - Allow the addition of MetaBeanProperty instances to MetaClassImpl
- [GROOVY-1640] - Add "".hasText() method
- [GROOVY-1647] - Improve Groovy Truth for CharSequence and arrays
- [GROOVY-1750] - printf should work with any PrintStream and support sprintf
- [GROOVY-1752] - Add arg types and return types to error messages
- [GROOVY-1770] - use(category){closure} should propagate the value returned by its closure
- [GROOVY-1818] - Option to remove the GroovyObject dependency and compile to 'pure' Java
- [GROOVY-1849] - Add the ability to assign before and after interceptors to groovy shell and groovy console to hook into script execution
New Feature
- [GROOVY-1665] - Allow Closures to be lazily evaluated in GStrings
- [GROOVY-1676] - Implement literal Map addition/concatenation like "[a:1, b:2] + [c:3]"
- [GROOVY-1695] - Add (new|with)(Object|Data)(Input|Output)Stream
- [GROOVY-1745] - DefaultGroovyStaticMethods addShutdownHook( Object obj, Closure closure)
- [GROOVY-1828] - GDK: Add eachDirMatch and eachDirRecurse on File
- [GROOVY-1834] - Migrate ExpandoMetaClass from Grails into Groovy
Task
- [GROOVY-8] - Map/List expressions as last expression of new object exprs.
- [GROOVY-974] - remove transformName() hack in MarkupBuilder
- [GROOVY-1711] - New Build System
- [GROOVY-1772] - Upgrade Ant to 1.7.0
Wish
- [GROOVY-301] - consider adding neater syntax for getters/setters maybe using closure-like syntax
- [GROOVY-1287] - use(category, closure) should return the closures return value.
- [GROOVY-1636] - Support as SortedSet
Grails 0.5的性能提升了40%~50%,至于新特性等请看下面release notes
引自
agile_boy的部分翻译:
新特性
- 自定义的URL映射(对我来说是个不错的特性)
- 命令对象(Command objects)和 form 校验 (没有玩过,看Login的示例还是不错的,考虑改进一下现有系统的Login)
- GORM新增List和Map的支持
- GORM新增组件对象(Hibernate的component)的支持 (呵呵,越来越完善了)
- Base64 codec
- 使用lvy(???)解决依赖问题
- 新增项目配置信息,比如版本 (好像用处不大?)
- 用于插件开发的新的Artefact API (以后开发插件再说)
加强- 性能提升(40-50% faster) (早就期待了)
- Taglib的完善
- I18n的加强
- 。。。。
点击下载Grails 0.5 Release Notes
30 April 2007
The Grails development team has reached another milestone and is
pleased to announce the release of version 0.5 of the Grails
web-application development framework.
Grails is a dynamic web-application framework built in Java and
Groovy, leveraging best of breed APIs from the J2EE sphere including
Spring, Hibernate and SiteMesh. Grails brings to Java and Groovy
developers the joys of convention-based rapid development while
allowing them to leverage their existing knowledge and capitalize on
the proven and performant APIs Java developers have been using for
years.
Development has been intense since the release of 0.4.2 at the end
of February, tackling over 190 issues in this period. This release has
seen exciting contributions from new team members and users and
significant functionality enhancements.
Thank you to all the team members, patch contributors and users. A
lot of hard work has gone into this release - we hope you enjoy using
this latest installment of the Grails adventure.
New Features
- Custom URL Mappings
- Command objects / form validation
- List & Map support in GORM
- Support for composition in domain class (Hibernate "components")
- Base64 codec
- Dependency resolution with Ivy
- Project metadata and versioning support, smarter scripts and upgrade processes
- Script event hooks
- Automatic addition of log objects to all artefacts
- New Artefact API available to Plugins
Improvements
- Major improvements to artefact reloading
- Improved relationship management methods in GORM
- Cascading validation
- Retrieving multiple objects with Book.getAll(1,2,3)
- Using named HQL parameters in find() methods
- Clean up of some legacy constraints issues
- Performance improvements (40-50% faster)
- Taglib optimisations
- Improvements to scaffolding (sortable columns, pagination of large resultsets, etc.)
- I18N improvements
- Overhauled GSP view loading
- Even greater test coverage of the core Grails code
- Many many bug fixes
附:
朝花夕拾——Groovy & Grails
posted on 2007-05-01 13:43
山风小子 阅读(2115)
评论(0) 编辑 收藏 所属分类:
Groovy & Grails 、
Others