为什么?? 因为我要发布在LInux上,你不是叫我找死嘛~~

解决方案 »

  1.   

    这是java和其他语言的最大区别了,否则有了c要java做什么主要应用与跨平台,二进制的程序在windows上和unix上是不同代码,因此至少要编译2次,而java可以是一个,只要编译1次当然如果只是在windows上,那就用net把。多看看关于java的特点的资料把。
      

  2.   

    因为我要发布在LInux上,你不是叫我找死嘛~~
      

  3.   

    java毕竟不同于微软的vb,vb5.0就可以编译成native code,可以快20倍,但那只是windows的产品.我们的java可是要跨平台的,一次编译,到处运行.
      

  4.   

    JAVA毕竟要考虑到平台无关性~~~
      

  5.   

    呵呵,java要是不编译成class文件让jvm执行,那它怎么跨平台
    那java还有什么优势
      

  6.   

    回复人: onefox(一品狐)  
       他的意思是说,预先根据几个平台编译成 2进制 的版本备用,发布。------------------------------------------------------------------
    楼主:那跟C\S有什么区别了?难道改动一个bug也要分发N个版本?Java和B\S的优势就是平台无关啊。 
     
      

  7.   

    但每个平台都要安装JAVA运行环境,我也觉得有点烦,总不能拷一个class文件到要用的地方就能执行吧,面jvm的最小执行文件是什么呢?
      

  8.   

    回复人: pqc4391(求知) ( )  
     
       但每个平台都要安装JAVA运行环境,我也觉得有点烦,总不能拷一个class文件到要用的地方就能执行吧,面jvm的最小执行文件是什么呢?-------------------------------------------------------
    Jvm是一个运行平台,有了这个,所有的java程序都可以运行了,这就降低了开发的难度,而用户也乐于接受。连平台都不想装而仅仅想直接运行的话,干吗还装操作系统?Word也直接生成二进制代码多好,开机直接进入..道理一样...以中间多加一个Vm层换来跨平台的优势是很值得的。就如同中间有个操作系统层以换来便利的开发和应用一样...敢说OS不对程序运行的效率造成影响?
      

  9.   

    to  skylovers:
      发布N个版本又怎么样,没有听上去那么可怕,不就是多编译几次吗,又不是叫你编译。这样做性能大为提高,又可以使用java,保留java的功能强大,有什么不好。
      

  10.   

    jvm那就失去意义了那样
    赛们铁科很早之前好像弄过这样的吧visual j++也算是
    但是sun肯定会生气了的哦呵呵
      

  11.   

    回复人: theoffspring(崽子) ( )  
       to  skylovers:
      发布N个版本又怎么样,没有听上去那么可怕,不就是多编译几次吗,又不是叫你编译。这样做性能大为提高,又可以使用java,保留java的功能强大,有什么不好。
      -------------------------------请问机器用p4 ,速龙,致强,速龙64,甚至还有Via的Cpu,操作系统有Win2000,Linux,Unix...为了达到最高效率,我需要编译多少个版本?为了发挥机器最高效率,为什么还要操作系统?干脆连操作系统一块集成进去不是更好?这样我们可以为内存为128M的机器进行一次优化,还可以为内存为256M的再进行一次优化....在下不是纯粹的找茬,只不过说明有时候效率并不是最需要解决的。我们选的不一定是最佳效率,而是最佳性价比或者最佳的可实现性。
      

  12.   

    to all:我的观点:
      1,java的跨平台是他的优点,但实际上大家有几个项目是在多个平台上调试运行的?多说是一个平台吧?一般是支持不同的版本而已。特别是作项目的的,平台固定的更死了,跨平台并不会真正给用户带来价值(提高工作效率),程序快了则可以
      2, 我知道.net中几个核心的库本来就是编译成本地代码的,一般资料也是说这样作为了效率。
      3, 我接触的客户,如果真能提高效率,他们是不介意怎么作的?
    如果这样,如果native code能大幅度提高效率,为什么不??  又一个问题,如果nativecode只是提高 2%一下的,是不是很有意义的,如果有30%呢。谁知道测试结果
      

  13.   

    跨平台的目标是建立在多种操作系统并存的基础上的,在目前单一window操作系统的情况下(特别是中国),确实不如本地编译。
    如果哪一天你机器上是windows和linux并存并都支持java的话,理论上只要一个java的word软件就可以了。目前orcale和db2的管理器都是用java写的,这些数据库的运行平台一般是unix,而管理可以在unix上,也可在window上远程管理,此时只要开发一套管理程序就可以了。当然,从实际情况看,这些管理程序在window上运行实在是累。java本来就有2个方展方向,网络应用(J2EE)和独立应用程序,显然目前前者还是强项。
      

  14.   

    to skylovers:
      编译成原生码只是跟操作系统有关系吧,就算跟cpu也有关系,客户的cpu也不是随随便便就换的,那玩意不便宜,不是螺丝钉
      

  15.   

    我们做的程序的服务端,就是在windows下开发,在solaris上运行的。调试的时候自己起个server,没问题了把class打包上传,多方便。而且如果全部变成本地代码的话,rmi和序列化肯定会有麻烦吧。
      

  16.   

    to all:
       有没有人在工程中实际编译果native code的?这样子可以给大家个参照,至少是决绝效率问题的一个方案
      

  17.   

    to skylovers:
      编译成原生码只是跟操作系统有关系吧,就算跟cpu也有关系,客户的cpu也不是随随便便就换的,那玩意不便宜,不是螺丝钉
    ---------------------------------------------------------------------------------------追求效率的最高境界应该是放弃操作系统。直接对硬件进行操作吧,这个就是为什么汇编的效率比较高...固定大客户的CPU不随便换,那么你的J2SE游戏程序是否都要为全世界每个系统都各做优化?此后还有更多的烦心事情在等着..比如A系统对于“加”操作快,而B系统对于“乘”操作快,那我们在写代码的时候是否还要考虑?native code --->OS--->Hardware
    实现业务逻辑--->屏蔽底层硬件操作,提供上层逻辑接口--->硬件操作..byte code ---> Jvm ---> OS ---> Hardware
    实现业务逻辑--->屏蔽操作系统的差异,提供统一的编码接口--->屏蔽底层硬件操作,提供上层逻辑接口--->硬件操作..当然,我这么说是有些偏激了。还是那句话:有时候效率不是最关键的。无论是操作系统还是JVM都是一个平台,来让我们安心做自己该做的事情。不然我们就又会回到为了提高效率而去追求熟悉各个操作系统的路子上去了...而有了JVM,那仅仅是SUN的工程师去考虑的事情....
      

  18.   

    关键一点,效率本身并不是jvm产生的,所以那样做不见得效果好
      

  19.   

    必须承认的两点:1、Java 的执行效率是差的2、J2SE 是失败的
      

  20.   

    java毕竟不同于微软的vb,vb5.0就可以编译成native code,可以快20倍,但那只是windows的产品.我们的java可是要跨平台的,一次编译,到处运行.---------------------------------------------
    Java问题还很多,一次编译到处运行还只是说说而已,问题还是很多的,但比目前的.net来说好n多