QQ1252776430 2015-09-14 10:43 采纳率: 22%
浏览 2482

Java使用的核心类库是JRE,C++没有类似自己的核心类库,这就是Java可移植性的原因么

我只接触过java,而且只用过windows。一直都知道java与其他语言区别之一是可移植性,但具体是什么一直说不清楚。
目前在看swing和awt等关于图形的,有说awt是重量级的依赖于操作系统绘图,移植其他平台,画风大变,效果很差;swing是轻量的,不依赖。
是不是awt底层调用了操作系统已有类库,导致移植其他平台效果很差,而swing自己用底层语言一笔一划做出图形,不用操作系统原有库,所以移植效果好。
那么是不是C++没有自己的向swing,awt这样的核心类库,或者很少。大部分使用功能等同于JRE但是是由本操作系统提供的类库,而不同的操作系统提供的类JRE类库又不是太一样,导致不同操作系统调用这些核心类库的代码(基础程序)就要写的不同,就是不可移植性的特点了。
请问是不是这样的呢。
另外就是awt是重量级,swing是轻量级,为什么呢。swing我看了下,swing类基础是JComponent,这个类里的确有一些绘图的成员变量,比如一个ComponentUI接口,ComponentUI里面有预定义paint方法,我猜是编译器的api接口,实现后编译器会自己绘形状。而awt基础类是Component,里面有个peer接口,关于这个peer介绍是“The peer implements the component's behavior”,是不是这个peer存储的信息就是编译器调用操作系统的api接口。不知道以上猜测是否正确。

  • 写回答

6条回答

  • 键客小E 2015-09-14 11:03
    关注

    您好,您写的太多,没能全能明白。我讲几点自己的个人认识,关于可移植性,跨平台。虽然和语言相关比如java,java可以跨平台并不在于语言本身,而在于提供的机制,JAVA虚拟机这个东西才是JAVA可以跨平台的关键。C#也是在UNIX-Like环境下跑的,就看你提供了什么平台。我一直觉得,语言本身的区别尽管有,但更多地在于你如何去运用。JAVA可以做的事情,C,C++,C#理论上都是可以去做的。关于类库,不管是JAVA还是C++都有大量丰富的类供使用,图形图像方面,C++有一定的优势,毕竟C++的年纪更大一些,JAVA的身上不可避免地有C++的影子。以上是我的个人观点,不对之处希望不要误导你,仅供参考

    评论

报告相同问题?

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?