JAVA系统可以调用底层命令吗,java底层调用

在编写java或者是android程序中,总难免会调用到本地的资源,这个时候就会牵扯到各种文件以及各种机制,如JNI机制,就是涉及到跨平台调用的,是除了调用平台自己的类,方法之外,扩大自身资源的又一重要平台设计板块。而在这里,关键点就在于调用的是操作系统的资源,这对于提高效率,加强网络编程起着极为重要的作用。

注意javax代表的是扩展的类。

JNI即是java native interface,java本地调用。JNI是一种方法,一种标准,它使java平台能调用其他如:c/c++的库,方法等,如动态链接库dll(注意,静态链接库为lib),申明调用的dll使用system.loadLibrary(),同时规定其必须在static内。再申明加载的dll的方法,但不需要实现其函数体,因为函数体是在其调用的平台(如c/c++编程的windows系统)之内实现的。

还应搞清楚库,API的区别,javah,javac的概念。其实库与API的区别就在于库是跨平台调用的方法,而API是平台自身所提供的方法。javah是java与c的接口,实现库,在jdk存放路径中可找到javah.exe。javac是java的编译器,在eclipse中是通过在菜单中的run进行间接调用的,形成class文件,在jdk存放路径中可以找到javac.exe。

注意在编程中出现的各种文件,lib文件,dll文件,h文件(头文件),class文件,obj文件,库文件等这些都是很重要额的概念。

DLL即是dynamic link library动态链接库。其实本身相当于一个没有main函数的类,也就是方法块。关键作用在于被其他的程序所共享。里面所存放的是具体实现的函数。

lib文件分为动态和静态两种。静态的是静态链接库lib,动态的是导入库lib。动态lib里面存放声明与实现,编译后将所有代码嵌入到宿主程序中。静态的lib只存放声明,是对导出部分的声明,其实现部分存放在dll文件中,编译时只加载导出声明部分,具体实现在dll那里,相当于h文件。

obj文件是代码编译后生成的中间文件,是二进制文件,需要连接器和资源文件进行连接生成可执行文件(exe文件)。obj文件使用相对地址,exe文件使用绝对地址。

class文件全称java class文件,是java的源文件,java的特色,不同于C/C++的编译方式,class文件是二进制的文件,他是跨平台的,可以运行在所有支持jvm虚拟机的硬件设备及操作系统上,经过编译以后形成字节码在jvm上运行。

jvm是java的虚拟机,负责加载java class,jvm里面有class loader,分别有rootstrap classloader,extension classloader,application classloader。rootstrap classloader负责加载java.*的类,extension classloader负责加载javax.*以及jdk路径的jre里面的lib里面的ext所包含的类。application classloader加载应用程序自身的类。

h文件(头文件)作用是对于C/C++程序通常由两部分组成头文件以及定义文件,头文件的作用就是一种包含功能函数以及数据接口声明的,主要用于保存程序声明的文件,定义文件用于保存程序的实现。

库文件可以看成是一个仓库,里面提供了变量,函数,类,经过“无仓库--静态链接库--动态链接库”的演变,静态链接库里面不允许包含其他的静态或动态的链接库,但是动态链接库则可以,静态链接库的程序会将代码包含到最终生成的exe文件中,而动态链接库则不会。

定义文件是一种帮助检测有害的和不需要的软件并阻止其在计算机上安装或运行的文件。(未理解)

除了以上的文件之外,要使用到的还有System类,Runtime类,这是跨平台应用必须掌握的。对于System类,在此处最大的作用是加载库文件System.loadLibrary(),并通过javah做成h文件进行加载。而Runtime最大的作用就是运行命令,RunTime.getRunTime().exec(),因此就形成了调用以及命令这两大至关重要的板块。但是这两者的作用不仅仅在于此。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值