Hello World
Spiga

跨平台到底是不是谎言?

2010-06-02 11:05 by 老赵, 8911 visits

前几天是个神奇的日子,博客园里咣咣咣地出现了三篇文章,都包含了“跨平台”和“谎言”这两个关键字。从Java开始谈到.NET,最后哐地一下,“跨平台”本身也变成一种谎言了。从文章内容上看,我个人觉得基本不靠谱,主要论述方式是用“气势”或是“自信”来压倒对方……呃,是“说服别人”。我不打算谈那两篇文章的内容了,许多意见我和其他人也在文章后面回复过了。我现在只想在这里简单谈谈我对“跨平台”这个问题的看法。

关于“跨平台”这个问题,我感觉还是要分“客户端”和“服务器端”两个方面来谈,或者说“表现层”或“服务层”,或者说“带界面的”和“跑服务的”……总之您明白就好。当然无论拿方面都还是要再细说的。

说到客户端程序,譬如说是一个桌面应用,那么它的跨平台也是很尴尬的东西。就说UI吧,你说不靠谱,它的确能用;但如果你说它挺好,它从视觉效果,使用体验,样式风格方面,都会和周围环境有些格格不入的感觉,无论是SwingGTK还是QT,跨平台的UI库都有这个问题。其实这也十分容易理解,一个跨平台的UI库,它的确可以做到在不同平台上出现相同的样式或风格。但是,不同的平台,如Windows,Linux或是Mac,它们的桌面环境都有着非常明显的区别。而即便是XP和Vista,Gnome或KDE,再加上各个参数细节的定制,想要在单一平台上做出合适的界面都是不太容易的事情,更何况跨平台。而且,即便一个界面的Look与周围环境一样了,那还有Feel这个说不清道不明的东西。水果公司为了保证界面美观,还提出了详细的“用户界面规范”,您说这让跨平台的UI库情何以堪?

当然,这方面还可以往细了说。例如,我觉得从某些小处来讲,跨平台的UI库还是很有市场的。比如说Silverlight或Flash,它们的应用场景一般是网页中的一小部分,关注的可能是一个“页面”而不是系统应用的体验。再往大了里说,例如您在做一个游戏,那么选择OpenGL就比DirectX更容易移植到各个平台上去(如果拿Silverlight或Flash做独立的RIA也可以算做这种情况)。在这些情况下,我觉得跨平台的UI库是很有意义的,但它们也有个特点,那就是对系统环境Look & Feel的依赖很小,它们的界面自成一体,更像是从一个空白的画布上自己重新造轮子的情况。对它们来说,“老子本来就不需要来迎合你”,那还有什么可担心的呢?

因此我对这方面的质疑,说的更具体些,可能应该是那些“带窗体的、组件形式的可复用的UI库”吧。

那么服务器端是不是就没问题了呢?反正看不到。不过我倒感觉正好相反:客户端跨平台主要问题是感官上的,对我这种非艺术家来说忍忍便罢,而服务器端的问题在我看来就是“叔可忍,婶不可忍”了。说到服务器端跑的程序,总是给人一种高性能,高可用性啊,高稳定性的感觉,总而言之对运行效果的要求很高。那么,跨平台的服务器运行机制,能否做到在各个平台上都用最佳状态工作呢?

这并不容易,因为如果要提供最高质量的服务,往往都需要利用到平台自身的特性。即便是CPU密集型应用理论上也会受到操作系统的虚拟内存管理机制的影响——更别说网络通信等IO密集型应用了。举个例子吧,Nginx是个高性能的Web服务器,主要跑在*nix环境下,也可以运行在Windows下(是直接使用Win32 API开发的,不是利用Cygwin做中间层的方法)。这看上去做到了跨平台,但是说到细节的话,Nginx在*nix下面用了高效的epollkqueue,而在Windows下使用的便是低效的select了。同样,JettyMina等框架所依赖的nio,在Java 6中已经开始使用epoll,而对Windows下IOCP的支持,只能等到尚未发布的Java 7了。要知道IOCP作为一种与epoll类似的基于事件的IO机制,早在NT 3.5 / Windows 2000就出现了,而Java 6诞生于2006年底,我相信“时间”不是问题。

