粗算下来,作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开发的颠覆者 Spring Boot实战
读书笔记:JavaEE开发的颠覆者 Spring Boot实战
读书笔记:JavaEE 开发的颠覆者 Spring Boot 实战 代码练习
读书笔记:JavaEE开发的颠覆者 Spring Boot 实战 学习笔记已完结
JavaEE(Java Platform, Enterprise Edition)是Java平台上用于构建企业级应用的一套标准规范和API。这个"javaee_api.zip"文件包含的是JavaEE的官方英文版API文档,以ZIP格式压缩,对于开发者来说,这是一个非常重要...
JavaEE课程设计:票据管理系统源码 JavaEE课程设计:票据管理系统源码 JavaEE课程设计:票据管理系统源码 JavaEE课程设计:票据管理系统源码 JavaEE课程设计:票据管理系统源码 JavaEE课程设计:票据管理系统...
JavaEE 开发环境搭建 JavaEE 开发环境搭建是 Java 企业级开发的基础,它提供了一个完整的开发环境,让开发者可以专注于业务逻辑的开发而不是环境搭建。下面是 JavaEE 开发环境搭建的详细步骤和知识点: 1. 安装 ...
在本压缩包文件中,我们可能包含了JavaEE5的完整源码,这对于学习和理解JavaEE平台的工作原理以及进行深入开发是非常有价值的。 1. **轻量级架构**:JavaEE5引入了JSR250(Common Annotations for the Java ...
JavaEE,全称为Java Platform, ...通过学习和分析这个实例,读者可以加深对JavaEE的理解,掌握如何在实际环境中部署和运行JavaEE应用。同时,这也是一个很好的学习资源,帮助初学者将理论知识转化为实践经验。
JavaEE,全称为Java Platform, Enterprise Edition,是Java平台下的企业版,专为构建分布式、多层的企业级应用程序而设计。这个课件是由北大青鸟的资深培训教师编写的,旨在帮助学习者深入理解JavaEE的技术体系和...
10. **安全性**:JavaEE6的安全模型得到了加强,支持角色基于的安全性和认证,以及对SSL/TLS协议的强化。 提供的文件"Java EE 6规范中文版.chm"是该规范的中文版帮助文档,方便中国开发者查阅;"javaee_platform-6_...
javaEE_原生Servlet_MySql物流信息网的设计与实现(源码+数据库sql+视频齐全) 物流信息网: 物流信息网主要用于实现网上自主物流,基本功能包括:登录、查询、时效查询、价格查询、注册等。本系统结构如下: (1)...
通过学习和分析这个项目,开发者可以深入理解JavaEE的各个组件如何协同工作,以及如何在实际项目中应用这些技术来解决复杂的企业级问题。例如,可能包含一个使用Servlet和JSP实现的Web应用,EJB组件用于业务逻辑处理...
JavaEE,全称为Java Platform, Enterprise Edition,是Java技术在企业级应用开发中的核心平台,由Oracle公司...总之,JavaEE实战涵盖了从基础概念到高级特性的全面学习,对提升开发者在企业级开发领域的技能至关重要。
在复习JavaEE时,理解这些概念和技术的原理以及它们如何协同工作至关重要。通过解决模拟题,学生可以检验自己的理解,并在实际项目中应用这些知识。记得实践是检验真理的唯一标准,理论学习的同时,动手做项目将有助...
《JavaEE参考手册》是Java企业版(Java Enterprise Edition,简称JavaEE)开发的重要参考资料,它涵盖了JavaEE平台的各种技术和规范,旨在帮助开发者理解和掌握在企业级应用开发中的核心技术。JavaEE是Sun ...
JavaEE,全称为Java Platform, Enterprise Edition,是Java平台针对企业级应用开发的一个标准和框架。它提供了一系列的API和服务,使得开发者能够构建分布式、多层的企业级应用程序。JavaEE平台的主要目标是简化...
java运行依赖jar包
2. **接口与实现**:了解JavaEE规范如何通过接口定义服务,以及具体的实现类如何符合这些接口,有助于我们理解和实现自定义的服务。 3. **异常处理**:JavaEE组件通常有严谨的异常处理机制,学习这部分可以帮助我们...
它提供了一系列API和服务,使得开发者能够构建分布式、多层架构的Web应用,包括数据库连接、安全、事务处理、以及企业服务集成等核心功能。JavaEE平台基于Java SE(标准版),增加了对服务器端应用的支持,如Servlet...