经常会看到说 java ee 是企业级的。没听说 ror 是企业级的。但是明明也有用 ror 做出很牛逼应用的企业的。那这企业级到底是啥。。。曾经还听过这样一个吐槽,说一个不怎么懂技术的项目经理拒绝了程序员提议使用 python,原因就是不够企业级,非得用 java。。。其实需求用这种动态的语言配上轻量级框架就足够了。。。放在瞎扯淡里面,就是跟大家一起扯扯,这个所谓的企业级是神马东西,难道还存在着非得用 javaee 而 ruby 不能实现或者相应效率不如的需求嘛?
如果是架构模式的话参见http://book.douban.com/subject/4826290/ 似乎就是像电信,银行这些业务逻辑很复杂的软件系统 RoR 的 ActiveRecord 就是根据这这本书的一个模式命名的
企业级技术,通俗的将就是有自我验证的,比如 Ruby 同学号称证明哥德巴赫猜想的引证,世界上没几个能懂点的,能懂的分歧也比较大,火气也大,所以没人鸟 Ruby 同学,这个时候就需要逆向证明 R 同学的证明是对的,而且最好都是充分必要的证明。
一般稳定性,或者鲁棒性实验或者证明,需要一定的资源,又假设 Py 基金没有企业级的强烈需求,所以还不如把钱花到开会上去,找个地方洗洗睡了。最近 R 语言很火爆,国际会议,开源项目,风风火火的,可是到了真出数据给 CEO 董事会的时候,还是乖乖用正版 SAS...
为啥关键时刻要用 SAS...人家是久经考验的战士,历史证明了这个软件是可靠的,你看谷歌的福利制度一开始都是抄袭 SAS 的,所以证明了他狠企业级。。。另一方面,和国外的信托文化有关,一般付费的东西,就会有保障,会有人负责,所以免费的东西,就很难有信服力了。
马克搞非死不可为啥用微软系统,就很明白了吧,当时谁能玩这么大的流量啊,sun 技术范太牛逼肯定不靠谱,IBM 看不上自己,红帽更新太慢,甲骨文律师太牛逼。没错,这小子贼聪明,逮了微软,这钱花的值啊~
参加过本地一次 QClub 活动,主题说的是有关于敏捷开发方面的东西。 有个人做的主题分享说,他们给客户开发产品本来打算是用 ruby on rails 来弄的,因为也想来一把敏捷开发嘛,迭代来得还是比较快的。 结果客户说不行,你就要给我用 java 来做这个产品,结果他们就换到play framework去了。。。
理解中的其实所谓的企业级开发,基本都是在之前的系统添加模块或者就是维护之前的系统,重要的是不出错,出的报表数据正确,工数统计没问题
再说一个公司沉淀下来的东西都经过了那么多年的考验都是可用的,再换一个玩意弄一是浪费钱二是怕不稳定(这才是关键),而且那种工作流(workflow)之类的东东真不是说替换就能替换掉的。。。
PS:rails 的工作流(workflow)的项目能否给提供一下?
有企业肯出 100 万以上买你的软件和服务,你就可以认为你达到了企业级,所以企业级是一个比较高的门槛,你需要一家公司,能够开出 100 万增值税发票的公司,成立这么家公司难度很大,当然找到肯出 100 万买你软件的企业难度更大……
桌面用的软件比如 photoshop 之类的应该算是 Enterprise 呢还是 Internet 呢
basecamp 之类的它又算是 Enterprise 呢还是 Internet 呢
我的看法,企业在用就是企业级。主流的六种都算企业级。
但是有微妙差别,银行据说是用 Java 的(请知情的证实,不知是否用.net),要求高可靠,Java 是编译型,可能要可靠些,也许是偏见和固执。
Ruby 适合于对错误不敏感的网站。
@Ryan 懂公司的技术,懂公司常用的工具套件,懂公司的各种流程,懂公司的业务知识。 你不需要多么创新甚至鼓励传统,你只要是个合格的螺丝钉。 意味着你需要知道和不同的 team 或人合作,企业级工作 (包括创新) 多数都是自上而下, 而很难自下而上。所以很多创始人被收购后选择走人,有这部分原因吧。
#29 楼 @chenge java 从来都是解释型的...c++ 才是编译型...可靠这点不靠语言是编译还是解释,java 的虚拟机写的比较好而已,其他解释型语言的虚拟机没经过太多大项目的蹂躏可能才无法称为企业级 要论可靠 erlang 无可厚非的拿第一...爱立信的电信项目 99.9999% 的在线率,那 0.000001% 还是因为工作人员不小心把电源弄断了,erlang 才是鲁棒性天下第一...OTP 里各种大牛实现好的 pattern,初学者也可以很快入手服务器开发哦...更何况还有牛叉的代码热更新...让你修 bug 都那么从容... erlang 我也只是看了一两个月入门而已,ruby-china 有 erlang 大牛的...要说企业级,erlang 才是企业级...java 只是因为招人好招,用的公司多而已...
#39 楼 @chenge 嗯,facebook 更牛逼的是把 php translate 成了 c++ http://developers.facebook.com/blog/post/2010/02/02/hiphop-for-php--move-fast/
编译和解释的界定要看宾语...
编译 = code generation, 这个 code 可以是任何代码 (源文件,字节码,机器码,数据,文本...), 编译的结果可以存在文件里,也可以存在内存里。
ruby 可以是编译器:把源文件编译成字节码 ruby 也可以是解释器:解释执行字节码
javac 是编译器:把源文件编译成类 (字节码) java 可以是解释器:解释执行字节码 java 也可以是编译器:把热的字节码编译成机器码 (JIT), 不经过汇编
只有放在可执行内存里的机器码可以直接送给 cpu, cpu 是机器码的解释器
字节码是语言设计的比较效率的中间代码表示,生成字节码不需要申请可执行内存。
汇编是一种 语言 , 基本可以 1:1 由 assembler 翻译成机器码。gcc -S
生成的就是汇编,gcc
编译 C 语言是先编译成汇编,然后调用 gas
把汇编编译成机器码。
debug 时看到的 xor %rax, %rax
之类的就是 反编译 出来的内容 (机器码 => 汇编).
常常有人分不清 强/弱类型 和 静态/动态类型 的区别... 这和有些语言卖广告时喜欢混淆视听也有关系...
这个问题,就像什么叫战略导弹一样,美国人把能打到美国本土的导弹叫战略导弹,而不是人们一般说的射程或者是否携带核弹头,如果是中国战略导弹的定义就是要在 8000 公里左右,而是墨西哥的话,有个几百公里,对美国人也算战略导弹了,所谓企业级也就是如此哈
企业更关注自身业务需求,对软件要求可靠,和社区需求不太一样(包括非功能需求)。当然也要看什么类型企业,各有不同。
顺便废话个极端的例子吧, 做个加法生成个 txt 报表,一个程序员觉得可以用他喜欢的语言在一月内完成,报价 5w;但是企业预算出 100w,要求确保不出任何意外,因为一出错公司破产。
那美国那个火星车上的软件可以算太空级,还有卫星上面好多软件都用 c 和 lisp 写的,那是不是说可以用 c 和 lisp 来鄙视下 java 的企业级。。。
@ch3n 当年卖数据中心的微软老哥正式吹的,早年微软专门组了一票大侠,对付 ring0 级的数据中心问题。一般的 ring0 级的问题都是当班花旦搞定,搞不定不睡觉哦。fb 的工程师仍的 sticks 太多了太频了。。。这种事儿都是江湖传闻,呵呵。
#1 楼 @blacktulip Java 真心很难招人的...
对比一下代码就没人学 Java 了...
https://code.google.com/p/jdiameter/source/browse/examples/guide1/src/main/ https://github.com/erlang/otp/tree/maint/lib/diameter/examples
本来以为这个论坛里的人都应该不错,喜欢 ruby 是好事,但是也不要黑 Java,看了一些人说的话真的是很能黑。。。
Java 和 Ruby 虽说有重叠的地方,有可能重叠的地方 Ruby 的优势更大一些,但是对于企业集成,企业的后台项目 Java/J2EE 的优势不仅仅是 Ruby/Rails 一个语言和框架就可以取代的,任何其他语言和框架都很难被取代。。。
有可能大家接触更多的一些是 startup 之类的项目,Ruby 会有优势而言,但是真正进了上千人规模的公司,业务复杂度,还有各个应用之间的交互和集成,Ruby 是干不了的。。。
另外 Grails 在和 Java 项目的集成上优势更大一些,可以共享项目的后台 Model 模块,可 Rails 就很难做到。
鄙视提到两门语言的对比的时候就上来喷的人
企业级应该是类库的完善性、安全性、稳定性以及对软硬件的兼容性来说的吧。 以及解决方案的多样性等等。 java 在一些方面的解决方案是要比 ruby 要多。
#59 楼 @bhuztez 最起码比起 Ruby,Java 还是很好招的,要淘到靠谱的也不难,我们公司做 rails 也做 java,这点对比上很明显。 #64 楼 @tarzansos 的确如此,ruby 在这方面的确做的不够。
不过我还是喜欢 rails,我讨厌编译,做上改动需要等待太久。还是有开发时的 reload,有时候感觉还没有重新启动一下服务快。
企业级,就是一大堆 2B,喝着白开水,啃着面包,半夜 12 点了还在瞎忙活。
就为了 recoding 设计书上那一丝丝的小改动。
100000000000.times { recoding and test and no return }
其实比用对比 java。企业级根据企业需求来,有些需求根本不是 ruby 或者 java 能够染指的,有些用 c 或者 c++ 也是不敢的,根据企业要求来做适合企业用的,才是企业级。根据技术来做程序员喜欢的,那是另外一回事。
ee 是企业级的 java 和企业级没有关系。 主要是说 ee 是企业级的意思。 一般来说,出去特殊情况,任何语言都可以实现企业级,没有必要较真吧。 请注意我的前提。
“企业级”是技术界的政客发明的政治术语,不用太在意。当你的老板或客户不懂技术时,你就可以说你开发的系统时企业级,你的技术也是企业级,因此也需要企业级的预算。