更新:Tapestry 5.2已经发布,因此没有像以前看起来那样被放弃。我的经验是使用Tapestry 4,而不是5,因此您的工作量可能会有所不同。这些年来,我对Tapestry的看法发生了变化。我修改了这篇文章以反映它。
我不再像以前那样推荐Tapestry。Tapestry 5似乎是一个重大的改进,但是我对Tapestry的主要问题不是平台本身。它与背后的人在一起。
从历史上看,Tapestry的每个主要版本更新都具有极大的偏见,向后兼容,远远超出了人们的预期。这似乎是由于新编码技术或需要大量重写的技术的结合。
Howard Lewis Ship(Tapestry的主要作者)当然是一位出色的开发人员,但我不能说我很在意他对Tapestry项目的管理。Tapestry 4交付后,Tapestry 5的开发几乎立即开始。据我所知,Ship致力于这一工作,将Tapestry 4交给了其他贡献者,我认为他们不如Ship那样有能力。从Tapestry 3切换到Tapestry 4之后,我感到自己几乎被抛弃了。
当然,随着Tapestry 5的发布,Tapestry 4成为了传统产品。如果升级路径不再如此残酷,我对此不会有问题。因此,现在我们的开发团队处于一个非常令人羡慕的位置:我们可以继续使用本质上已废弃的Web平台(Tapestry 4),将其升级到Tapestry 5,或者完全放弃Tapestry,并使用另一个平台重写我们的应用程序。这些选择都不是很有吸引力。
据推测,Tapestry 5的编写是为了减少从此刻开始更新中断的可能性。页面类就是一个很好的例子:在以前的版本中,页面类是Tapestry提供的基类的后代;此类中不兼容的API更改是导致大量向后兼容性问题的原因。在Tapestry 5中,页面是POJO,可在运行时通过注释增强“魔术Tapestry仙尘”。因此,只要保持注释的约定,对Tapestry的更改将不会影响您的页面类。
如果这是正确的,那么使用Tapestry 5编写新的应用程序可能会很好。但就我个人而言,我不想再把手放在燃烧器上。