java编写出来的程序是要有java虚拟机才能运行的,java虚拟机把java语言解析然后运行,但是C/C++是把代码编译成汇编语言,那是不是对于系统底层的修改或者应用,java就没有C/C++强?例如在vista跟win7的音量控制里面,可以是控制每个程序的音量,xp下没有这个功能,如果要编写一个这样控制每个程序音量的软件,java能写出来吗?

解决方案 »

  1.   

    没错,你理解的很对Java的长处是跨平台,通用的代价就是不能依赖底层特别的API。
    不够Java可以通过JNI方式调用Native库,所以没有绝对的做不到。
      

  2.   

    xp下系统本身不能分别调节每个程序的音量,但是有个这样的软件,不过我用过,经常报错推出,因此想知道java能不能编写出一个这样的程序,不知道这个程序调用的算不算系统底层的API呢?
      

  3.   

    Java内存管理由JVM负责,容易但耗内存,不灵活
    C++内存手动回收Cache系统用Java做效率会很低
      

  4.   


    不能!Java 无法对其他应用程序进行控制,也无法修改操作系统上的设置。如果用 JNI 调用本地 library 的话,那还不如直接用 C++ 写这样的程序。
      

  5.   

    我目前觉得最核心的差别是
    多了一层JVM而已,
    JVM就好像你上厕所
    用C++的话,你就要自己冲厕所
    用JAVA就是有红外线的厕所,你人一走他就会帮你冲
    还有就是
    你想命令一个人做一件事,
    在俄国说俄语,在英国说英式英语,在中国说chiglish,在美国说美式英语,你在不同机器上,说的语言的语法会有区别,他会先帮你转为标准的英语,这样你无论去哪里都行,无论你讲什么英语都行
      

  6.   

    C++就是底层开发的,JAVA优势在网络
      

  7.   

    如果是java控制音量,理论上是可以的。windows里有相应的API,通过native调用,应该可以
      

  8.   

    7楼的比喻有点意思,不过下边好象颠倒了,应该是我们只说标准的语言,不同的平台的翻译工作就由Java代劳了
      

  9.   

    控制Windows程序的音量?如果你的程序和特定平台绑定,只运行在某个操作系统上,没有任何理由使用Java做这样的程序。而且分发Java程序,还需要考虑客户端是否安装JRE这些琐事。
      

  10.   

    java是完全面向对象的,C语言是面向过程的。
    java与平台无关,即可以在不同的平台上都可以稳定的运行。而C语言,就不可以。简单的说,C语言的int类型在不同平台占用的空间是不一样的。这就导致了他不能移植。
      

  11.   

    C++的内存不好控制,Java有垃圾回收器。Java可以跨平台。c++不可以。Java比C++安全。