所以问题就来了,在我看来“跨平台”不仅仅是“能够运行”的意思,运行的好不好也是十分重要的一点。前一段时间水果教主对Flash的指责得到了果粉们的一致拥护,许多人还补充了更多理由,其中一点便是“Flash对Mac的支持很不好,虽然能运行但是资源消耗严重”(事实的确如此),接下来就是说Flash目前的处境是自找的等等,不提。那么,比如Nginx和Mina,它们在*nix下表现良好,而跑到Windows下面如并发能力就大大折扣了,这又算是谁的问题呢?与Flash问题的看法相同,我不认为这是Windows或Mac OS的问题,问题出在跨平台的机制上。

但我也不会去责怪Nginx和Java(但我会去XX那些因此认为Windows性能差的说法),因为跨平台本来就是很不容易的事情。有时候,即使两个平台都提供了高性能的编程模型,但是它们的编程模型不同,很难用相同的模型进行统一,而强制统一带来的折衷效果可能就变成“都不是最佳”。而且即便“能够”做到在多个平台上实现最好的性能,也需要我们去投入更多的分散的精力——那么,如果我们把这些精力放在对单一平台的努力优化上面呢?因此,我也很能理解如Go语言不支持Windows的情况,用来做服务器的语言么,只支持单一平台也无可厚非。

而且说实话,我也并不是很看中“跨平台”这一点。有些人说Java比.NET好的理由是,Java能跨平台,而Linux比Windows既XX,又YY,还不要钱。但事实上,那些朋友看中的是“Java能运行在Linux上”而不是“Java能跨平台”。而即便Java只能运行在Linux上,对他们来说也就够了。对于一个正经的应用,您会动辄迁移它的运行平台吗?就我许多年前写Java的微薄经验来说,就见到过一次把应用服务器从Websphere迁移到WebLogic而导致问题不断的情况。完美的基于标准的(这是跨平台的必要条件)实现只能存在于理想之中,想想浏览器就能理解这点了。同理,我中意mono,也不会强求它多么多么追求与MS .NET实现一致,我对它的期望只是个足够好的.NET运行环境就行了(当然也不能跨得太差了)。

顺便插一句,我上面的说法可以得到一个推论:对于一个服务器应用来说,程序员在工作时的运行/调试环境要尽可能与生产环境相符。例如一个在Windows下运行调试的Java程序,但生产环境下却是部署在Linux下的做法我就感觉不靠谱。如果真因为条件限制,至少持续集成时的环境要和生产环境尽可能一致吧?同样的情况还有在Windows XP上开发ASP.NET应用程序的人,在我眼中这就是无比山寨的做法,甚至我认为对此没有怨言的程序员也是相当不专业的。

这样看来,不知道是否有朋友会认为我觉得“跨平台是谎言”——我可没这么说。我常干的事情(例如就是这次的“谎言”事件),便是跳到某个针锋相对的场景,比如.NET vs Java,左边扯扯右边拉拉,谈点楼主的问题,也反对一些楼主反对方的看法,所以千万不要以为我反对您的(部分)说法就是在赞同您的对手的(反之亦然)——总之,千万要仔细理解我的意思才好。事实上,虽然我指出了跨平台的一些问题,也可以理解“不跨平台”的做法,但是我同样认为,无论是.NET,Java在二进制层面上,还是如C++,C语言(也包括如PHP,JavaScript等)在语言层面上的跨平台,都是有足够优秀的案例,或者说是实现的。而各种跨平台的机制本身,也可以显著减少程序员对于平台的依赖,也大大简化了开发跨平台应用程序的难度。

