免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: art_codes
打印 上一主题 下一主题

[C++] 确认一下c++中不能使用interface(如java)那样的功能把 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2009-03-26 13:21 |显示全部楼层
原帖由 shan_ghost 于 2009-3-26 13:06 发表 [url=http://bbs2.chinaunix.net/redirect.php?goto=findpost&pid=10284287&ptid=1406918]——无视了GPU,无视了PPU,无视了far cry,无视了无数人投入大量资金添置的昂贵硬件。


你如果一定要在Java里面使用GPU,那你可以使用JGPU,JVM留下的JNI接口就是操作系统/硬件 跟Java之间的桥梁,你觉得少了什么东西完全可以自己加。
至于开放性,Java已经完全开源了,还有比这更开放么?

论坛徽章:
0
12 [报告]
发表于 2009-03-26 16:29 |显示全部楼层
原帖由 shan_ghost 于 2009-3-26 15:43 发表


有JGPU,有没有JMMX?有没有JSSE?有没有JPPU?有没有JOPENGL、JDX 3D?

JGPU又是哪个版本的JVM才有的?是否我必须要求用户下载最新的JVM1.6甚至(在GPU标准化之后)下载JVM2.0呢?

JGPU本身有没有标 ...

如果你的项目确实需要在Java里使用GPU,那你费力气去用JNI整合CUDA又有何不可?

你说的移动设备就更不会少了Java的市场了,这方面你可以看看Google的android,Google本就有野心想用Andriod做成一个移动设备的操作系统,是很难,但要看谁去做了。

论坛徽章:
0
13 [报告]
发表于 2009-03-26 17:22 |显示全部楼层
原帖由 shan_ghost 于 2009-3-26 16:59 发表


别避重就轻。请正面回答: 如何保证在全面硬件支持条件下,JVM的不同版本保持前后兼容?




当开发大型游戏时,我可以用C+汇编写基础算法库,用C++写游戏引擎(精灵、时钟、动画、垃圾收集等等),用 ...

向前兼容应该很多语言都有问题吧,不能指望一开始就能预见未来?后向兼容我倒不觉得Java有什么问题,JDK7的支持JDK1.1编写的class类不会有问题。


在你定的场景里面,我能想到的也就可以用Java来处理网络通讯,JDK7里对异步IO支持应该会有很大改进。在别的B/S,C/S架构里面,混用Java/C++是很常见的事情了。

我跟这贴从来没有说Java比C++好,只是不愿意看见别人一味否定Java,语言没有好坏,你功力深了,怎么取舍,怎么融合都信手拈来。。

[ 本帖最后由 yovn 于 2009-3-26 17:24 编辑 ]

论坛徽章:
0
14 [报告]
发表于 2009-03-26 18:26 |显示全部楼层
原帖由 shan_ghost 于 2009-3-26 18:01 发表
呵呵,别把 硬件 二字漏掉。尤其是用了JNI的时候,尤其是JNI的提供厂商不同的时候——用JNI来支持PPU,你我的实现肯定不能一样;将来JAVA自己推出支持模块了,肯定又和我们的实现有所不同。

有JNI硬件支持规 ...


1.JNI实现的方式很灵活,可以是动态库的,也可以是静态库的,是虚拟机实现的标准,不是厂商要实现的标准,所以你的硬件兼容我不是很明白你指什么


2.
另外,很多时候是不能容忍进程间通信的低效率的——能否用Java轻易编译出来一个.so文件,与C/C++生成的.o文件连接起来、并在C/C++中直接调用Java的方法

这点我倒是可以肯定地告诉你,可以,而且我做过类似的。JNI有两部分,一部分是Java call Native method,一部分就是C/C++ 的Invocation API,C++创建私有的JVM,然后调用Java正常的需求。

3.
事实上,你多翻翻C/C++版的帖子,看看各位版主的shell脚本功底如何——这些脚本,很容易就能成为C/C++的一部分。这就是开放


同样也很容易成为Java的一部分,Java的脚本解释功能本就不弱,BeanShell,Javascript,Ruby,PHP,Pyhon等等都有对应的实现,另外从Java6开始有很标准的动态语言接口。


你看到我的哪一句话,是在毫无根据的“一味否定Java”?

至于这句,艾斯尼勒 老兄都知道我的意思了,不是针对你

论坛徽章:
0
15 [报告]
发表于 2009-03-27 13:20 |显示全部楼层
1.JIT是由虚拟机完成的,C++也可以JIT?C++也由虚拟机去执行?还是让操作系统去帮你完成,微软似乎没有这么做的理由。

2.Java里面并不是种类型都是对象,int只是原始类型,所以没有vector<int>,但是借助JDK的自动装箱,vector<int>和vector<Integer>的区别几乎没有了。

论坛徽章:
0
16 [报告]
发表于 2009-03-27 13:45 |显示全部楼层
原帖由 sorrento 于 2009-3-27 13:42 发表


1.看来前面shan_ghost兄那么多关于虚拟机和JIT的论述都是白说了,你没明白。
2.vector就是vector,滑特卢兄说那么多,你也似乎都忽略了。

不知道你不明白还是我不明白。。。。vector<Integer>就是vector<int *>我不苟同,且不说Java里面没有指针,要讨论GC的话,前面也已经说过,说来说去不就是说C++的RAII么?

论坛徽章:
0
17 [报告]
发表于 2009-03-27 14:21 |显示全部楼层
1.你说VC++的话,那我承认CRL是可以JIT,但那是微软的C++,并不是标准的C++,JVM规范至少是开放的,并不只是Sun一个人的Java了。
2.你说的Java里面的指针只是概念上的,你理解成指针也好,引用也好只是便于你的理解,仅此而已。

论坛徽章:
0
18 [报告]
发表于 2009-03-27 21:39 |显示全部楼层
2. 时空效率不如当前c++编译器采用的,流行的实现方式。

对member function, 采用的是one function one slot的方式。

struct Class {
size_t size;
void * (* ctor) (void * self, va_list * app);
void * (* dtor) (void * self);
void * (* clone) (const void * self);
int (* differ) (const void * self, const void * b);
};

一个对象有多少成员函数, 就有至少有多少个函数指针。


说穿了还不是在编译器上实现,静态关联.
如果我这样呢:


int  class_function_x ( void * self, void * b);

struct Class {

};


这样难道就不是OO么?C++本质上不就是这样处理非虚函数么?OO非要a.b()就叫OO么?
如果这样,Window NT内核难道不是OO设计的例子,Window NT内核里提供的对象怎么没见到C++的影子呢?

[ 本帖最后由 yovn 于 2009-3-27 21:49 编辑 ]

论坛徽章:
0
19 [报告]
发表于 2009-03-27 22:32 |显示全部楼层
原帖由 yhb04 于 2009-3-27 22:18 发表
我不知道他指的内核是什么。   但是, windowsNt内核里提供的对象, 就是windows内核对象的意思吧?
Process, Thread, Mutex 这些东西?

先不管它们算不算OO。

HANDLE h1 = CreateProcess( ... );
HANL ...

你可以参考这个评论:http://www.douban.com/review/1562768/
看看windows是不是具备面向对象的特点
继承,封装,抽象,以及消息传递机制那个没有。

论坛徽章:
0
20 [报告]
发表于 2009-03-27 22:35 |显示全部楼层
浪费了较多时间在这个灌水贴上了, 睡觉去,不打算跟帖了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP