{"id":15433,"date":"2014-09-10T10:48:51","date_gmt":"2014-09-10T05:18:51","guid":{"rendered":"http:\/\/www.tothenew.com\/blog\/?p=15433"},"modified":"2015-05-07T15:36:25","modified_gmt":"2015-05-07T10:06:25","slug":"day-2-at-springone-2gx-2014","status":"publish","type":"post","link":"https:\/\/www.tothenew.com\/blog\/day-2-at-springone-2gx-2014\/","title":{"rendered":"Day 2 at SpringOne 2GX 2014"},"content":{"rendered":"<p>Day 2 kicked off and we <span id=\"711e872a-7753-4507-9d5f-53f1f523ff73\" class=\"GINGER_SOFTWARE_mark\">had very really<\/span> cool sessions planned around Groovy, Grails and Spring Boot. It was quite an experience listening to all the new features and changes coming over the horizon of Groovy and Grails. A quick excerpt of the day follows:<\/p>\n<p># Groovy in 2014 and beyond<span id=\"61ecc4e7-46d2-4297-bd2c-b7fb1a1873c7\" class=\"GINGER_SOFTWARE_mark\"> :<\/span> Guillaume Laforge<\/p>\n<ul>\n<li>Groovy trait took over the discussion<\/li>\n<li><span id=\"72fd470a-708b-450d-9876-df6a04589212\" class=\"GINGER_SOFTWARE_mark\"><span id=\"b537cbab-9975-4c5c-8133-776b5ca52290\" class=\"GINGER_SOFTWARE_mark\"><span id=\"da0a0ef7-2614-4312-bb28-94b03b1d9ed6\" class=\"GINGER_SOFTWARE_mark\"><span id=\"5c0d4950-550a-41c7-b112-36f1e9a5cf7c\" class=\"GINGER_SOFTWARE_mark\">Explaination<\/span><\/span><\/span><\/span>\u00a0on new AST like <span id=\"8480b984-e3f2-4a90-8496-5357229ea1ad\" class=\"GINGER_SOFTWARE_mark\"><span id=\"831f5e4c-4984-49cd-88bd-6010e93c4169\" class=\"GINGER_SOFTWARE_mark\"><span id=\"9a278581-809e-4ba4-8ff9-2f88cd05ccb7\" class=\"GINGER_SOFTWARE_mark\"><span id=\"f5b10fa1-b256-4a55-a1dc-b49007932fb0\" class=\"GINGER_SOFTWARE_mark\">TailRecursive<\/span><\/span><\/span><\/span>, Sortable, <span id=\"36e4d7ab-2ec8-435f-a6ef-b7b39f29c1d7\" class=\"GINGER_SOFTWARE_mark\"><span id=\"0103723b-3e17-4f93-a8a8-5e1574b75630\" class=\"GINGER_SOFTWARE_mark\"><span id=\"3243aef1-ccdd-4f2f-a7f6-82c86f25d2b1\" class=\"GINGER_SOFTWARE_mark\"><span id=\"58c09e28-1f75-4715-adb5-69aa8203f546\" class=\"GINGER_SOFTWARE_mark\">Basescript<\/span><\/span><\/span><\/span><\/li>\n<li>No support for Java 8 <span id=\"76e516f3-222b-4ffb-80a5-82fbc8e0bd0c\" class=\"GINGER_SOFTWARE_mark\"><span id=\"da77b669-d30a-4f72-a506-d8cd2630bf84\" class=\"GINGER_SOFTWARE_mark\"><span id=\"0e974ba5-cc7a-453c-9491-52f2fd509a0e\" class=\"GINGER_SOFTWARE_mark\"><span id=\"6e29d108-2248-4187-a2ab-922cf5309b80\" class=\"GINGER_SOFTWARE_mark\">lamda<\/span><\/span><\/span><\/span> and method referencing, as we already have closures<\/li>\n<li><span id=\"515b1a41-1355-4fdb-8f1d-3d8b16ac2489\" class=\"GINGER_SOFTWARE_mark\"><span id=\"6cf03b81-8339-4a87-bb95-7a81f2339a83\" class=\"GINGER_SOFTWARE_mark\"><span id=\"740532fd-a438-4e36-b71d-16f8f26037a8\" class=\"GINGER_SOFTWARE_mark\"><span id=\"cc6a567c-23f7-45ae-9bc2-04767c884128\" class=\"GINGER_SOFTWARE_mark\">Reimplementation<\/span><\/span><\/span><\/span> of JSON<\/li>\n<li>Markup template<\/li>\n<li>Documentation overhauling<\/li>\n<li>Android with Groovy<\/li>\n<li>Groovy 3.0<\/li>\n<\/ul>\n<p># Grails 3.0 Preview<span id=\"e96fe61b-0884-410d-ac47-8f124aec34ce\" class=\"GINGER_SOFTWARE_mark\"><span id=\"4ad130bc-bee7-4897-962a-e7f4b92f31c6\" class=\"GINGER_SOFTWARE_mark\"><span id=\"fc73962f-a629-4936-b82f-e5de1d1567cb\" class=\"GINGER_SOFTWARE_mark\"><span id=\"eb8e46b6-160a-45ad-8c08-c1c08d5d7d32\" class=\"GINGER_SOFTWARE_mark\"> :<\/span><\/span><\/span><\/span> Graeme Rocher<\/p>\n<ul>\n<li>More improvement on GORM specially with MongoDb and hibernate 4<\/li>\n<li>Part of Spring boot<\/li>\n<li>Fully Gradle build system and runnable jar<\/li>\n<li>Removed so much unused bloated code<\/li>\n<li>Using trait and no AST<\/li>\n<li>Grails 3.0 Demo<\/li>\n<\/ul>\n<p># Core Groovy<span id=\"acd621a3-9b76-4cde-bb49-2c2e95dbd808\" class=\"GINGER_SOFTWARE_mark\"><span id=\"f3ce825c-7dad-4d6c-b4bd-858a076e34c7\" class=\"GINGER_SOFTWARE_mark\"><span id=\"0ee0f409-990d-4a12-9c16-989b09920587\" class=\"GINGER_SOFTWARE_mark\"><span id=\"347f9e90-9f2c-48ff-9194-4b8ed0f4dc65\" class=\"GINGER_SOFTWARE_mark\"> :<\/span><\/span><\/span><\/span>\u00a0Guillaume Laforge<\/p>\n<ul>\n<li>Discussion on new Java 8 features and which one going to be supported in Groovy<\/li>\n<li>New <span id=\"380d9670-c2d9-404b-ad14-e62b44992fcc\" class=\"GINGER_SOFTWARE_mark\"><span id=\"06544a01-9cdc-47cd-9b7b-1300e126a59a\" class=\"GINGER_SOFTWARE_mark\"><span id=\"bf9b38a7-79c3-45e8-a7c8-113d750fdc54\" class=\"GINGER_SOFTWARE_mark\">java<\/span><\/span><\/span>\u00a08 annotations like <span id=\"0a1ae94e-75fd-4f11-9dad-57e77fe3bd35\" class=\"GINGER_SOFTWARE_mark\"><span id=\"55fe6c6f-e30c-4790-8613-49313e52d59d\" class=\"GINGER_SOFTWARE_mark\"><span id=\"eb92c21b-7131-4b7f-a721-07d6bcdcbe80\" class=\"GINGER_SOFTWARE_mark\">NotNull<\/span><\/span><\/span>, Email, Critical <span id=\"e9b233dd-528a-4c27-9fee-634dfa944271\" class=\"GINGER_SOFTWARE_mark\"><span id=\"e604d0ce-5a21-492d-be2c-c5dac2708377\" class=\"GINGER_SOFTWARE_mark\"><span id=\"657de558-93d6-4760-b7ce-b89b4f47befb\" class=\"GINGER_SOFTWARE_mark\">etc<\/span><\/span><\/span>\u00a0not yet supported in Groovy<\/li>\n<li>Java 8 interfaces with <span id=\"34fedafa-9021-4cca-8b94-372c72e091b7\" class=\"GINGER_SOFTWARE_mark\"><span id=\"b9e4d3cc-44bf-4347-a101-a5d48c094de7\" class=\"GINGER_SOFTWARE_mark\"><span id=\"1d8bfed2-752c-4a02-846c-f6e52c15fb2c\" class=\"GINGER_SOFTWARE_mark\"><span id=\"056de56a-1576-4e04-9029-86930e2b4a16\" class=\"GINGER_SOFTWARE_mark\">body<\/span><\/span><\/span><\/span> and <span id=\"551aa05d-f195-4fc1-b556-b23f6128ffc2\" class=\"GINGER_SOFTWARE_mark\"><span id=\"abb001d5-9835-48d1-9c99-99a020a6ed1a\" class=\"GINGER_SOFTWARE_mark\"><span id=\"103bcefc-aac1-4456-8da0-296b8e764749\" class=\"GINGER_SOFTWARE_mark\"><span id=\"74a03542-0796-496d-b2a5-ab5dfe089599\" class=\"GINGER_SOFTWARE_mark\">lamda<\/span><\/span><\/span><\/span>\u00a0expressions<\/li>\n<li>Fully <span id=\"d9e59945-2eef-450c-8f98-b76df9ea572a\" class=\"GINGER_SOFTWARE_mark\"><span id=\"9a0bf531-3a15-40a1-8de4-62a04018b12c\" class=\"GINGER_SOFTWARE_mark\"><span id=\"00314bdf-de95-4b2b-b0af-b4ddbd4c7fa2\" class=\"GINGER_SOFTWARE_mark\">invokeDynamic<\/span><\/span><\/span><\/li>\n<li>Groovy goes beyond what Java 8 offers<\/li>\n<\/ul>\n<p># Rethinking API design with traits<span id=\"7845b4e6-eebb-46eb-a8cb-8f4c1b7b4dac\" class=\"GINGER_SOFTWARE_mark\"><span id=\"1f3fcb20-76b0-4d20-94c1-dd1a32c560e5\" class=\"GINGER_SOFTWARE_mark\"><span id=\"05c69918-a2b9-4029-89c6-f5fbc1e5042a\" class=\"GINGER_SOFTWARE_mark\"> :<\/span><\/span><\/span>\u00a0C\u00e9dric Champeau<\/p>\n<ul>\n<li>Deprecated\u00a0Mixin annotation in Groovy 2.3<\/li>\n<li>Discussion <span id=\"7677df7f-f2e3-41fc-9867-41ce123dca57\" class=\"GINGER_SOFTWARE_mark\"><span id=\"3744fa23-bd6f-4954-960d-56aa4054af2f\" class=\"GINGER_SOFTWARE_mark\"><span id=\"b4cdf73e-c4d0-46a3-aa97-ce9d2f4f6c71\" class=\"GINGER_SOFTWARE_mark\">on<\/span><\/span><\/span> Delegation <span id=\"89599b0d-4b0c-4e97-a300-dd65c8cede11\" class=\"GINGER_SOFTWARE_mark\"><span id=\"7f322a94-6fcc-408d-9b57-dcf08f6cb6dd\" class=\"GINGER_SOFTWARE_mark\"><span id=\"42503b2f-93f0-4c03-a4b4-5f9561998e89\" class=\"GINGER_SOFTWARE_mark\">vs<\/span><\/span><\/span>\u00a0<span id=\"bc05e9dc-fbc2-45cb-9183-b6508ff229b3\" class=\"GINGER_SOFTWARE_mark\"><span id=\"5608dab2-ae50-454c-af02-31bb3583bb0c\" class=\"GINGER_SOFTWARE_mark\"><span id=\"ebfbb233-f261-4f4e-abb7-0e0734419f3f\" class=\"GINGER_SOFTWARE_mark\">Inheritence<\/span><\/span><\/span><\/li>\n<li>Talked about traits and its use cases with so many demos<\/li>\n<li>Explained the behavior\u00a0of traits in different situations<\/li>\n<li>Runtime Coercion in traits<\/li>\n<li>Most AST doesn&#8217;t work with traits<\/li>\n<\/ul>\n<p># Making Spring boot even Groovier<span id=\"33870fcc-2d29-483f-8e9d-966d1db0597b\" class=\"GINGER_SOFTWARE_mark\"><span id=\"7630dc6f-56e9-4a8a-8cbf-cf9a7cd0fd50\" class=\"GINGER_SOFTWARE_mark\"><span id=\"5efbed70-9a06-418c-acc0-a992367abb21\" class=\"GINGER_SOFTWARE_mark\"> :<\/span><\/span><\/span>\u00a0Graeme Rocher<\/p>\n<ul>\n<li>Demo on how Spring boot works<\/li>\n<li><span id=\"746a7a84-56da-47b7-b853-d58c48be81fc\" class=\"GINGER_SOFTWARE_mark\"><span id=\"10fcbee1-0811-4c8e-b7c3-5b22c3e460ca\" class=\"GINGER_SOFTWARE_mark\"><span id=\"fec53e8a-12fc-4535-8068-0b743ac01578\" class=\"GINGER_SOFTWARE_mark\">Gradle<\/span><\/span><\/span> build system to run the application<\/li>\n<li>Integration of Groovy, GSP, Groovy template and GORM<\/li>\n<li>Persistent classes and moving from one database to another<\/li>\n<li>Have most of the Grails goodies<\/li>\n<\/ul>\n<p>It was a day full of knowledge flowing in from all directions and\u00a0we could clearly\u00a0see the future of Groovy and Grails. One particular presentation that stood out was &#8220;Groovy traits demystified&#8221; by\u00a0C\u00e9dric Champeau. You can check out\u00a0the presentation <a title=\"Groovy traits\" href=\"https:\/\/speakerdeck.com\/melix\/rethinking-api-design-with-traits\">here<\/a>.<\/p>\n<p>After all\u00a0sessions we had a nice feather bird session at the end where everybody discussed about Groovy Grails experience and its future. It was a great end\u00a0to a wonderful\u00a0day.<\/p>\n\n\t\t<style type=\"text\/css\">\n\t\t\t#gallery-1 {\n\t\t\t\tmargin: auto;\n\t\t\t}\n\t\t\t#gallery-1 .gallery-item {\n\t\t\t\tfloat: left;\n\t\t\t\tmargin-top: 10px;\n\t\t\t\ttext-align: center;\n\t\t\t\twidth: 20%;\n\t\t\t}\n\t\t\t#gallery-1 img {\n\t\t\t\tborder: 2px solid #cfcfcf;\n\t\t\t}\n\t\t\t#gallery-1 .gallery-caption {\n\t\t\t\tmargin-left: 0;\n\t\t\t}\n\t\t\t\/* see gallery_shortcode() in wp-includes\/media.php *\/\n\t\t<\/style>\n\t\t<div id='gallery-1' class='gallery galleryid-15433 gallery-columns-5 gallery-size-thumbnail'><dl class='gallery-item'>\n\t\t\t<dt class='gallery-icon landscape'>\n\t\t\t\t<a href='https:\/\/www.tothenew.com\/blog\/day-2-at-springone-2gx-2014\/bxi7a_acmaaooqf\/'><img width=\"150\" height=\"113\" src=\"\/blog\/wp-ttn-blog\/uploads\/2014\/09\/BxI7a_aCMAAooQF.jpg\" class=\"attachment-thumbnail size-thumbnail\" alt=\"\" decoding=\"async\" loading=\"lazy\" \/><\/a>\n\t\t\t<\/dt><\/dl><dl class='gallery-item'>\n\t\t\t<dt class='gallery-icon landscape'>\n\t\t\t\t<a href='https:\/\/www.tothenew.com\/blog\/day-2-at-springone-2gx-2014\/bxi7zhgceaagpfs\/'><img width=\"150\" height=\"112\" src=\"\/blog\/wp-ttn-blog\/uploads\/2014\/09\/BxI7zHgCEAAGpfs.jpg\" class=\"attachment-thumbnail size-thumbnail\" alt=\"\" decoding=\"async\" loading=\"lazy\" \/><\/a>\n\t\t\t<\/dt><\/dl><dl class='gallery-item'>\n\t\t\t<dt class='gallery-icon landscape'>\n\t\t\t\t<a href='https:\/\/www.tothenew.com\/blog\/day-2-at-springone-2gx-2014\/bxglqvfcaaaoipk\/'><img width=\"150\" height=\"113\" src=\"\/blog\/wp-ttn-blog\/uploads\/2014\/09\/BxGlqVFCAAAOiPK.jpg\" class=\"attachment-thumbnail size-thumbnail\" alt=\"\" decoding=\"async\" loading=\"lazy\" \/><\/a>\n\t\t\t<\/dt><\/dl><dl class='gallery-item'>\n\t\t\t<dt class='gallery-icon landscape'>\n\t\t\t\t<a href='https:\/\/www.tothenew.com\/blog\/day-2-at-springone-2gx-2014\/bxgslkacaaevtzm\/'><img width=\"150\" height=\"112\" src=\"\/blog\/wp-ttn-blog\/uploads\/2014\/09\/BxGsLKACAAEvTZm.jpg\" class=\"attachment-thumbnail size-thumbnail\" alt=\"\" decoding=\"async\" loading=\"lazy\" \/><\/a>\n\t\t\t<\/dt><\/dl><dl class='gallery-item'>\n\t\t\t<dt class='gallery-icon landscape'>\n\t\t\t\t<a href='https:\/\/www.tothenew.com\/blog\/day-2-at-springone-2gx-2014\/bxi8reucqaag43v\/'><img width=\"150\" height=\"112\" src=\"\/blog\/wp-ttn-blog\/uploads\/2014\/09\/BxI8ReUCQAAG43V.jpg\" class=\"attachment-thumbnail size-thumbnail\" alt=\"\" decoding=\"async\" loading=\"lazy\" \/><\/a>\n\t\t\t<\/dt><\/dl><br style=\"clear: both\" \/>\n\t\t<\/div>\n\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Day 2 kicked off and we had very really cool sessions planned around Groovy, Grails and Spring Boot. It was quite an experience listening to all the new features and changes coming over the horizon of Groovy and Grails. A quick excerpt of the day follows: # Groovy in 2014 and beyond : Guillaume Laforge [&hellip;]<\/p>\n","protected":false},"author":11,"featured_media":15449,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":2},"categories":[7],"tags":[1511,4840,1509,9,1510,1202,1199],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts\/15433"}],"collection":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/comments?post=15433"}],"version-history":[{"count":0,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts\/15433\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/media\/15449"}],"wp:attachment":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/media?parent=15433"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/categories?post=15433"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/tags?post=15433"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}