总而言之,我认为跨平台不是谎言,它是成功的,也是必要的,虽然有缺点,但还是值得努力的——就是这样。

此外,文章里的“平台”大都是指“操作系统”,但事实上“平台”这个概念远大于此,比如CPU体系结构,浏览器等等都算是平台——因此,其实我的意愿是您可以用一种“泛化”的方式来理解文章的意思。

Creative Commons License

本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名赵劼(包含链接),具体操作方式可参考此处。如您有任何疑问或者授权方面的协商,请给我留言

Add your comment

65 条回复

  1. 链接

    韦恩卑鄙 @waynebaby 2010-06-02 11:21:36

    鄙视一下 lz在和稀泥

  2. charlee
    211.100.22.*
    链接

    charlee 2010-06-02 11:31:04

    只对 @jeffz_cn 提出的“开发环境应和生产环境一致”的观点发表一下看法。

    对于开发环境,它追求的不仅是运行的正确性,更重要的是易用性。比如一个在Unix下跑的C程序,你让一群不熟悉vi/emacs/gdb的程序员都去Unix环境下去写程序,效率肯定要大打折扣。而通行的做法是在Windows下先写好、调试好逻辑部分的代码,再放到Unix上去集成并调试。ASP.NET也一样,众所周知Windows Server显然没有XP好用吧?

    当然有条件的可以给每个程序员都准备两台机器,一台用作日常工作一台用作开发环境,但不是每个公司都有这个条件的。

    via @odacharlee

  3. 范海鹏
    131.107.0.*
    链接

    范海鹏 2010-06-02 11:34:43

    非常同意博主的分析。在这里再啰嗦两句,“谎言”这种骇人听闻的词经常被滥用,来试图支撑一些缺乏基本假设和具体环境的命题。这些命题本身实可以被称为“谎言”。

  4. _龙猫
    65.49.2.*
    链接

    _龙猫 2010-06-02 11:34:49

    在“跨平台”本身是什么标准都没定好的情况下来讨论什么是“跨平台”,本身就是很搞笑的事

  5. zhangle
    124.130.192.*
    链接

    zhangle 2010-06-02 11:45:45

    支持老赵.不过关于平台迁移的问题我想说一下

    我目前所在的公司所写的程序以前是用MFC,现在是用QT.原因就是要跨平台(一脚踏windows一脚踏linux,俗称劈腿).不管服务器端还是客户端都要跨(一套一套卖的).但是碰到的问题多多,QT一直在更新,而公司用的QT还是七八年前的,开发环境和运行环境没法一致,除非搞两套程序.

    一些问题只有在特定的服务器上才会出问题,有时候只会在HP unix,有时候在aix.而开发环境是vs2005,碰到问题就慢慢折腾吧,反正折腾死人不偿命.这也很无奈,客户是爷,爷想怎么爽就怎么伺候.

  6. 猛禽
    203.94.2.*
    链接

    猛禽 2010-06-02 11:51:07

    支持一楼意见。哈哈

  7. 老赵
    admin
    链接

    老赵 2010-06-02 11:54:29

    @charlee

    对平台开发工具不熟悉的人,就我感觉,还是属于能力不足以搞这个开发吧,工具熟悉是必须的啊。Windows XP不比Windows Server 2003好用,更别提你可以把Server 2008打扮成Vista还是Win7样了,而且对于开发环境来说更是一样的了。

  8. 老赵
    admin
    链接

    老赵 2010-06-02 11:55:23

    _龙猫: 在“跨平台”本身是什么标准都没定好的情况下来讨论什么是“跨平台”,本身就是很搞笑的事

    有些词本身也没有完全明确的说法,讨论时说清楚就行了。

  9. 链接

    miloyip 2010-06-02 12:05:24

    對於這辯題,原文並沒定義跨平台,只說「我心中的跨平台」是謊言云云,問題是否沒明白別人的承諾,就說對方是負心人呢?

    跨平台並不是說所有平台都能跑得一樣。這明顯是不可能的。就算是邏輯部份能運行正常,效能和平台相關的事情(native GUI、hardware devices)也不可能一樣。

    另外,通用的跨平台方式,必然是對效能有影響,這是一種trade-off。就算用"跨平台"的OpenGL,也須使用顯卡廠商的extensions進行優化(甚至按每個GPU型號來做)。而且,每個平台的支持並不一定是十足的。那可簡單化說OpenGL不跨平台了?

    或許,我們可以按平同的跨平台手段,畫出一個光譜或n維圖。從virtualization,標準C/C++,到POSIX,到X,到.NET/Java,到PHP/Perl/Python/Ruby/Lua,到OpenGL,到Qt/wxWidget,到HTML/Flash等等不同技術、軟件,一一放於這圖的某個座標上。

    話說,某本書也談跨平台C/C++開發的,只須把API用宏包起來就行了,強。

  10. Kenny Yuan
    202.8.27.*
    链接

    Kenny Yuan 2010-06-02 12:11:30

    最后一段貌似是在说ISA吧?

  11. 柳晛
    114.244.54.*
    链接

    柳晛 2010-06-02 12:51:45

    请问,这篇博文我能不能转走?

  12. 链接

    童刚刚 2010-06-02 13:03:57

    关于在Windows XP上开发ASP.NET应用程序的人,我觉得确实不太好,不过为了开发在开发机器上安装服务器版本的操作程序,在版权上是个大问题吧?虽然实际上是这样安装的,不过属于私下里安装的,光明正大的不太好说,微软提供独立于iis的调试环境似乎也表明他不希望这样。

  13. 老赵
    admin
    链接

    老赵 2010-06-02 13:42:07

    @柳晛: 请问,这篇博文我能不能转走?

    给个链接注明来源就行了。

  14. 老赵
    admin
    链接

    老赵 2010-06-02 13:47:04

    @童刚刚

    微软是为了方便所以在VS里给了个Web Server,服务器操作系统可以用来开发的啊,比如Standard Edition之类的都可以。

  15. Wuvist
    220.255.7.*
    链接

    Wuvist 2010-06-02 14:10:24

    @charlee: Windows Server 2003 / 2008不比XP难用。

    开发web程序时,使用XP/Win7最不好的地方是无法做性能测试。10个TCP并发就挂了。。。。不要跟我说可以修改,需要hack去修改,就是系统难用的表现。。。。

  16. 四有青年
    210.13.101.*
    链接

    四有青年 2010-06-02 14:47:36

    同样的情况还有在Windows XP上开发ASP.NET应用程序的人,在我眼中这就是无比山寨的做法

    山寨程序员路过。。。

  17. 阿飞
    210.75.7.*
    链接

    阿飞 2010-06-02 14:50:29

    @Wuvist: 开发web程序时,使用XP/Win7最不好的地方是无法做性能测试。10个TCP并发就挂了。。。。不要跟我说可以修改,需要hack去修改,就是系统难用的表现。。。。

    拿XP/Win7做性能测试?Are you kidding?

  18. 老赵
    admin
    链接

    老赵 2010-06-02 14:56:44

    @Wuvist

    你说的没错。

  19. dkmilan
    202.95.212.*
    链接

    dkmilan 2010-06-02 14:58:28

    我就是在XP上写Asp.NET。 悲剧阿。 但是很多情况下是公司不给你用2003, 买不起那么多SERVER版

  20. 链接

    陈澄 2010-06-02 15:11:39

    注意到你的博客是这样的url样式: http://domain/{year}/{month}/{title}.html,里面没有传ID啊,难道是先根据year和month得到一个较小集合,然后再逐个匹配的?

  21. 柳晛
    114.244.52.*
    链接

    柳晛 2010-06-02 15:19:50

    XP的IIS 5 无法建立站点,只能建立虚拟目录,如何测试ASP.NET?

  22. 老赵
    admin
    链接

    老赵 2010-06-02 15:41:01

    @陈澄

    保证title是unique的不就可以了……

  23. Mikeshi
    58.246.43.*
    链接

    Mikeshi 2010-06-02 15:46:31

    但事实上,那些朋友看中的是“Java能运行在Linux上”而不是“Java能跨平台”。而即便Java只能运行在Linux上,对它们来说也就够了

    考题:赵姐夫为什么在这里用“它们”?

    1. 这里指代运行的Java程序,而不是“那些朋友”;
    2. 这里就是代表“那些朋友”,在赵姐夫眼里,只有“她”和“它”的区别……
  24. Mikeshi
    58.246.43.*
    链接

    Mikeshi 2010-06-02 15:50:56

    同意6楼的意见

  25. xiaowen
    123.152.102.*
    链接

    xiaowen 2010-06-02 15:51:45

    @老赵: 同样的情况还有在Windows XP上开发ASP.NET应用程序的人,在我眼中这就是无比山寨的做法,甚至我认为对此没有怨言的程序员也是相当不专业的。

    @Wuvist: 开发web程序时,使用XP/Win7最不好的地方是无法做性能测试。10个TCP并发就挂了。。。。不要跟我说可以修改,需要hack去修改,就是系统难用的表现。。。。

    不用 XP 那你们用啥开发?开发的机子拿来做性能测试??这不大靠谱吧?

    弄个专门的测试服务器,再装个虚拟机,大家都可以用。

    BTW: 绝大部分笔记本电脑,装 Win2003 似乎都有驱动程序方面的问题,想装不容易

  26. 链接

    童刚刚 2010-06-02 15:53:45

    @老赵: 微软是为了方便所以在VS里给了个Web Server,服务器操作系统可以用来开发的啊,比如Standard Edition之类的都可以。

    我的意思是在开发环境装服务器版软件,这个一般是只能用盗版来实现了吧,所以只能偷偷摸摸,不能光明正大的说

  27. xiaowen
    123.152.102.*
    链接

    xiaowen 2010-06-02 16:04:02

    @老赵

    你这地方不能用 cnblogs 帐号登录不大方便

  28. xiaowen
    123.152.102.*
    链接

    xiaowen 2010-06-02 16:08:47

    @老赵

    你这个 Blog 是用 ASP.NET MVC 自己写的吧?html源代码的排版看着很眼熟...

    “Send Me Comment” 的按钮位置似乎太靠底部了,没 Footer?还真不常见

  29. xiaowen
    123.152.102.*
    链接

    xiaowen 2010-06-02 16:44:01

    @老赵

    你这里咋不限制IE6?而且IE6提示“网页上有错误”。

    还有字数限制??怎么老是提示“多写点吧”,纯粹凑字数的..... ^_^

  30. shuhen
    222.173.95.*
    链接

    shuhen 2010-06-02 17:47:44

    让我想起了当年Borland要做个kylix,如果在那个时间就能做成的话,可以想想——Linux下的RAD开发,多么美妙。但它也没有提供一个跨操作系统的平台,而且这个东西夭折了。

    现在有个lazarus,在Linux上模仿Delphi7,曾经试了试还可以。但不论kylix还是lazarus都没有做个平台,而是针对不同系统重新开发。在当前状况下,估计成熟而又通用的软件就是要windows一份Linux一份Mac再一份,这样在各种操作系统下都能尽可能的发挥性能。

  31. 老赵
    admin
    链接

    老赵 2010-06-02 17:53:29

    @xiaowen: 这个 Blog 是用 ASP.NET MVC 自己写的吧?html源代码的排版看着很眼熟...

    这个HTML没什么特别的吧,和ASP.NET MVC没关系的。我用的是ASP.NET MVC 2 + mono。

  32. 老赵
    admin
    链接

    老赵 2010-06-02 17:54:31

    @童刚刚: 意思是在开发环境装服务器版软件,这个一般是只能用盗版来实现了吧,所以只能偷偷摸摸,不能光明正大的说

    可以用的,不要猜,要调查。

  33. xiaowen
    123.152.102.*
    链接

    xiaowen 2010-06-02 18:03:46

    @老赵: 这个HTML没什么特别的吧,和ASP.NET MVC没关系的。我用的是ASP.NET MVC 2 + mono。

    确实有点特别,site.master中的各个标签的排版在输出之后会被改变。你在另一篇blog中提到 URL Rewrite,还以为我猜错了呢 ^_^

    我最近在用MVC做一个项目,感觉非常好!我最开始就是开了你的WebCast学的MVC,万分感谢!!希望你啥时候能更新MVC2的内容,虽然我看官方blog都基本懂了^_^

  34. 链接

    Ivony 2010-06-02 19:41:42

    我坦白我现在在用Windows 7做开发。。。。。而且一直用VS自带的Web服务器,从不用IIS。。。。

    Server不能玩游戏,不能装Messenger。。。。不过非Server系统有时候也没办法装一些Server软件,例如SQL Serevr什么的。

    不过我觉得,开发环境毕竟还是一个私人的地方,管他什么系统呢,但程序员至少要有一个Server来调试和部署。我在开发机上极少安装SQL Server,但又天天要用,So,都是直接用公司的Server。

    Server装魔兽什么的麻烦。

  35. 老赵
    admin
    链接

    老赵 2010-06-02 20:29:12

    @xiaowen

    我没研究过ASP.NET MVC 2,我是把它当MVC 1用的。

  36. 链接

    driedbeef 2010-06-02 21:06:45

    mono我很中意。。。那个csharp解释器更是比微软要超前的实现。。

  37. 老赵
    admin
    链接

    老赵 2010-06-02 21:10:52

    @Ivony

    其实Windows 7也罢,毕竟是IIS 7,功能不差,性能测试也不需要在开发机上进行。不过你说你一直用VS的Web Server,我在想很多东西是没法用上的啊,比如ISAPI Filter,还有IIS 7的一堆module。

  38. 麒麟.NET
    124.126.204.*
    链接

    麒麟.NET 2010-06-02 22:12:03

    那些朋友看中的是“Java能运行在Linux上”而不是“Java能跨平台”。而即便Java只能运行在Linux上,对他们来说也就够了。

    I can't agree more...

    项目追求跨平台的还真不多,一个平台能用就可以了。追求跨平台的一般是产品。

  39. 麒麟.NET
    124.126.204.*
    链接

    麒麟.NET 2010-06-02 22:15:08

    其实对一个事物一知半解的时候,最容易产生极端的看法。

  40. 链接

    Ivony 2010-06-02 22:18:59

    @老赵

    是啊是啊,不过做项目的话也不能用,公司服务器还没升级的说。

    不过自己用Windows 7研究研究IIS7也不错。

  41. @zhangronghua
    123.232.208.*
    链接

    @zhangronghua 2010-06-02 22:37:05

    话说我也是从最起才开始用IIS的,以前也都是用自带的服务器。 现在用了IIS,持续集成感觉很好的说。

    另外混了这么多年了,还没遇见过同时跨操作系统平台的项目。

  42. XP开发ASP.NET
    125.39.69.*
    链接

    XP开发ASP.NET 2010-06-02 23:20:09

    悲剧啊,如名字...

  43. thomaswu
    117.88.184.*
    链接

    thomaswu 2010-06-02 23:24:45

    老赵,恕我直言,您的博客还是没跳出博客园的束缚,我觉得可以做一些改进,比如页面风格,树立品牌旗帜,增加交互性,发挥个人博客的灵活性,哈哈,比如大家上班不能上通讯工具,可以搞个网页聊天记录大家遇到难题交流提问吗,俺们也沾个光。

  44. Steven Mak
    119.247.132.*
    链接

    Steven Mak 2010-06-02 23:49:02

    寫過 C/C++ 就知道 Cross-platform 是何等頭痛的事,特別是 Embedded Systems.

    還有,目前手機上的情況亦挺惡劣,就不計較 Apple 局限語言一事,單是 J2ME 應用最後都要按手機型號去 customise 應用。

  45. 老赵
    admin
    链接

    老赵 2010-06-03 00:37:00

    @thomaswu

    这页面其实不错啊,本来就是我提供给博客园的皮肤。我现在就是当一个普通的博客来写,还没想出有什么其他的需求,你有什么想法就提罢。

  46. Wuvist
    220.255.7.*
    链接

    Wuvist 2010-06-03 12:26:49

    不过话又说回来。。。

    用Mac做开发的同学又怎么办?

    明显没有服务器是用mac的。。。

  47. Wuvist
    220.255.7.*
    链接

    Wuvist 2010-06-03 12:30:51

    @xiaowen

    我一直用2003 / 2008做desktop,做开发。。。不觉得有问题。。。什么Messenger安装、打游戏都不是问题。。。

    直接用自己desktop做性能测试有问题吗?我不是说我只用desktop做性能测试,我只是说当desktop也可以做性能测试比较方便。。。

  48. 链接

    Ivony 2010-06-03 12:46:49

    Windows Live不支持Server操作系统的哈。

  49. 老赵
    admin
    链接

    老赵 2010-06-03 13:31:50

    @Ivony

    2008支持,2003不支持……其实也是支持的,不过麻烦点……

  50. 老赵
    admin
    链接

    老赵 2010-06-03 13:35:40

    @Wuvist

    性能测试的话,总归是要生产环境相似的环境,或者经过自己的预测评估后,在普通的机器上测试。用Mac做开发,比如果是RoR + Linux的话,测试时还是要跑在Linux上的。平时开发时的“功能”,其实Mac OS和Linux其实也差不多,所以问题也不大。

  51. winter
    58.33.118.*
    链接

    winter 2010-06-03 22:49:03

    强烈要求支持盛大通行证

  52. xiaowen
    123.152.111.*
    链接

    xiaowen 2010-06-05 18:16:35

    @Wuvist

    我一直用2000/2003做台式机的desktop,直到换笔记本电脑作为开发电脑。Server版最大的问题就是笔记本电脑的驱动程序不全,这让人很难接受。

    开发电脑作性能测试只能看个大概,无法反映实际情况,但这在大部分情况下也够了,特别是如果做测试只是为了找出性能的瓶颈在哪里。

  53. 链接

    immars 2010-06-07 15:22:43

    这页面其实不错啊,本来就是我提供给博客园的皮肤。我现在就是当一个普通的博客来写,还没想出有什么其他的需求,你有什么想法就提罢。

    想法之一,ip overlapped with comment content... under chrome

  54. 链接

    immars 2010-06-07 15:48:13

    Java能跨平台,而Linux比Windows既XX,又YY,还不要钱。但事实上,那些朋友看中的是“Java能运行在Linux上”而不是“Java能跨平台”。而即便Java只能运行在Linux上,对他们来说也就够了。对于一个正经的应用,您会动辄迁移它的运行平台吗?

    同意,至少目前接触过的“正经应用”都是在linux上的。

    顺便插一句,我上面的说法可以得到一个推论:对于一个服务器应用来说,程序员在工作时的运行/调试环境要尽可能与生产环境相符。例如一个在Windows下运行调试的Java程序,但生产环境下却是部署在Linux下的做法我就感觉不靠谱。

    这就有点循环论证了,如果在不同os下表现一致,那么在windows下或mac os x下运行调试java我就觉得很靠谱。why not? 这也是跨平台好处之一。事实上大部分人都是这么做的吧……

    如果真因为条件限制,至少持续集成时的环境要和生产环境尽可能一致吧?

    这倒是同意。

  55. 老赵
    admin
    链接

    老赵 2010-06-07 16:15:21

    @immars: 想法之一,ip overlapped with comment content... under chrome

    Chrome的bug,在win xp或2003里使用Chrome就会有这个问题(无法显示小于12px的字符)。其他浏览器或其他操作系统下的Chrome都是正常的。

  56. 链接

    kvspas 2010-06-07 21:52:09

    首先,“平台”是什么概念?.net的发明者,和java的发明者,两者的“跨平台”指的也许就不是一回事,并不是翻译到中文里面的“跨平台”这三个字这么简单。

  57. 链接

    ¬俊哲 2010-06-25 23:20:59

    我想请问一下,老赵您在做asp.net,压力测试工具一般用的什么呢?

  58. 老赵
    admin
    链接

    老赵 2010-06-25 23:51:42

    @¬俊哲

    Apache Benchmark

  59. Wuvist
    219.136.32.*
    链接

    Wuvist 2010-07-01 15:54:11

    Mono最好的是有提供MonoDevelop,让偶可以在Mac里面做.net开发~~

    我就是来打酱油的~

  60. 链接

    承志 2010-07-22 09:44:30

    "話說,某本書也談跨平台C/C++開發的,只須把API用宏包起來就行了,強。"

    难道这是被Obug雷到的旧患?

    同样的情况还有在Windows XP上开发ASP.NET应用程序的人,在我眼中这就是无比山寨的做法,甚至我认为对此没有怨言的程序员也是相当不专业的。

    话说很多开发asp.net的都是不符合老赵标准的山寨程序员,也包括我(虽然我是业余的)。

  61. 老赵
    admin
    链接

    老赵 2010-07-22 09:52:37

    @承志: 话说很多开发asp.net的都是不符合老赵标准的山寨程序员

    不过这点和我的预期倒是一致的……

  62. stg609
    115.195.43.*
    链接

    stg609 2010-07-27 00:10:22

    So good

  63. 郑浩宇
    221.217.28.*
    链接

    郑浩宇 2010-10-07 21:18:15

    老赵,不好意思 我还是没太看明白这篇文章的大意。如果您认为在服务器端不必跨平台,那么也就基本上承认《谎言》一文的正确性;如果您认为跨平台可以减少程序员对于平台的依赖,那基本上就否定了《谎言》一文。

    顺便就此发表一些本人的观点,个人认为如果是服务器端开发的话,跨平台的意义好像不是特别大。

  64. 老赵
    admin
    链接

    老赵 2010-10-07 22:06:08

    @郑浩宇

    就算我的文章结论和它们相同,也不代表我认同它们的论证过程和道理,光看结论命题正确与否在我看来没多大意义的。我的文章经常没有明确结论,结论你可以自己想出来,正反都可以,我就是写点我的思考罢了。

    总而言之,你不用关心我到底是赞同还是反对,我最喜欢各打五十大板。我现在也记不清它们这些文章到底是怎么写的了,你理解我的文章的意思就行了,不用关心我的结论如何。

  65. bulong
    116.228.247.*
    链接

    bulong 2010-11-02 16:46:23

    要知道IOCP作为一种与epoll类似的基于事件的IO机制,早在NT 3.5 / Windows 2000就出现了,而Java 6诞生于2006年底,我相信“时间”不是问题。

    你要用NT 3.5 / Windows 2000和Java 6对比?

发表回复

登录 / 登录并记住我 ,登陆后便可删除或修改已发表的评论 (请注意保留评论内容)

昵称:(必填)

邮箱:(必填,仅用于Gavatar

主页:(可选)

评论内容(大于5个字符):

  1. Your Name yyyy-MM-dd HH:mm:ss

使用Live Messenger联系我