SUN使用哪种C++技术开发Java虚拟机?
      刚刚下载了SUN公司开源的Java虚拟机的源代码。发现里面用得是C++,而不是C开发。
     而且,看到了__try{}__exception 这样的微软风格的C++。
 
     不知道SUN使用哪种C++技术开发JDK?  难道是用老对头微软的VC++?
VC++6.0,还是VC++2003/2005?
  、   
     有知道的吗?讨论一下。

解决方案 »

  1.   

    有C++技术之说吗? VC++不过是一种C/C++编译器而已
      

  2.   

    __try{}__exception   是微软对C++的扩展。
      

  3.   

    VC++6.0   java很早就出来了,那时候只有vc6,应该没错
      

  4.   

    真难想象,JAVA虚拟机居然是C++写的  而且很多地方调用WIN32 API,也有linux的 
    还有DLL:BOOL WINAPI DllMain(HINSTANCE hinst, DWORD reason, LPVOID reserved) {
    只是在2个系统上写2套代码,然后就鼓吹跨平台~~~
      

  5.   

    不管是MS还是SUN的技术,都有他们不凡之处,我们都应该坚持一种虚心的态度去学习。
    我不了解这些底层,不妄加评价。--------------------------------
    “只是在2个系统上写2套代码,然后就鼓吹跨平台~~~”不打同意此人说法。
    不过“做人要低调”。
      

  6.   

    真难想象,JAVA虚拟机居然是C++写的  而且很多地方调用WIN32 API,也有linux的 
    还有DLL:BOOL WINAPI DllMain(HINSTANCE hinst, DWORD reason, LPVOID reserved) {
    只是在2个系统上写2套代码,然后就鼓吹跨平台~~~
    ================================================================
        JVM当然要用操作系统本地提供的接口来写。  要不然Java怎么能运行?手机厂商也都是自己提供一套机器上的JVM环境,然后就可以运行所有J2ME程序了!
      

  7.   

    有C++技术之说吗? VC++不过是一种C/C++编译器而已
    =========================================================
        当然有。 光用C++能做开发吗?  微软的C++,Borland的C++都提供了不同于C++标准的关键字。程序完全不可移植!
        
        而且,C++程序,一般要调用不同操作系统的API。  这样,C++写得程序,一般也无法在不同操作系统上移植!
     
        标准,而且强大,真正可移植,这就是Java对C++的优势所在!
      

  8.   

    虚拟机肯定是C++写的,而且是不同的平台,不同的代码。总要调用不同的OS的API的。
      

  9.   

    标准,而且强大,真正可移植,这就是Java对C++的优势所在!
    =======================呵呵,我用5.0.08上编译的程序在5.0.06上都运行不了。还可移植呢,就差0.02个版本。看看Windows。
      

  10.   

    呵呵,我用5.0.08上编译的程序在5.0.06上都运行不了。还可移植呢,就差0.02个版本。看看Windows。
    ==========================
    你这什么话啊
    是你的程序没有写好吧
      

  11.   

    呵呵,我用5.0.08上编译的程序在5.0.06上都运行不了。还可移植呢,就差0.02个版本。看看Windows。
    ------------------------------------------------
    难怪你用frontpage写asp,jsp,php了
      

  12.   

    呵呵,我用5.0.08上编译的程序在5.0.06上都运行不了。还可移植呢,就差0.02个版本。看看Windows。
    ------------------------------------------------
    难怪你用frontpage写asp,jsp,php了============================
    我用frontpage是利用froontpage的页面设计功能,
    java的开发工具里有那个工具比frontpage对html的设计和预览功能强? 比它速度快?垃圾。
      

  13.   

    搞JAVA的人肯定又不爽了,他们大喊:靠!原来java的底层是C/C++开发的!
      

  14.   

    难怪你用frontpage写asp,jsp,php了
    ==================================
    呵呵,我明白了,你夸我呢,我的可移植性多强。不管,p语言怎么变,我都用frontpage写,而且是frontpage2000.哈哈哈哈哈哈。哈哈。
      

  15.   

    发现几个搞笑的回复。首先是这位:>只是在2个系统上写2套代码,然后就鼓吹跨平台~~~你没听过一种说法吗?“Java不是跨平台的,Java本身就是一个平台。”如果你用C++在两个操作系统上只需要写一套代码,那C++就成了跨平台的了,要要Java做甚?>呵呵,我用5.0.08上编译的程序在5.0.06上都运行不了。还可移植呢,就差0.02个版本。
    >看看Windows。你可以把win32的代码编译下,用在dos或者win3.1上试试。
    虽然如此,我还是很好奇你究竟是使用了什么高超的技巧创造出了这个不兼容的实例。>虚拟机开源了?
    >哈哈,等着黑客进攻吧。Linux一直是开源的,windows一直是不开源的。你的意思是使用windows更安全?>我用frontpage是利用froontpage的页面设计功能,
    >java的开发工具里有那个工具比frontpage对html的设计和预览功能强? 比它速度快?用frontpage写jsp和php的应该是比较罕见的。
      

  16.   

    我用frontpage是利用froontpage的页面设计功能,
    java的开发工具里有那个工具比frontpage对html的设计和预览功能强? 比它速度快?
    ----------------------------------------------------------------------------
    frontpage这种不入流的东西都被你吹得口水横飞,我真的是无语了还有一句话——
    干你娘!
      

  17.   

    你可以把win32的代码编译下,用在dos或者win3.1上试试。
    虽然如此,我还是很好奇你究竟是使用了什么高超的技巧创造出了这个不兼容的实例。
    =======================
    那时版本差距太大了。用了模板的java程序当然在老的java环境下运行不了了。但是在win2003下写的程序大部分都可以在win2000下运行。2003跟2000差了多少年了。 5.0.06跟5.0.08差了多少年?
      

  18.   

    frontpage这种不入流的东西都被你吹得口水横飞,我真的是无语了
    ================
    呵呵,把frontpage当作不入流的东西的人,能是好鸟吗?
      

  19.   

    c的意义在于——可移置。
    c++的意义在于——扩展了c,使用方便,统一了新方法,新思路。
    java的意义在于:
        向前进一步推动c++的同时,提高了效率,增强了健壮性。使设计过程可控性进一步提高,bug可限制。
    完全对象化的思想面向未来的智能化软件设计。同时。为融入操系统做好了准备。一旦cpu的体系支持java,那将是最先进,最快捷的开发语言了。
      

  20.   

    呵呵,JVM是C/C++写的,这样会触痛谁的神经的话,那么这只能说明谁不适合开发。
      

  21.   

    JVM本身是一个native应用,所以在各个OS上都会尽量采用其OS上的主流C++编译器,因此局部代码使用了某个编译器的固有特征是很正常的事情。这是软件工业界对于C++的认识,自然会和教科书中的指导思想有差别。当期版本的JVM经过10多年的演变,JVM本身构建的工具中也有Java代码,例如其中用Java程序来生成C++的hpp文件。很显然,在JVM第一个版本不会是这样实现的,这是多年不断演变的结果。这也是编译当前JVM代码需要JDK支持的原因。总之,JVM本身不是单单C++应用,而是一个在软件工程思想指导下的多种语言综合的应用。
      

  22.   

    {真难想象,JAVA虚拟机居然是C++写的  而且很多地方调用WIN32 API,也有linux的 
    还有DLL:BOOL WINAPI DllMain(HINSTANCE hinst, DWORD reason, LPVOID reserved) {
    只是在2个系统上写2套代码,然后就鼓吹跨平台~~~}不一样的OS ,当然是有不一样的API调用了,什么是虚拟机啊,难道说WIN下的可以在LINUX下跑啊?
    只是JAVA编译好后的CLASS可以在这些地方跑而已,JAVA语言是跨平台的,虚拟机当然不是.
      

  23.   

    用C还是C++开发都不重要。。重要的是,不管是JAVA,RUBY,还是PYTHON,到了什么平台就要调什么平台的API,不只是JAVA的JVM,其他语言都一样..Unix, Linux, FreeBSD基本上都是用C写的。。加一些汇编..也就是说一般平台的API都是C的API接口,平台API功能相关的数据结构,定义都是C描述的..这就是C++兼容C的好处。。而JAVA只有通过JNI,要C/C++帮忙。。也就是说JAVA必须要C/C++才能访问平台API..JVM就是跑在平台上的一个C/C++程序而已..深入的学习下去,你会发现真正"无所不能"的是C用C写操作系统。。用C写应用程序。。嗯??开发效率不高。。开发应用不方便,没关系,再用C写C++,Delphi,VB,Java,Python,Ruby...
      

  24.   

    iambic()绝对支持你!到低jvm是用c还是c++阿?服了!
      

  25.   

    就是,要那么说
    java不如c++
    c++不如c
    c不如汇编
    汇编不如机器语言
    机器语言不如硬件了
    硬件不如人
    。。
      

  26.   

    2  从C 开 始          为 了 使 整 个 系 统 与 平 台 无 关,Gosling 首 先 从 改 写C 编 译 器 着 手。 但 是Gosling 在 改 写 过 程 中 感 到 仅C 是 无 法 满 足 需 要 的, 于 是 在1991 年6 月 份 开 始 准 备 开 发 一 个 新 的 语 言, 那 么 给 它 起 一 个 什 么 名 字 呢?Gosling 回 首 向 窗 外 望 去, 看 见 一 棵 老 橡 树, 于 是 建 一 个 目 录 叫Oak, 这 就 是Java 语 言 的 前 身( 后 来 发 现Oak 已 是Sun 公 司 另 一 个 语 言 的 注 册 商 标, 才 改 名 为Java, 即 太 平 洋 上 一 个 盛 产 咖 啡 的 岛 屿 的 名 字)。 看看:http://www.cnblogs.com/shengshuai/archive/2006/11/21/JavaBringup.html
      

  27.   

    只是在2个系统上写2套代码,然后就鼓吹跨平台~~~
    ==========================================================
    废话,你写一套就能跨平台?你牛B!在不同操作系统实现同一个功能,当然调用不同OS的API了。任何编程都不能脱离平台,而独立存在,除非你在写OS,这是哲学问题,不是技术问题...
      

  28.   

    搞JAVA的人肯定又不爽了,他们大喊:靠!原来java的底层是C/C++开发的!
    ====================================================================
    有什么好不爽的?说起就像c/c++是你开发出来的一样
      

  29.   

    就是,要那么说
    java不如c++
    c++不如c
    c不如汇编
    汇编不如机器语言
    机器语言不如硬件了
    硬件不如人
    。。
    ==============================
    所言甚是。
      

  30.   

    虚拟机报错的文件内容---------------  S Y S T E M  ---------------OS: Windows 2000 Build 2195 Service Pack 4CPU:total 1 family 15, cmov, cx8, fxsr, mmx, sse, sse2, htMemory: 4k page, physical 777712k(258024k free), swap 1902748k(1437644k free)vm_info: Java HotSpot(TM) Client VM (1.5.0_06-b05) for windows-x86, built on Nov 10 2005 11:12:14 by "java_re" with MS VC++ 6.0
    ----------------
    这里高手多,搭车同问:
    http://community.csdn.net/Expert/topic/5256/5256514.xml?temp=.2786219
      

  31.   

    真难想象,JAVA虚拟机居然是C++写的 而且很多地方调用WIN32 API,也有linux的
    还有DLL:BOOL WINAPI DllMain(HINSTANCE hinst, DWORD reason, LPVOID reserved) {
    只是在2个系统上写2套代码,然后就鼓吹跨平台~~~_______________________________________________________________倒!!!
      

  32.   

    搞JAVA的人肯定又不爽了,他们大喊:靠!原来java的底层是C/C++开发的!
    ————————————————————————————————————
    这个也倒一下!
      

  33.   

    哈,几个回复真是让我苦笑不得
    source code开放后我只担心一个问题,版本控制。
    现在的j2ee容器的jdk已经不同了。WebLogic和WebShpere用的是自己的jdk包,我怕源代码开放后这些公司又各自写一个。
      

  34.   

    真难想象,JAVA虚拟机居然是C++写的 而且很多地方调用WIN32 API,也有linux的
    还有DLL:BOOL WINAPI DllMain(HINSTANCE hinst, DWORD reason, LPVOID reserved) {
    只是在2个系统上写2套代码,然后就鼓吹跨平台~~~_______________________________________________________________
    这人真傻冒
    要你这么说,c++最终还是机器语言,最终又他妈是机器语言,c/c++真烂
      

  35.   

    我并没有诋毁JAVA的意思  只是年少无知   以为JAVA的虚拟机只要用JAVA写一次就能RUN ANYWHERE   所以才这样讲的
      

  36.   

    只是在2个系统上写2套代码,然后就鼓吹跨平台~~~
    =======================
    这句话的意思是赞扬SUN的市场宣传做的好  这也不行啊 我XX