Java虚拟机Java编译器上编译后生成的class是字节码,到了具体的操作系统上Java虚拟机的Java解释器负责将字节码解释成特定平台的机器码, 
这就是Java的平台无关性吗? 
  Java虚拟机是依赖于操作系统的?每运行一个Java程序会增加一个 JVM 的实例,然后JVM是运行在操作系统上的,他分享的是操作给它分配的一块内存,只是在那一块分配的内存上进行内存管理?然后Java虚拟机是没有文件管理的,它也是共享的操作系统的文件管理吗吗? 
  我感觉Java虚拟机就几十M ,但是他的界面设计那些都可以赶上Windows ,我猜想它是在虚拟机层调用每一个操作系统的API实现的?但是的话根据资料显示,它只是上面所说的方法实现的,很奇怪。   像c++ 编译器,它编译成的exe 文件应该不是 字节码,好像是一个一个的函数调用,但是具体是什么我也不清楚。然后通过一个一个的函数调用,调用相应平台的操作系统的API? 然后操作系统再将 具体的API调用 转换成具体的机器指令?  这就是平台有关?   以前都没怎么注意这些概念,现在在关注GUI了,只是很多不明白的,开始的时候学的C++,用的是Windows,感觉整个机器都是它的,但是现在学着Java,不知道到底是怎么回事情了。点击窗口,到底消息是传给Windows还是Java平台呢。还是...?   大哥们,最近才上的CSDN,分数不多。。这些分数差不多是我的一半了,,谢谢大侠们帮助~~(希望大家能帮我解释下打问号的地方) 
 小弟 感激不尽!!

解决方案 »

  1.   

    Java 是在各个操作系统上面统一制定了一个抽象层,所以用惯了 C++ 的楼主在学 Java 时感到受到掣肘是很正常的。举个例子,Java 里面没有实现调用系统级的文件拷贝,文件拷贝都要自己写,通过循环读取和写入字节。所以一般认为 Java 的优势在于 Web 方面。
      

  2.   

    哦~
    !
    1.Java虚拟机Java编译器上编译后生成的class是字节码,到了具体的操作系统上Java虚拟机的Java解释器负责将     字节码解释成特定平台的机器码, 这就是Java的平台无关性吗
    2.Java虚拟机是依赖于操作系统的?
    3.每运行一个Java程序会增加一个 JVM 的实例,然后JVM是运行在操作系统上的,他分享的是操作给它分配的一块内存,只是在那一块分配的内存上进行内存管理吗?
    4.然后Java虚拟机是没有文件管理的,它也是共享的操作系统的文件管理吗? 
    5.我感觉Java虚拟机就几十M ,但是他的界面设计那些都可以赶上Windows ,它是在虚拟机底层调用每一个操作系统的API实现的吗?
    6.exe文件的执行流程?
    7.用Java程序编写的窗口,点击窗口,到底消息是传给Windows还是Java平台呢。还是...? 
      

  3.   

    我最近在看java虚拟机,可是能力还没有到能回答此问题的地步,楼主也可以看看这本书,csdn上有下载的。希望楼主能自己找到答案。
      

  4.   

    问大家下,Windows应用程序是怎么与操作系统关联起来的啊?
      

  5.   

    你用Java编写GUI程序 ?
    使用以前的AWT还是Swing?
    楼主,我劝你还是先了解一下Java的AWT框架结构吧,这样有助于你对程序的深入了解。
    Java的GUI结构,没有C语言那么麻烦。
    C语言还要讲究什么消息循环的,Java使用的是观察者模式,
    直接添加一个监听器就搞定了,根本不用消息循环什么的。第二,你在编写Java程序的时候,不要过多考虑操作系统的工作原理。
    只要知道JVM的大致流程就可以了。因为,底层的一些操作,都被写成native方法了。
      

  6.   

    1.class文件存放的是字节码,这个只有JVM能认识,并且执行里面的内容。Java的平台无关性,我理解,应该是,你拿着你的class文件,到任意一个JVM上都能执行,而不用考虑,它所在的操作系统是Windows还是Unix还是Sun OS等等,正所谓的,一次编写,处处运行。当然,针对不同的操作系统,会有不同版本的JVM来与之结合。
    2.我认为,Java虚拟机是依赖于操作系统的。不同的操作系统,有不同版本的JVM。Sun公司,只制定Java相关的规范,当然它也开发的自己的JVM,但是,其他公司也有依据Sun公司的规范,开发自己的JVM。 
    3.JVM的实例,其实就是一个进程。进程的环境,构成JVM的环境。JVM的类、对象管理,其实是管理操作系统分配给进程的内存。 
    4.我认为Java还是有文件管理的。java.io.File这个类就是文件管理方面的类。当然,具体的执行过程是否调用操作系统的API,我就不清楚了。
    5.JVM的底层调用?这些知识,对我们开发人员,很少用到。楼主想要了解,不妨看看《深入Java虚拟机》这边书,上面比较系统的介绍的JVM的原理以及底层实现。 
    6.exe文件的执行流程?这个我不太清楚楼主要问的是什么意思。如果是JVM的类加载顺序,楼主可以看一下关于ClassLoader类方面的介绍。可能会有所帮助。 
    7.Java的GUI框架和Windows不同。Windows用的是消息机制,Java用的是事件机制。两者有可能不同。