| 

.NET C# Java Javascript Exception

Groovy 1.6 ist fertig!

Dies ist das Archiv des ehemaligen Forums zum Thema Groovy, Grails, Griffon und Bean Scripting Framework, welches unter groovy-forum.de existierte. Die neue Adresse des Groovy-Forums ist: http://codekicker.de/fragen/themen/groovy.


Groovy 1.6 ist fertig!

christian - 19.02.2009 11:39
Die lang erwartete Groovy-Version 1.6 ist fertig! Sie enthält einige neue Funktionen und Verbesserungen, vor allen Dingen der Performance.

Die offizielle Ankündigung listet ein paar Einzelheiten auf:

* great runtime performance improvements
* multiple assignments- optional return in if/else and try/catch blocks
* AST transformations and all the provided transformation annotations like @Singleton, @Lazy, @Immutable, @Delegate and friends
* the Grape module and dependency system and its @Grab transformation
* various Swing builder improvements, thanks to the Swing / Griffon (http://griffon.codehaus.org) team
* as well as several Swing console improvements
* the integration of JMX builder
* JSR-223 scripting engine built-in
* various metaprogramming improvements, like the EMC DSL, per-instance metaclasses even for POJOs, and runtime mixins

Download von Groovy 1.6, Changelog

Gruß
Christian


Re: Groovy 1.6 ist fertig - Erfahrungsbericht

wilhelm.nagy@bfw.gv.at - 23.02.2009 16:11
Kolleginnen und Kollegen,

ich habe 1.6 auf ein 20.000 Zeilen Projekt losgelassen und möchte kurz meine Erfahrungen schildern.

Im allgemeinen scheint das Ding zu funktionieren.
Es macht einige verwirrende Dinge.
Scheinbar interpretiert der Umwandler den Sourcecode anders.

Ein Beispiel:
String confirm = 'ich bin groovy'

void confirm(Integer x) {
   println x
   }
   
confirm(1)
Das o.a. Progrämmchen funktioniert unter 1.5.7 problemlos
unter 1.6
wird folgende Exception ausgelöst:
Exception thrown: No signature of method: java.lang.String.call() is applicable for argument types: (java.lang.Integer) values: [1]

groovy.lang.MissingMethodException: No signature of method: java.lang.String.call() is applicable for argument types: (java.lang.Integer) values: [1]

JIRA: GROOVY-3373

Leider wird beim Umwandeln keine Meldung ausgegeben.

Bei folgenden Code
name.eachMatch(/And|Or/) {clauses<<it}

Musste unter 1.5.7 um korrekte Werte zu erhalten
clauses<<it[0]

notiert werden.

Ich weiss leide noch nicht, auf was für Problemchen ich noch stosse, da keine Syntaxfehler vorliegen.
Derzeitig kämpfe ich mich durch die Release Notes aber das ist ein mühsames Geschäft, da o.A. Verhalten warscheinlich
nicht oder nur sehr verklausoliert drinnsteht.

Meine Tempo-Test's kann ich erst machen, wenn ich alle diese krausen Dinge gefunden habe.
Wenn es abstürzt ist es ein kleinesProblem wenn es aber wie im RegEx Beispiel falsche Werte liefert wird es gruselig.

\^/ili
(Wilhelm Nagy)



&#119;&#105;&#108;&#104;&#101;&#108;&#109;&#46;&#110;&#97;&#103;&#121;&#64;&#98;&#102;&#119;&#46;&#103;&#118;&#46;&#97;&#116;.


Re: Groovy 1.6 ist fertig - Erfahrungsbericht - Multi Applikation/Versionsmanagement

wilhelm.nagy@bfw.gv.at - 25.02.2009 08:52
Hallo,

eine weitere kleine Hürde beim upgrade.

Ich habe 5 Applikatione 'im Rennen'.

Das Problem tritt beim Umwandeln auf. Ich verwende zur Erzeugung der WAR Files in Buildskript, welches mit ANT die Umwandlung vornimmt.
    taskdef(name: "groovyc", classname: "org.codehaus.groovy.ant.Groovyc", classpathref: "path")
    taskdef(name: "groovydoc", classname: "org.codehaus.groovy.ant.Groovydoc", classpathref: "path")

Es wird dabei angenommen, dass der Umwandler unter GROOVY_HOME zu finden ist. Wenn man nun Groovy 'ganz normal' installiert wird dort 1.6 sein.
Um nicht in die genannten Probleme zu laufen, wollte ich weiter unter 1.5.7 entwicklen. Das geht auch, da groovy-all-1.5.7.jar in ./lib installiert ist. Starte ich das Buildfile wird als Umwandler aber 1.6 angenommen. Was passiert wenn ich ein mit 1.6 umgewandeltes *.class file auf eine Laufzeitumgebung mit 1.5.7 loslasse wage ich im Momment noch nichtmal vorzustellen.

Dabei habe ich es noch leicht. Da das Buildfile ein *.bat file ist, kann ich GROOVY_HOME für diesen Fall umbiegen.
Alle, welche einfach groovyc .... tippen sein gewarnt.

\^/ili
(Wilhelm Nagy)


Re: Groovy 1.6 ist fertig! Cast-Verwirrung

wilhelm.nagy@bfw.gv.at - 02.03.2009 11:55
Hallo Leute,

Seit 1.6 erhalte ich folgende Fehlermeldung:

Cannot cast object 'MVC.domain.AuftragDomain@536234' with class 'MVC.domain.AuftragDomain' to class 'MVC.domain.AuftragDomain'

Also ich kann mir nicht vorstellen, dass man eine Objekt nicht zu sich selbst casten kann

Fehler oder Feature?

Der Code, welche das Problem ausloest sieht wie folgt aus
   AuftragDomain getAnyAuftrag() {
      AuftragDomain auftrag = new AuftragDomain(db:this.db)

      auftrag.get(this.auftragID)
      if (auftrag == null)
         throw new Exception("MitreisendeDomain::getAnyAuftrag kann für aktuellen Mitreisende keine Auftrag finden: ${this.auftragID}")
      
      return auftrag
      }
................
      AuftragDomain auftrag = domMitreisende.getAnyAuftrag()

Wen ich die o.a. Zeile durch
      def auftrag = domMitreisende.getAnyAuftrag()

ersetzte funktionierst.
Ich glaube alles richtig gemacht zu haben, vielleicht hat jemand eine Erklärung.

\^/ili
(Wilhelm Nagy)


Re: Groovy 1.6 ist fertig! Cast-Verwirrung

Grube - 05.03.2009 11:40
lass dir doch mal den Klassennamen von auftrag ausgeben nach der Zuweisung


Stelle deine Groovy-Frage jetzt!


Diese Seite zeigt den Thread "Groovy 1.6 ist fertig!" der ehemaligen Webseite groovy-forum.de, welche durch einen Serverunfall zerstört wurde. codekicker.de hat viele Konversationen über die beliebte Programmiersprache Groovy und zugehörige Frameworks wie das Grails-Framework retten können.

Hast Du eine Frage zum Thema Groovy, Grails oder allgemein Java? Viele ehemalige groovy-forum.de Mitglieder beantworten dir auf codekicker.de deine Frage! Stelle jetzt eine Frage!

Viele weitere Diskussionen zu Grails und Groovy befinden sich auf der Threadübersicht des alten groovy-forum.de.