Jeff的
企业级Ruby的文章非常好,提供了很多有用的信息。但是最近的工作经历让我思考凡是加上“企业级”的东西,都不仅仅是技术的问题。
先说技术的问题。从技术角度看,“企业级”根本不是个问题:
Q: What the hell is "Enterprise Ruby" anyway?
A: Yet another 'stack' of crap so complex that any salesperson can use Steak and Strippers to
easily sell it to management thanks to the bikeshedding effect.
-- Zed Shaw (author of Mongrel) at QCon 2007
当然,其实还是有些问题的,Jeff说得很清楚了,但我想说还不够,例如:
- single sige on
- commercial support for database driver
- dababase connection pool
- scalability (Multi-Connection would be an solution, but it takes time, and it takes more time to convince client)
- performance (you can NOT say RoR beats Java for ALL kinds of application on ALL platform. We all know that for data-driven application, the impact of programming language is insignificant, it's the data-manipulations that matter.)
技术上讲,我丝毫不怀疑RoR will beat Java in ALL aspects,但就是我开头说得“企业级”的东西,不仅仅是“新企业”,不仅仅是技术:
- 已经投资买了用了WL(大到Cluster,中到App Server,小到Express)这么些年了,你叫换掉?
- 已经“培养了”(说“习惯了“更贴切)这么些WL的dev, admin了,重新学过?上哪儿培训去?
- 这JDBC连接Oracle,DB2这么些年了,你叫改用open sourced驱动?
- 这一大!帮Java甚至VB dev,你叫他们RoR去?
- 真正能谈的起”企业级计算“的企业都不在乎钱,因为钱的问题讨论企业级计算方案的都不是在做企业级计算。企业级计算关心的不仅仅是访问量,更是稳定性。银行,保险,证券。和这些企业谈论开源……需要很多:数据,数据,还是数据:
- 性能数据:用了这么些年的IBM服务器 + AIX,RoR在上边性能如何?
- 成本数据:需要多少台服务器?
退一步讲,都说LAMP好,可是能玩的起企业计算的企业(银行、保险、证券等)有几家用LAMP?
OK,共存是王道:Java继续backend + legacy system,RoR frontend + new system,但:
- Web Service。性能?
- JRuby。性能?稳定性?Scalability? commercial support?
你说怎么引入?
所以我想,企业级计算不仅仅是谁技术上优秀就一定能进企业,Java曾经的机会很难再现:一来Java的十年已经在企业扎根很深很深,二来现在的Java不会死掉。即便将来出现RoR的BEA,JBoss,看看Java替代Combo的过程和结果——google一下combo便知。而且Java不是当年的Combo。
结论只能是企业计算将会进入三分天下。没有一统江湖。
分享到:
- 2007-05-02 19:29
- 浏览 2744
- 评论(3)
- 论坛回复 / 浏览 (3 / 3655)
- 查看更多
相关推荐
前端学 Ruby:熟悉 Ruby 语法
Test Driven Development in Ruby: A Practical Introduction to TDD Using Problem and Solution Domain Analysis by Bala Paranj English | 5 Apr. 2017 | ISBN: 1484226372 | 288 Pages | PDF | 5.32 MB Learn ...
Ruby:一个基于移动设备的个人信息管理系统.pdf
p6df-Ruby目录p6df-Ruby徽章概括贡献行为守则变化用法p6df-ruby:p6df-ruby / init.zsh: p6_ruby_prompt_info() p6df :: modules :: ruby :: deps() p6df :: modules :: ruby :: home :: symlink() ...
Rust 与 Ruby:构建 API 这是 Rust 与 Ruby:构建 API 博客文章的存储库。 如何运行示例 git clone https://github.com/Sdogruyol/rust-vs-ruby Ruby Ruby版本:2.2.1 Ruby 服务器:瘦 1.6.3 框架:古巴 3.4.0 ...
"Ruby is perhaps best known as the engine powering the hugely popular Ruby on Rails web framework. However, it is an extremely powerful and versatile programming language in its own right. It focuses ...
ruby_install远程安装时出现HTTP_Response_302和404的解决办法
Docker Ruby 为Ruby映像提供构建所需的Vim,GPG和Git工具。 目录 ...docker pull bkuhlmann/ruby:latest # <= Pull latest version. docker pull bkuhlmann/ruby:0.3.0 # <= Pull specific vers
Learn the principles behind object-oriented programming and within a few chapters create a fully functional Ruby application. You'll also gain a basic understanding of many ancillary technologies such...
高山Ruby 基于Alpine linux的Ruby的极简Docker镜像。 如何使用这张图片 运行交互式Ruby Shell $ docker run -it coopermaa/alpine-ruby 这将为您提供一个交互式Ruby Shell。 运行一行Ruby脚本 $ docker run --rm ...
查看abevoelker/ruby:ruby-2.2.0 rubies/目录以查看可用的,例如abevoelker/ruby:ruby-2.2.0 。 abevoelker/ruby:latest标签应该反映最新的稳定 MRI 解释器。 一个真正的应用程序的 Dockerfile 应该从这个镜像继承...
和,原生 ruby 命令 ruby: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), stripped截屏如何构建按照 构建 android-ruby $ cd android-ruby$ export TOP=$HOME/...
Ruby 使用 ruby-build 构建... FROM invisiblelines/ruby:2.2.0 构建镜像 $ git clone https://github.com/invisiblelines/docker-ruby.git $ cd docker-ruby $ docker build -t ruby:2.2.0 . 执照 麻省理工学院
设定值您可以通过编辑~/.atom/config.cson (在Atom菜单中选择“打开您的配置”)来配置~/.atom/config.cson -ruby: ' linter-ruby ' : # ruby path. run `which ruby` to find the path. ' rubyExecutablePath ' :...
Ruby:Ruby基本练习
全面的Ruby语言免费教程。
该gem在纯Ruby中实现syslog协议。 使用openlog(3)syscall的Syslog模块只能打开一个工具。 SyslogRuby允许您拥有任意数量的记录器。 安装 将此行添加到您的应用程序的Gemfile中: gem 'syslog_ruby' 然后执行: ...
Ruby Ruby 语言技术参考,基于约翰沃洛斯基 (johnvoloski) 准备的材料。 介绍: 约翰·沃洛斯基: @约翰沃洛斯基 github 位桶 gmail.com cwi.com.br 当前项目(RoR 工厂) Ruby历史: Yukihiro "Matz" ...
模糊Ruby 编程中最困难的部分之一就是正确地拼写所有内容。 特别是在像Ruby这样的动态类型的语言中,单个错字可能会导致严重的运行时故障。 解决该问题的传统方法包括复杂的静态分析,繁琐的代码审查以及繁重的单元...