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

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文件进行加密以防止调试或破解,而安装程序只是将一个或多个文件进行压缩,并对要安装进行配制。  
镜像更不是文件的壳,它一般是将光盘做成一个文件(格式一般也是压缩的)。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值