粗算下来,作java开发也有6、7年了,期间也短暂搞过其他技术(vb、.net、office),但还总体上是以java为主不断坚持着。。。
直到07年被《程序员》杂志和javaeye“忽悠”,到ROR的世界游历了一番(做了1.5个项目),今天刚好碰到这篇博客http://morris.iteye.com/blog/198982,
有感而发,说点自己的看法:
从架构思想上看:
JavaEE的(起码早期的)思想一直是 用大型架构 建设 错综复杂的商业系统(注意这些系统中web只是所用的众多技术中的一部分),导致他十分强调分层,开发部署比较繁重。
这个思想根深蒂固,几乎影响了所有java框架的设计。甚至所谓的轻量级框架也是如此。
(似乎成了企业级技术的特点,看看现在火热的SOA,其复杂和繁重程度甚至比JavaEE更严重)。
ROR显然没这么大的野心,它要解决的只是如何快速搭建好一个网站(因此会更注重如何多多利用web标准:html、css、javascript),他在架构上的考虑就只是MVC,能保持一个好的程序结构即可,根本无须分层。
(与JavaEE这么多年一直拥抱SOA对比,ROR到了2.0更是抛弃了webservice,转到更加简洁的REST了)
但是sun没想到实际中大多数人开发的东西没那么复杂,反倒更强调快速开发、快速适应变化,因此ROR在java社区里面引起很大反思。
(在中国这个情况更加普遍,系统不复杂、倒是需求变化快。。。)
(在网站制作领域一直都是喜欢用脚本语言,可以做到快速编码、快速部署、快速变化。PHP就是一个例子,只不过PHP结构实在太差,java们一直看不上眼,而ROR实现的MVC却相当正统、严密,框架结构甚至比流行的java框架如ssh作的更完美,这自然引起了java们的广泛兴趣)
看起来,ROR就像一枚银弹,尤其是对咱们这些中国的开发人员
然而实际作起来,你会发现:
1)从语言环境到应用框架都不熟悉,需要不短的一段时间学习和准备
(对于那些看了几天 文档/视频/教程 就敢轮胳膊开干,还说入门简单学习曲线低的,我真要骂人了:不是人您就别在人堆里面瞎炫耀了)
2)动态语言真的很动态,没有编译过程,你可能会犯下一些低级错误,而具体到Rails框架中,因为使用了各种动态的代码生成技术,导致要想搞清楚其中一些bug,可能需要你花费几个小时进行跟踪查找。
3)Rails中的View是基于html的模板技术,这跟jsp类似,你需要自己控制自己,因为没人会阻止你在里面写业务代码。
4)ruby之前应用的还比较少,一些常见解决方案还非常不完善(比如:全文检索,目前最好的ferret,还是有bug经常导致rails意外退出)。
5)Rails的各种插件比较多,但是质量不齐,有些看起来很cool,但是无法深入定制(比如:ROR书里面提到的streamlined,就有点像玩具),具体的调研和选择代价比较大。
6)有时碰到Rails插件的bug或功能缺陷,如果你自己直接改的话,之后的插件升级版本管理上似乎会有点麻烦,需要你手工合并。
7)可能你要自己解决部署后的源代码保护问题,而这个问题对于产品开发无疑是最重要的。
8)动态语言的全面掌握需要比静态语言花费更多时间精力。
呵呵,泼了这么多凉水,其实是想说明一点:要认真地对待ROR技术,不要被一些宣传所蒙蔽。
基本上,在没有熟练掌握ROR、而又需要深入开发的时候,ROR带来的好处(代码量少、开发修改部署快),和他带来的各种问题几乎可以互相抵消,千万别以为能省多少时间。
但是从长远看,代码量少还是非常吸引人的,想象一下,同样的业务逻辑代码,10万行和100万行那个更容易维护?
偶然和一个作过ROR的开发人员有过一次交流,发现大家目前的想法有点相似,ROR更适合少量的高手合作开发,或者私人接活。
普通的团队开发似乎还需要大量探索。
分享到:
相关推荐
语言程序设计资料:javaEE-基于Java_EE的仓库管理系统.doc
本书系统地介绍Java EE的体系结构、JSP与Servlet在体系结构中的地位、应用服务器和主流开发工具,主要内容包括Web应用框架、Servlet、JSP、会话状态、EL和JSTL、监听器、过滤器、数据库、MVC等。 本书讲解详细且通俗...
JavaEE课程设计:票据管理系统源码 JavaEE课程设计:票据管理系统源码 JavaEE课程设计:票据管理系统源码 JavaEE课程设计:票据管理系统源码 JavaEE课程设计:票据管理系统源码 JavaEE课程设计:票据管理系统...
javaee官方英文版api文档,zip格式。需要的可以转换为chm格式
JavaEE JavaEE 项目
NULL 博文链接:https://aijezdm915.iteye.com/blog/1060874
Tomcat的JavaEE示例和软件带有Java Servlet和JSP的存储库软件IDE:Eclipse火星服务器:tomcat 8 因此:Debian Jessie指数你好,世界这个例子你需要配置web.xmlFormServlet的在这个例子中,您需要做一个新的Form和新...
JavaEE6规范中文版,一共13章: JavaEE6规范中文版,一共13章: JavaEE6规范中文版,一共13章: JavaEE6规范中文版,一共13章:
j2ee-exp:JavaEE课程实验
JavaEE2014 数据库中令牌存储的 MySQL 脚本:CREATE TABLE oauth_access_token ( token_id varchar(256) DEFAULT NULL, token blob, authentication_id varchar(256) DEFAULT NULL, user_name varchar(256) DEFAULT...
javaee描述符 JavaEE描述符
JavaEE JavaEE实战
JavaEE_demo JavaEE课堂小demo 实验一、Action的实现与配置() 1. 分别创建名为actionApp1和actionApp2的web应用。两个web应用中都包含以下三个jsp页面: * login.jsp:用户登录页面,设为web应用的首页。页面中应该...
ComprasOnline---VRaptor:JavaEE协同开发项目和框架vRaptor
Java javaEE 应用程序
javaee_work_ssm_sys:javaEE课建车票管理系统ssm框架先前源代码仓库
JavaEE项目开发环境搭建以及配置:JDK1.7+破解的MyEclipse10+MySql5.5+Tomcat7.0
Spring 3.x:权威开发指南:实施JavaEE6的利器 罗时飞著
管理系统源码完整商业级代码,语言:JavaEE 最完整的商业级代码
java运行依赖jar包