您的位置:首页 > 编程语言 > Java开发

关于java调用了windows的api函数的问题解答

2016-07-14 16:15 330 查看
java调用了windows的api函数还可以移植吗?当然不可以,windwos的API只能用于windwos,在linux或其它系统下,它是不能被运行的?

追问:不是说java是跨平台语言吗?这就不能移植了。

补充:你调用JAVA标准的函数,库等,它就是跨平台的。

你直接调用了与系统有关的API,SDK当然不可以的。

追问:偶,谢谢你,我也是这么认为的,虽然我没有学习java,我就一直纠结这个问题,java跨平台调用系统函数还能跨平台,疑问于是就问了,如果不调用系统函数,c和c++程序也可以跨平台了。

补充:C/C++是源码跨平台的,因为它的目标文件是基于系统的目标文件。

而JAVA的目标文件是class,它与目标系统无关,因为它是运行在目标系统的JAVA虚拟机上的。

JAVA的跨平台可以做到一次编译,到处运行,这个是C/C++无法做到的。

其于开源的QT,C++也可以很方便的做跨平台的应用。

追问:我明白了,意思就是c++和c的源代码程序本身跨平台,编译成二进制不能使用,因为编码格式不同,而java首先编译成目标代码class文件,这个格式是通用的,所以在哪个平台都可以使用,最后同个个平台不同的java虚拟机解释class文件成可执行文件,最后执行,之所以java夸请他1是因为目标class相同,对吗?

追问:我明白了,意思就是c++和c的源代码程序本身跨平台,编译成二进制不能使用,因为编码格式不同,而java首先编译成目标代码class文件,这个格式是通用的,所以在哪个平台都可以使用,最后同个个平台不同的java虚拟机解释class文件成可执行文件,最后执行,之所以java夸请他1是因为目标class相同,对吗?

追问:我明白了,意思就是c++和c的源代码程序本身跨平台,编译成二进制不能使用,因为编码格式不同,而java首先编译成目标代码class文件,这个格式是通用的,所以在哪个平台都可以使用,最后同个个平台不同的java虚拟机解释class文件成可执行文件,最后执行,之所以java夸请他1是因为目标class相同,对吗?

追问:那也不对啊,c和c++有虚拟机也能跨平台,比如exe文件在安卓运行有能打开exe的apk格式的模拟器不是也是一样用吗?反之过来akp格式的文件在电脑上有相应的虚拟机模拟出来也能运行apk文件,和java是一个道理,java没有虚拟机就运行不了,只要有相应的虚拟机所有语言都可以跨平台。

补充:JAVA虚拟机目前支持几乎所有操作系统及平台,且它对外设也有自己的接口,而C/C++所有的虚拟机都没有一个统一标准的,且就说你的exe,早期的DOS和现在windows下就不兼容。

追问:偶,好吧,还有一个问题就是安装包是不是属于软件的加壳?包括哪些镜像都是文件的壳?

补充:安装包不能说是加壳,加壳一般指对exe文件进行加密以防止调试或破解,而安装程序只是将一个或多个文件进行压缩,并对要安装进行配制。

镜像更不是文件的壳,它一般是将光盘做成一个文件(格式一般也是压缩的)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: