网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.JAVA学习,是一条漫长的道路(转贴.
.突破Java异常处理规则.
.SpringFramework入门实用攻略.
.Java理论与实践:哈希.
.Jdk和Tomcat的安装与配置.
.Java中“异常机制”深入研究.
.只能对数值操作的TextBox.
.在客户端JAVASCRITP处理TEXTFORM.
.Struts模块化编程经典实战教程(一.
.SCJP认证套题解析之八.
.Seam无缝集成:为JSF定做应用程序.
.JBoss4.0数据源配置大全.
.Java 图形用户界面设计(下).
.引用造型protected和private的困.
.Java远程方法调用.
.Prevayler—轻量级数据存储框架.
.轻松掌握 Java 泛型 (第 3 部分).
.探讨JDBC 4.0在设计和性能方面的.
.对象的创建和存在时间.
.Eclipse的图形化工具加速BTT5.1.

java基础知识:KVM的扩展

发表日期:2008-1-5


    KVM本身只带有cldc1.1的类库,功能十分简单,不能满足用户的需求,本篇介绍如何对KVM进行扩展。

    对KVM进行扩展,在Java层十分简单,只要向在编译Java代码时多加一个文件就可以,没什么要说的,麻烦的是假如在加入的Java类中有本地操作该怎么办?本地的C语言代码放在哪里编译才能够供KVM调用?

    答案是KNI.下面就以KNI为主要内容介绍如何对KVM加以扩展,在最后附加一个具体的实现例子。

    1. KNI的特点:

    KNI(K Native Interface)是SUN的KVM(K Virtual Machine)所使用的本地方法调用机制。

    JNI(Java Native Interface)是已经为我们所熟悉的Java本地方法调用机制,JNI一般使用在J2SE或J2EE平台上,本地方法被编进动态链接库,在运行时由Java虚拟机载入。

    KVM中也需要本地调用,但JNI是“重量级”的本地调用方式,在使用时消耗的资源较多,所以针对KVM设计出了KNI,KNI被称为是JNI的一个简化版,是“轻量级”的本地调用方式。KVM不能加载动态链接库,所以在KNI机制下,本地方法不是写在库中,而是编入虚拟机内部。

    以下是KNI与JNI最重要的一些区别:

    KNI是“实现层”的API,即它是虚拟机实现的一部分,修改KNI的API就要重新编译虚拟机,这些API的细节对于Java程序员来说是不可见的;而JNI的API是在运行时动态加载进来的,它的修改与虚拟机无关,JNI的API对于Java程序员来说是可见的。

    KNI的函数建在虚拟机内部,只能为此虚拟机所独享;而JNI的函数放在动态链接库中,可以为多个虚拟机共用。

    由于在虚拟机内部,KNI的很多操作方式与虚拟机有关,在传递参数和控制对象的时候都要先经过一些非凡的处理;JNI的调用方式比较直接,但可能会增加安全隐患。

    KNI是JNI的简化版,功能也会弱一些,它不能创建对象,也不能调用Java层的方法。

    总之,“在虚拟机内部”是KNI所有特点的根源,记得这一点,KNI的所有内容都非常轻易理解。

    下文各节对KNI的各个方面做一下介绍,只详述那些KNI所特有的内容,更全面的内容可以参考KVM附带的KNI specification.

    2. 数据类型:

    2.1 原始类型:

java基础知识:KVM的扩展(图一)

    上表中间一列是KNI所提供的8种原始类型,它们的长度与所对应的Java原始类型的长度相同。

    2.2 对象类型:

java基础知识:KVM的扩展(图二)

    上图是KNI所支持的对象类型,其实所有对象都可作为jobject,只是对图中所示的这些object类的子类有非凡的支持,比如为数组类提供了操作数组元素的方法。

    2.3 返回类型:

java基础知识:KVM的扩展(图三)

    “返回类型”也就是本地方法的返回值的类型,KNI对它们有专门的定义。

    上表右边一列即本地方法的返回类型。

进入讨论组讨论。

    2.4 字符串类型、类描述符、字段描述符:


上一篇:入门:Java连接各种数据库的实例 人气:544
下一篇:关于spring框架中的ioc的幽默解释 人气:600
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