`
floating
  • 浏览: 80761 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

php,rails和java的有趣比较

阅读更多
原文来自:
http://blog.thinkphp.de/archives/170-Keynote-of-Tim-Bray-some-interesting-comparison-between-PHP,-Rails-and-Java.html
觉得很有趣。首先有趣的是作者的身份,Tim Bray是sun公司负责web技术的主管,但是在比较中丝毫看不出作者对Java偏袒;其次是作者的结论,正如在回帖中有人提及的那样,“Java赢在开发工具,却输在开发效率”。这可真有是个绝妙的讽刺!第三点是这个贴子在原出处和TSS上都得到了激烈的讨论。看来随着RoR的出现和逐渐成熟,一次类似当年Java出现时的语言优劣的争执又将无可避免的上演了。
我们自己应该以一个什么样的态度来迎接这次变革呢?其实归根结底,希望用某种编程语言来大幅度的降低软件开发的复杂度是不切实际的。动态语言在灵活性、初期的开发效率(之所以强调初期,因为个人认为动态语言的灵活性在提高开发效率的同时会弱化采用工具或者其他控制手段保证代码质量的可能。)有着先天的优势;但是像Java或者C#这样强类型的准静态语言(Java和C#都已经并且将越来越多的加入很多有意义的动态语言的特征,比如Java6对脚本语言的支持)在实现复杂的业务逻辑、开发大型商业系统、以及那些生命周期很长的应用中也有着非常强的优势。
记得七八年前,自己开始从一个C++的熟练使用者向Java语言迁移时,刚开始的确对Java语言的简单(比起C++要命的灵活性)很欣赏,因为在一个大型项目里最重要的是代码的健壮性。但是随着Java的越来越成熟,使得Java越来越复杂,而且和Java相关的很多概念也越来越超越Java语言本身。这无疑大大的增加了学习Java的成本。
再来看RoR,的确非常轻盈和简单。这得益于它对动态语言和OO特性的完美结合。但是个人认为纯粹技术上的优雅不一定会换来商业上的成功。对于软件工业来说,最重要的还是分解业务逻辑的复杂度和不确定性。毕竟,正如我的一个同事所说的那样,“无论用任何语言,初期的开发成本我们还是投入的起的。”呵呵,据他说,他经历的项目在初期的开发上占的成本大概只占到整个项目开发成本的1/6到1/5。
注:初期开发成本,是指一个项目中,最初完成开发人员视角的系统功能时所花费的成本。
分享到:
评论
2 楼 robbin 2006-11-12  
在我开发JavaEye2.0网站之前,我其实是很担心采用ruby on rails的技术风险的。三个资深的Java程序员为什么要放弃这么拿手的Java,偏偏要采用完全没有经验的RoR呢?

知道我是怎么说服我自己和我的团队的吗?

我说我们现在不懂RoR,如果我们现在用RoR开发很可能要付出比Java更长的时间,走更多的弯路,冒更多的风险,但是从长远来看,采用RoR我们会大幅度降低网站以后的维护和升级的成本。所以采用RoR我们就是牺牲短期利益换取长期利益,这个风险我们值得去冒!就这样我们毅然采用了RoR,事实证明,不但网站上线以后的维护和升级成本大幅度降低,连初始开发周期都大大缩短了。

RoR的意义不光在于开发速度快,这只是一方面,更重要的是连维护成本都跟着大幅度降低,这才是最有意义的。

我觉得有些人自己也没有用过RoR,就贸然揣测RoR的缺点,得出某些结论还是挺轻率的。

1 楼 LucasLee 2006-11-12  
很赞同楼主的意见。

初期成本只是大项目的一小部分,但对小项目会更有意义。

因此,每种语言的优劣势,一定要清楚,而且要因地制宜的使用它。

相关推荐

    java开源包4

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包6

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包101

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包9

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包5

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包8

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包10

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包3

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包1

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    Java资源包01

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    JAVA上百实例源码以及开源项目源代码

    Java数组倒置 简单 Java图片加水印,支持旋转和透明度设置 摘要:Java源码,文件操作,图片水印 util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印...

    java开源包2

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包11

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包7

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    用PHP和XML进行iPhone开发教程

    iPhone的软件开发包(SDK)基于标准的Dynamic HTML (DHTML),这意味着开发者可以利用他们熟悉的前端技术(如HTML、CSS、Ajax)以及后端技术(如PHP、Ruby on Rails、Java)来开发应用。 #### 三、案例分析:构建...

    Laragon:适用于现代应用程序的强大工具:Django,Rails,Laravel,Node,Go,Java-开源

    Laragon使编码更有趣,更容易。 即时设置-极其快速,轻巧,直观且功能强大的通用开发环境,可用于创建... 在MySQL,PostgreSQL,MongoDB,Memcached,Redis,PHP,Ruby,Python,Node.js和Java上可移植,可靠且零操作。

    programming-challenges:我觉得有趣的编程挑战

    "programming-challenges:我觉得有趣的编程挑战"这个主题集合了一些吸引人的编程任务,旨在锻炼和提升程序员的技能。这些挑战覆盖了多种编程语言,如Java、Python、JavaScript、C++、Ruby以及PHP,这意味着你可以...

    HeadFirst全集

    8. **Rails**: 教授Ruby on Rails框架的基础和高级功能。 9. **Python**: 引导读者掌握Python编程语言的基础和进阶知识。 10. **PMP**: 提供项目管理专业资格认证(PMP)备考指南。 11. **物理**: 结合IT背景介绍物理...

    表白源码-我想你需要.7z

    1. **编程语言和框架**:这些表白源码可能涉及到常见的编程语言,如HTML、CSS、JavaScript、Python、Java或PHP等。它们也可能利用了各种前端或后端框架,如Bootstrap、React、Vue.js、Django、Ruby on Rails等,以...

Global site tag (gtag.js) - Google Analytics