对于何时使用脚本,觉得一般做法如下:非成型模块使用,非关键模块使用,原型实现模块使用,无极端性能要求的模块使用。这里要提一点,好动西不是设计出来的是改造出来的,设计是给下次改造用的。因为事实上不断变化的东西无法预先提供完美的设计。对于一些新的未成熟的模块,由于需求、设计、甚至实现本身修改平凡,需要能够提供一套适应小步快走的工具。web层是最典型的情况。
那么具体选择何种脚本,如何用脚本实现action甚至其他层面的东西呢?action层(甚至包括view层)其实最好的就是javascript。浏览器逻辑都是他为何不用他呢?专注于web开发就应该以js为主。以后web开发者只要js就够了,前后台自己全部负责。java开发人员提供基础库与框架,或者对于复杂的后台分布式管控提供后台程序。java人员就是java人员不需要专注于界面。web和前端开发就是界面相关。分工明确不是更好。哎~,j2ee将jsp实现提供一个js版本就完美了。nodejs?很像吧? nodejs能充分利用java的后台各种库么? java和专注于可模块对象化的开发。js专注于需求的变化以及模块的动态整合,把自己当胶水吧。如果这样只要符合这种情况,不是web系统都可以这么干。
当然,需要强调一点,js实现的部分在功能固化以后逐步改造成java实现也是必要的。这也是演进,重构的特征。有些特定场合甚至将java实现整个改造成native实现也许才是需求人目标。这时候考虑的就不是功能而是性能了。也许,那是遥远的未来,软件就像吸尘器、电视这些电器设备那样有标准功能、标准接口、表准用电量的时代。那是同质化竞争时代。