Trails: .8 Released

Discussions

News: Trails: .8 Released

  1. Trails: .8 Released (21 messages)

    Trails 0.8 has been released. Trails is a domain driven development framework that aims to greatly simplify java web development. An article explaining how to use the more advanced features has been published in conjunction with this release.

    Trails is not port of the Ruby on Rails framework but instead borrows from some of its better ideas and brings them into the Java space. The list of features includes;

    • Automatic production of a fully functional web UI with database persistence for your domain model
    • Customization via annotations
    • Custom pages (Edit, List, and Search)
    • Property level customization (explained in article)
    • Fully functional UI for relationships
      • Many to one
      • One to many
      • Many to many
    • Validation annotations
    • Uses Spring, Hibernate, and Tapestry
    Is this cross pollination from Ruby to Java a move in the right direction or should projects looking for these features just use Ruby and Rails?

    Threaded Messages (21)

  2. Trails: .8 Released[ Go to top ]

    Very interesting. I can imagine jsr220 has been pretty helpful for efforts of this kind (speaking as someone who has tried to do something similar in the past).

    Quick question though: how pluggable is the web framework layer? Is moving to eg. Webwork or Struts out of the question?

    Keep up the good work though!

    Kit
  3. Trails: .8 Released[ Go to top ]

    how pluggable is the web framework layer? Is moving to eg. Webwork or Struts out of the question?Keep up the good work though!Kit

    -1

    In my opinion the whole point of this kind of product is glueing together frameworks thus offering a global tool for starting and completing work faster. Add the usual "what framework do I use for presentation? what for persistence? what option as a building tool? what if I could plug-in another aspect-oriented implementation?" and you've wasted the effort, losing its main goal, i.e. simplicity, and a quick start.
  4. Trails: .8 Released[ Go to top ]

    how pluggable is the web framework layer? Is moving to eg. Webwork or Struts out of the question?Keep up the good work though!Kit
    -1In my opinion the whole point of this kind of product is glueing together frameworks thus offering a global tool for starting and completing work faster. Add the usual "what framework do I use for presentation? what for persistence? what option as a building tool? what if I could plug-in another aspect-oriented implementation?" and you've wasted the effort, losing its main goal, i.e. simplicity, and a quick start.

    That would be true if I were changing frameworks with every project. My question was whether I would be tied to Tapestry for ever. Which matters because the capabilities of any web app I might create using Trails in the future are out of my hands.

    Actually, it's not a big deal for me. Tapestry is an excellent choice. However there being no standard around web frameworks like jsr220 for persistence, it's just that the decision is made by Trails, not me.

    Kit
  5. Trails: .8 Released[ Go to top ]

    However there being no standard around web frameworks like jsr220 for persistence, it's just that the decision is made by Trails, not me.Kit

    There is a standard for web frameworks, it's called JSF.
  6. Trails: .8 Released[ Go to top ]

    However there being no standard around web frameworks like jsr220 for persistence, it's just that the decision is made by Trails, not me.Kit
    There is a standard for web frameworks, it's called JSF.

    Perhaps he meant to <em>widely accepted</em> standard?

    Has anyone noticed anything odd in the TSS editorial policy? I've very happy to see a beta (?) release of Trails get on the front page, but a major release of HiveMind (the 1.1 release) got buried under "industry news". The estabilished policy was initial release and final releases on the front page and HiveMind 1.1 was a final release, but that policy now seems to be enforced unevenly.
  7. Trails: .8 Released[ Go to top ]

    Has anyone noticed anything odd in the TSS editorial policy? I've very happy to see a beta (?) release of Trails get on the front page, but a major release of HiveMind (the 1.1 release) got buried under "industry news". The estabilished policy was initial release and final releases on the front page and HiveMind 1.1 was a final release, but that policy now seems to be enforced unevenly.
    If you want to make it to the front page, your best bet is to make sure that it will create some pointless controversy, or to claim that it somehow "supports" AJAX :-)
  8. Incidentally, the original message I posted was a good bit different that the final post here. In addition to improving the readability of my copy, the last paragraph about "Should I use Java or Rails?" was added. As far as the no annoucements about betas thing I can't really speak to it, other than to say that even though it is a <1.0 release, this is the first release in several months and has a java.net article to go with it, so that makes it (IMO) significant.

    Which is not at all to say the that Hivemind 1.1 release is not significant, Howard :)
  9. Incidentally, the original message I posted was a good bit different that the final post here.

    Chris, I edited the copy and I added the question. I personally think that the cross-pollination question is quite interesting. If we all are constantly using Java then we run the danger of getting set in our ways. It is the cross pollination of ideas that creates interesting and useful things. The question is not really intended to provoke a response but more reflects what a question that I had when I was researching the topic before releasing this posting.

    In many cases, 1.0, 0.9, 2.0.1.117 release numbers seem very arbritary markers of a products progress. My opinion, which may or may not fall in line with TSS editorial guidelines, is that if the release significantly different then the previous one, then it should be noted. IMHO this release did offer enough of a difference and as you pointed out was also topical.
  10. Incidentally, the original message I posted was a good bit different that the final post here.
    Chris, I edited the copy and I added the question. I personally think that the cross-pollination question is quite interesting. If we all are constantly using Java then we run the danger of getting set in our ways. It is the cross pollination of ideas that creates interesting and useful things. The question is not really intended to provoke a response but more reflects what a question that I had when I was researching the topic before releasing this posting.

    It seems like it's quite common practise for TSS editors to not only edit for readability, but to materially alter posts. When a post is attributed to someone who is not a TSS editor it is very difficult to tell what was said by the original poster vs. what the editor introduced. Could not the TSS editors adopt a policy of inserting [Editor:] or some such notation to highlight areas where the substance or meaning of the post was altered?

    -Tim Fennell
    Stripes: Because web development should just be easier.
  11. Incidentally, the original message I posted was a good bit different that the final post here.
    Chris, I edited the copy and I added the question. I personally think that the cross-pollination question is quite interesting. If we all are constantly using Java then we run the danger of getting set in our ways. It is the cross pollination of ideas that creates interesting and useful things. The question is not really intended to provoke a response but more reflects what a question that I had when I was researching the topic before releasing this posting.
    It seems like it's quite common practise for TSS editors to not only edit for readability, but to materially alter posts. When a post is attributed to someone who is not a TSS editor it is very difficult to tell what was said by the original poster vs. what the editor introduced. Could not the TSS editors adopt a policy of inserting [Editor:] or some such notation to highlight areas where the substance or meaning of the post was altered?-Tim FennellStripes: Because web development should just be easier.

    Tim, IMO this is a fair comment. This isn't really the forum to discuss this particular topic as the focus really should be on the Trails framework. I'm going to look into a forum where this conversation is more approprate.
  12. Struts[ Go to top ]

    Seems like according to the blog, only component frameworks can be supported, that means Struts is out of the game, for now.
    Probably Tapestry now and JSF in a future release will be the supported rendering technologies.
  13. Looks good[ Go to top ]

    Looks good. Will try it out to get hooked. And I totally agree with the choice of frameworks/products. If only we can add AJAX to the mix in a sensible way.
  14. Ajax via Tacos[ Go to top ]

    The Tacos project has already produced working AJAX components for Tapestry. I have a Trails example that uses them checked into CVS. Should also be able to see it online soon.
  15. Trails: .8 Released[ Go to top ]

    Looks good. I only had time to read the 2 java.net articles while commuting to work, but I intend to have a deep look at it "soon".
    I am uncertain of the scalability of this kind of approach, but it certainly is a godsense for "quick'n'dirty" administrative apps.

    Cédrik
    MessAdmin, HttpSession administration made easy.
  16. Trails questions[ Go to top ]

    I just had time to look at the java.net article about the Person class, and it's a compelling introduction to Trails. And I started thinking of "how would I do this" questions, and I didn't see a user manual, so I'm hoping someone can provide answers to questions like:

    1. The form labels in the example are based on simple one-word property names. What if I have a property name such as "maxHeight"? Will Trails show "MaxHeight" or "Max Height"? Could I get it to show "Maximum Height"? Support for i18n would be the follow-up to this.

    2. What if I have security restrictions such that I cannot show certain properties to certain users? Or some properties should just be read-only in the form? Where would this logic go?

    3. Let's say I want to do something when a person is saved, like maybe add an entry to an audit log or send an email. Where does this logic go? If the answer is "In the domain object", how would I get a reference to the object that I need for doing the work, like a MailSender? Can it be injected ala Spring?

    Thanks,
    Rob
  17. Trails questions[ Go to top ]

    Rob,

    Thanks, these are great questions.

    1. Trails will auotomatically uncamelcase your property names to come up with a label. If you want to override the label, you can use the Trails @PropertyDescriptor annotation do do so. Support for I18N is on our to-do list.

    2. You can mark a field as read only using the @PropertyDescriptor annotaion, security is on my list of features for 1.0

    3. Auditing might be a great case for an AOP. You could use either Spring AOP or AspectJ, both are used in Trails. You could also do it in the domain object if that was more appropriate to your application. I do not yet have a general way to do injection on domain objects. My guess I would use an AspectJ aspect on constructors to inject Spring beans on properties marked with an annotation.
  18. Big Mistake[ Go to top ]

    The idea of CRUD operations by each class using properties is just wrong. Creating CRUD operations by class is a table-like approach, and properties methods act as data constraints, then you’ll have to create a “validate” method (equivalent to triggers) to do more complex validations.
    You should create/generate a form/presentation component for each method/constructor of the class.
    The Naked Objects project has very interesting things too, but they have the same problem. I think this is the result of too many years of use of RDBMS and stupid data binding concepts of VB.
    Sorry, I would say interesting but no for real life projects.
  19. Re: Big Mistake[ Go to top ]

    I would argue that generating screens to interact with your object model (this is what Trails and NO do) is very different that generating CRUD screens based on tables. With an O/R framework, you are free to have your object model differ from your table structure. With Hibernate 3 especially you have considerable freedom in this regard. My belief is that screens to interact with a domain model is a useful starting point for many applications. With Trails, you are free to go where you want from that starting point. Even if you do not end up keeping any of the default Trails pages by the end of the project, IMO having all the pieces (Spring, Hibernate, Tapestry) integrated is still useful.
  20. Re: Big Mistake[ Go to top ]

    Yes, I agree there are some be benefits in doing CRUD on classes over tables. However you still use a constrained version of objects that only can do 4 operations (CRUD). How I can take advantages of having a good OO model with well designed methods, if the UI only use properties?

    For C(reate) use the constructor, for U(pdate) and D(elete) use any other method, or any other operations. Use method parameters instead of using properties.

    Besides this, I think you've done good job integrating those usefull open source tools.
  21. I just now reread this post and it turns out there is a major error I did not catch when the TSS Editor changed my post. It says "Source code generated prior to runtime". Trails does NOT generate source code. This is a very important feature of it to me. Unfortunately, I didn't see this until now so a lot of people have already seen it and gotten a totally wrong idea. TSS guys, PLEASE PLEASE fix the main post to remove this error.

    I think I need to amend my earlier comment to a more direct complaint: It is not acceptable for an editor to change someone else's post (especially when you make it wrong!) and then attribute it to them!! This policy needs to change. The original poster has to have a say in what gets posted in his/her name.
  22. Fixed.[ Go to top ]

    Thanks to the TSS editors for fixing the post to remove the erroneous statement.