--
You received this message because you are subscribed to the Google Groups "play-framework" group.
To view this discussion on the web visit https://groups.google.com/d/msg/play-framework/-/XuhtXgiadtUJ.
To post to this group, send email to play-fr...@googlegroups.com.
To unsubscribe from this group, send email to play-framewor...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/play-framework?hl=en.
hi I am author of rythm and I try to put my understanding here without bias:1. Both Japid and Rythm parse template files into java source file and then compile into bytecode. Both are high performance templates engine which is multiple times faster than groovy.2. Japid has been created for more than 2 years and should be more stable.3. Rythm should be easier to integrate than Japid. With Japid your controller must be sub class of JapidController while there is no obligation of doing similar things with Rythm. rewrite the view file is the only thing you need to do to migrate from groovy to rythm.4. Japid has restrictions on view folder layout; Rythm has no limitation on view folders, it simply follow play's rule on view file locations.
5. Japid template can extends templates in 'app/japidviews/_layouts' folder while rythm templates can extends any other templates
6. Japid template can call tags in 'app/japidviews/_tags' folder; Rythm template can call any templates (even include the current template itself) as a tag; Rythm also support existing FastTags defined in application.
7. Rythm use '@' to mark all the keywords, directives; expressions and tags; Japid use '`' or '@' to mark keywords and tags, '$' for expressions.8. Japid provides a eclipse plugin while rythm doesn't at the moment.
If I'm not mistaken, it cannot
coexist with other template solution (unlike Japid).
However it seems
to support FastTags. No offense, but personally had tough time with
Green's few other plugs.
However it seems
to support FastTags. No offense, but personally had tough time with
Green's few other plugs.
--
You received this message because you are subscribed to the Google Groups "play-framework" group.
To view this discussion on the web visit https://groups.google.com/d/msg/play-framework/-/DZZfqOguVw8J.
--
You received this message because you are subscribed to the Google Groups "play-framework" group.
--
You received this message because you are subscribed to the Google Groups "play-framework" group.
Rajesh +1.Play2 feels like an alpha version. Features are missing, the website looks horrible, documentation is ":/" compared to play1.
The real play2 would be play1 + japid or rythm + better form helper (like simple_form in rails or the form helper from play2).I don't want scala in my code. It's a personal opinion but scala is not as readable as java.
Am Mittwoch, 21. März 2012 09:36:53 UTC+1 schrieb R. Rajesh Jeba Anbiah:On Mar 21, 12:13 am, sas <open...@gmail.com> wrote:
> with the issues raised by scala long compiling times, I think that a
> port of any of them to play 2.0 would be very welcome indeed...
Just curious, why do you want 2.0? I personally find
form.bindFromRequest() useful and can't seem to notice anything better
--
You received this message because you are subscribed to the Google Groups "play-framework" group.
To view this discussion on the web visit https://groups.google.com/d/msg/play-framework/-/TH03Ggm1nSYJ.
To post to this group, send email to play-fr...@googlegroups.com.
To unsubscribe from this group, send email to play-framewor...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/play-framework?hl=en.
It'll probably make it in a month, but you really need to factor in the maturity when your do your planning. My team won't be developing on Play2, so it won't get as much rigorous test as Japid1.
2012/3/22 Andy <selfor...@gmail.com>
Any rough estimate on timeline? I'll be starting a new project in a
month or so, will Japid be available by then?
--
You received this message because you are subscribed to the Google Groups "play-framework" group.
To post to this group, send email to play-framework@googlegroups.com.
To unsubscribe from this group, send email to play-framework+unsubscribe@googlegroups.com.
--
You received this message because you are subscribed to the Google Groups "play-framework" group.
To view this discussion on the web visit https://groups.google.com/d/msg/play-framework/-/h1euVVupI_cJ.
Hi Rajesh,I am not trying to clone Japid by creating Rythm. Instead I learn from Japid and other great products including Groovy, Jamon and Velocity to create a something which better meet my own flavour. There are good things I like in Japid and there are something (NOT necessarily bad) I don't like and syntax is not the only one:* You must extend JapidController to use it.
* The render methods used in JapidController is more complicated compare to the render() methods defined in play's Controller. And I prefer to use play's way of handling named arguments.
* By using Rythm(or Groovy) I could use one Controller method to generate csv, xls and html view respectively merely based on request.format. This is not doable if I am using Japid because it doesn't integrate into Play's template render process and Japid is the only template engine you can invoke using JapidRender.
* The template parsing/compilation process. You are forced to run a command line tool to compile the template at prod mode. And "one must write the templates first and convert them to Java classes (manually or automatically, depending on the development environment) before they can be used in controller actions. (from Japid document)". I also don't like the java files get generated in the view(JapidViews) folder because it's hard to handle from SCM perspective. As the contrast Rythm cache bytecode and java source in the tmp/rythm folder.
* Error reporting. Japid report compilation error in the Java code instead of template code.
* Rythm syntax is simpler. E.g.** invoke tag; japid: `t tagName(args1,...) rythm: @tagName(args1,...)** invoke action: japid: `a controllers.ControllerClass.actionMethod(...), rythm: @controllers.ControllerClass.actionMethod(...)
* Rythm core is 100% independent of Play and is easier to use in a plain Java environment.
Actually before creating Rythm I tried to write a plugin based on Japid to make it more tightly integrated with Play and I found it's very hard to do. It's also not easy to dress it another syntax cloth.Again, Rythm does not copy Japid and give it an new dress. I created it because I want something that is not presented in current products (Japid and Groovy).
2012/4/6 green <green...@gmail.com>Hi Rajesh,I am not trying to clone Japid by creating Rythm. Instead I learn from Japid and other great products including Groovy, Jamon and Velocity to create a something which better meet my own flavour. There are good things I like in Japid and there are something (NOT necessarily bad) I don't like and syntax is not the only one:* You must extend JapidController to use it.Not entirely true. The controller does not need to inherit anything if explicit linking to the view is used.
* The render methods used in JapidController is more complicated compare to the render() methods defined in play's Controller. And I prefer to use play's way of handling named arguments.RenderJapid( ) is all you need. The others are for extra.
* By using Rythm(or Groovy) I could use one Controller method to generate csv, xls and html view respectively merely based on request.format. This is not doable if I am using Japid because it doesn't integrate into Play's template render process and Japid is the only template engine you can invoke using JapidRender.Content negotiation is always supported for xml, json, js, css, txt, html, etc. The classic render() is still there to serve Groovy templates.
* The template parsing/compilation process. You are forced to run a command line tool to compile the template at prod mode. And "one must write the templates first and convert them to Java classes (manually or automatically, depending on the development environment) before they can be used in controller actions. (from Japid document)". I also don't like the java files get generated in the view(JapidViews) folder because it's hard to handle from SCM perspective. As the contrast Rythm cache bytecode and java source in the tmp/rythm folder.The templates are compiled automatically when the app is started in PROD mode. One needs to write templates first ONLY if he/she want to link the views statically. Otherwise use whatever work flow that suits. One can configure SCM to ignore these Java artifacts like we do. Having them side-by-side makes navigation a lot easier.
* Error reporting. Japid report compilation error in the Java code instead of template code.My fork of Play (https://github.com/branaway/play) takes care of the pretty error. You were right. I should have made it available by itself.* Rythm syntax is simpler. E.g.** invoke tag; japid: `t tagName(args1,...) rythm: @tagName(args1,...)** invoke action: japid: `a controllers.ControllerClass.actionMethod(...), rythm: @controllers.ControllerClass.actionMethod(...)So there is one character difference and I find it helps remind code readers of the semantics: is it calling an imported static method, a method from super class, a tag or a controller action?
* Rythm core is 100% independent of Play and is easier to use in a plain Java environment.Use Japid as a generic template engine:Actually before creating Rythm I tried to write a plugin based on Japid to make it more tightly integrated with Play and I found it's very hard to do. It's also not easy to dress it another syntax cloth.Again, Rythm does not copy Japid and give it an new dress. I created it because I want something that is not presented in current products (Japid and Groovy).Innovations are always welcome.
* By using Rythm(or Groovy) I could use one Controller method to generate csv, xls and html view respectively merely based on request.format. This is not doable if I am using Japid because it doesn't integrate into Play's template render process and Japid is the only template engine you can invoke using JapidRender.Content negotiation is always supported for xml, json, js, css, txt, html, etc. The classic render() is still there to serve Groovy templates.
* Rythm syntax is simpler. E.g.** invoke tag; japid: `t tagName(args1,...) rythm: @tagName(args1,...)** invoke action: japid: `a controllers.ControllerClass.actionMethod(...), rythm: @controllers.ControllerClass.actionMethod(...)So there is one character difference and I find it helps remind code readers of the semantics: is it calling an imported static method, a method from super class, a tag or a controller action?From my understanding, calling tag, controller action, a static or dynamic methods are essentially the the same thing: you are calling some function defined some where in the source code and get the render result of that function. Namespace is enough to distinguish one from the other, do we really need to involve additional language elements to differentiate them?
2012/4/7 green <green...@gmail.com>* By using Rythm(or Groovy) I could use one Controller method to generate csv, xls and html view respectively merely based on request.format. This is not doable if I am using Japid because it doesn't integrate into Play's template render process and Japid is the only template engine you can invoke using JapidRender.Content negotiation is always supported for xml, json, js, css, txt, html, etc. The classic render() is still there to serve Groovy templates.That's what I meant. The proper template was selected automatically based on the mime-type. No big if/else.
* Rythm syntax is simpler. E.g.** invoke tag; japid: `t tagName(args1,...) rythm: @tagName(args1,...)** invoke action: japid: `a controllers.ControllerClass.actionMethod(...), rythm: @controllers.ControllerClass.actionMethod(...)So there is one character difference and I find it helps remind code readers of the semantics: is it calling an imported static method, a method from super class, a tag or a controller action?From my understanding, calling tag, controller action, a static or dynamic methods are essentially the the same thing: you are calling some function defined some where in the source code and get the render result of that function. Namespace is enough to distinguish one from the other, do we really need to involve additional language elements to differentiate them?Anything to help the readers to understand your code is a positive thing. If you import the package/class in the front and not using the full qualified name (can you really do this at all?) in invoking tags/actions, readers will lose track. I think Rythm has some rules for users to remember to resolve naming conflicts caused by using the same grammar to invoke different things.