Your SlideShare is downloading. ×
Grooscript greach
Upcoming SlideShare
Loading in...5

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Grooscript greach


Published on

My talk about at Greach Madrid 2014

My talk about at Greach Madrid 2014

Published in: Technology
1 Like
  • Be the first to comment

No Downloads
Total Views
On Slideshare
From Embeds
Number of Embeds
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

No notes for slide


  • 1. grooscript @grooscript Jorge Franco
  • 2. About me Developer, I love it Lazy in english at school Living in Madrid Working at Osoco Grooscript developer @jfrancoleza
  • 3. The players
  • 4. Web developer Leave your comfort zone Move to the client side
  • 5. Doesn’t run! on browsers
  • 6. Do something! No excuses You can do a library, resolve issues, create a plugin, give feedback, help other projects, … ! You will learn a lot
  • 7. The wire
  • 8. Groovy to Javascript converter Groovy 2 to Javascript ECMAScript 5 Open source project, Apache 2 license Library with Groovy and GPars dependencies No special Javascript objects or functions Converted code requires grooscript.js to run Different conversion options Grails plugin, npm package, gradle plugin What is grooscript?
  • 9. File.groovy File.js Conversion! Options grooscript.js Convert Groovy files
  • 10. Groovy code
  • 11. Javascript result
  • 12. Javascript Groovy Java MoreJavascriptfriendly Types, inheritance, java 8, … metaClass ListsClosures Operators Dsl’s ExpandoMaps beans methodMissing Mixins Categories
  • 13. Limitations Groovy / Java not fully supported Working in groovy-core No good support for inheritance No methods with same name Basic support in metaClass No packages, no classes with same name No metainfo, expandoMetaClass, class info Only AST transformations applied in semantic phase No complex Java / Groovy types … see documentation for more info on
  • 14. Directly convert code
  • 15. Conversion options convertDependencies - boolean - default false classPath - List<String> or String - default null - Ex: ‘src/groovy’ customization - Closure - default null mainContextScope - List<String> - default null initialText / finalText - String - default null recursive - boolean - default false
  • 16. Convert dependencies option Car.groovy Wheel.groovy Car.js convert == option wheel code included
  • 17. Main context scope Customization • Requires Groovy 2.1, the closure is passed to withConfig(conf) • More info in • Sometimes you don’t know where to find a variable • When conversion is done, some variables come from other contexts • grooscript.js sometimes tries to find missed variables with eval • Node.js eval not working same way that browsers do • You can define variables or function names with this option • Ex. [‘$’, ‘myAwesomeFunction’, ‘myMissedVariable’]
  • 18. Feature: Annotations @GsNotConvert @GsNative
  • 19. Feature: Daemon
  • 20. >phantomjs myTest.js Inject grooscript.js and jquery Use Groovy script abilities I want to be Groovier @AST Please code in Groovy!
  • 21. Mandatory Screen capture Before start test More console info Accept basic parameters Works fine in GroovyTestCase Not so well in Spock Have to define Phantom.js path Feature: PhantomJsTest
  • 22. Example
  • 23. Feature: builder grooscript-builder.js
  • 24. Demo websockets with Vert.x
  • 25. v 0.4
  • 26. Grooscript Vert.x Plugin Convert Groovy code to Javascript Run conversion daemon Websockets Eventbus bridge New port open Events in the client Auto reload pages Both are optional v 1.3.1 Requires Java 1.7
  • 27. Differences?Renders on server Renders on the client Conversions are cached with cache plugin Grooscript tags auto - import js files needed
  • 28. Grails port 8080 Vert.x port 8085 Browser gsp eventBus http websockets Config.groovy BootStrap.groovy Chat sample main.gsp
  • 29. More eventsBuilder Where Listen events Render on load Send event message = println Execute on event message Don’t use ${} in grooscript tags Strong dependency Resources plugin Can put code in a .groovy file
  • 30. Domain classes in the client* *Experimental, it requires Groovy 2.1 (grails 2.3) • validate, clientValidations ** • hasErrors • count • list * without params • get • save * without params • delete
  • 31. Domain classes connected with the server* *Experimental, it requires Groovy 2.1 (grails 2.3) • list • get • save • delete
  • 32. PhantomJs Tests* *Not working in Grails 2.3, need improvements New test phase phantomjs Tests in test/phantomjs More features
  • 33. features, features… next release 0.5 Change resources plugin dependencies to Require.js Improve domain options PhantomJs tests improvements Move to websockets with Spring 4 in 2.4 and many more… Remote domain class to grails REST support
  • 34. v 0.2
  • 35. Gradle plugin Add in your build.gradle
  • 36. Create more conversion tasks: Converted files destination Require.js setup file Files to be converted Bind id’s to presenter properties
  • 37. Demo springboot REST - Require.js - Grooscript Gradle Plugin - H2
  • 38.
  • 39. Last demo :) Node.js is very fast!
  • 40. Final topics
  • 41. Coming next months… grooscript 0.5 gradle plugin 0.3 Improve Groovy support (Java 8 too) and Javascript friendly Add jQuery and binder utilities Do tests also with Node.js Wait function in PhantomJs tests Remove binder and integrates with web frameworks website Back to dynamic, online conversions and robots! Improve documentation
  • 42. Why would I use grooscript? • Create small modules to use in your views • You can continue developing in Groovy • Can use dsl’s, typeCheck, AST’s,… in the browser • You have all the java tools and IDE’s • You can work with new Javascript tools from Groovy • Don’t repeat code in two languages • Single development environment • Create your own architecture in Groovy • Don’t learn another “to Javascript” tool
  • 43. Thank you! All people reading this 680 motivation clicks Jetbrains for IntelliJ IDEA v13 open source license Special thanks to René, @glaforge and @marioggar Community, I love your feedback Please… Version 0.4.4, time to improve Questions?
  • 44. Beer time!