在Java中使用VC++组件

介绍
JNI是我喜欢的java编程框架;它让你你自由的使用本地编写的代码。例如,如果你想要在你的java程序中使用Windows API(不如说dll),那么你就要用JNI。

Java最受欢迎的特性就是它的平台无关性。但是,有时候这一特性也会使你将Java程序与本地平台整合变得困难。

例如,在我们的工程中,将消息添加到数据库之前,我们使用MSM Q(Microsoft Messaging Que)的队列机制来维护消息(为了避免消息丢失)。Microsoft提供了MSM Q API,它是Windows的API。但是我们的程序使用Java来处理消息的,并且Java不能直接访问这样的API(dll)。因此我们决定做一个中间DLL,它能够作为Java和VC++之间的桥(我们用过的技术Java Native Inteface或JNI)。

在进一步介绍之前,你应该知道或熟悉的下面一些知识:

1.本地方法:本地方法是一个用在.Java文件中声明的方法,并且这个声明将在你的本地代码(对于Windows来说是在VC++中)中定义。

2. 静态块:Java中的静态块是指在任何其他事情发生前就能够被执行的代码块。

那么让我们开始吧。首先,用本地方法声明来写你的Java程序。下面代码来自源代码中的例子:

public class JNITest
{
static
{
System.loadLibrary("JNITest"); // Loading dll in memory
}

native void showMessage( String str); // Declaring native method
public JNITest()
{
System.out.println( "In the constructor of the Java program" );
}

public static void main( String s[] )
{
JNITest JNT = new JNITest();
JNT.showMessage("Passing string from Java");
}
}

在上面的代码中我们声明了showMessage方法,它是本地的方法,然后调用它,w.r.t 类JNITest的对象。

执行下面的步骤:

1.编译代码生成.class文件

2.在JDK文件夹中找到javah命令

3.在Dos命令行下执行javah -jni JNITest

执行完上面的步骤将产生JNITest .h文件。这个.h文件包含了在Java代码中声明的本地方法的VC++中的函数名。

创建JNI DLL

我已经完成了一半了。

时间: 2024-12-03 14:11:21

在Java中使用VC++组件的相关文章

java中如何在表格中添加组件

问题描述 java中如何在表格中添加组件 getColumnModel().getColumn(1).setCellRenderer() 各位,能告诉我怎样在表格中添加组件,如何是按钮,能点击那种 解决方案 参考:http://blog.sina.com.cn/s/blog_4af14e710102v07y.htmlhttp://blog.163.com/chunlei_cl/blog/static/81843020098300039472/http://download.csdn.net/do

java中解决组件重叠的问题(例如鼠标移动组件时)

java中解决组件覆盖的问题!      有时候在移动组件的时候会出现两个组件覆盖的情况,但是你想让被覆盖的组件显示出来或者不被覆盖!在设计GUI时已经可以定义组件的叠放次序了(按摆放组件的先后顺序). 真正麻烦的是响应哪个组件,这就要创建一个链表,把组件对象按顺序存起来,响应事件时扫描这个链表,按 链表中的先后顺序选择响应组件对象.      所以要想满足自己的需求,那么在添加组件的时候就要注意顺序就好了!      另外如果不想用上面的方法,那么你就采用JLayeredPane这个类,分层面

java代码-java中对键盘监听是不是一定要用到组件

问题描述 java中对键盘监听是不是一定要用到组件 能不能不用组件能编写一段代码直接在某一个时刻对键盘进行监听,有没有具体的源代码 解决方案 document.body.onkeypress=function()//键盘点击事件 { var code = window.event.keyCode;---得到键盘点击号..一般都用回车13 abc.. 97 98 99... ...下面添加代码就行了 code==? {function(){}}.. }

在java中应该使用哪几种组件才能实现下图的功能

问题描述 在java中应该使用哪几种组件才能实现下图的功能 解决方案 swing里的各种组件,,,,, 解决方案二: JFrame做为容器,放置JPanel,然后加上JLabel.JTextField,JComboBox,JTextArea和JList 解决方案三: swt组件,java很少用的 解决方案四: 图片上传功能的实现(FileUpload组件的使用)

java组件-java中布局LinearLayout和组件ListView属于什么类型的数据?

问题描述 java中布局LinearLayout和组件ListView属于什么类型的数据? 因为我看到都可以定义为变量,所以他们肯定属于某种数据类型,肯定不是基本数据类型,那是引用数据类型吗,如果是引用数据类型,那取值范围是什么 解决方案 1.java中的数据类型分为基本类型与引用类型. 2.LinearLayout和ListView都是类,它们的实例是引用类型. 3.对于LinearLayout和ListView这样的类,你可以实例化无数个对象,所以它们没有取值范围. 4.有一些特殊的类:单例

java中如何实现批量上传图片,用什么组件?

问题描述 java中如何实现批量上传图片,需要用到什么组件?有具体代码就更好... 解决方案 解决方案二:JDK中冒似没有这样的组建给你用,自己写一个吧解决方案三:用struts就可以实现批量上传...介绍这个文章给你看一下..比较简单.http://lovexuwenhao.javaeye.com/blog/459064解决方案四:swfupload解决方案五:jspSmartUpload;common-fileUpload;structs和spring也可以实现不过这些都限于JAVAWEB开

Java中关于XML的API惊鸿一瞥

xml 简单介绍一下Java关于xml的API,这样大家看到了缩写就知道是干什么的了.水平有限,多多包涵. 1.JAXP(Java API for XML Parsing) 2.JAXB(Java API for XML Binding) 3.JAXM(Java API for XML Messaging) 4.JAX-RPC(Java API for XML-RPC) 1.JAXP定义了在Java中使用DOM, SAX, XSLT的通用的接口.这样在你的程序中你只要使用这些通用的接口,当你需要

Java 中的 XML:使用 Castor 进行数据绑定

xml|数据 对于主要关心文档的数据内容的应用程序来说,Java 的 XML 数据绑定是 XML 文档模型的强大替代方案.在本文中,企业 Java 专家 Dennis Sosnoski 介绍了数据绑定并讨论了什么使它如此吸引人.然后他向读者展示了如何使用 Java 数据绑定的开放源代码 Castor 框架处理日益复杂的文档.如果您的应用程序关心 XML 的数据更甚于关心 XML 文档本身,您可能希望找出这个处理 Java 中 XML 的容易而又高效的方法.大多数处理应用程序中 XML 文档的方法

研究 Java 中 XML 文档模型的特性和性能

xml|性能 Java 中的 XML: 文档模型,第一部分:性能 研究 Java 中 XML 文档模型的特性和性能 文档选项 将此页作为电子邮件发送 最新推荐 Java 应用开发源动力 - 下载免费软件,快速启动开发 级别: 初级 Dennis M. Sosnoski, 总裁, Sosnoski Software Solutions, Inc. 2001 年 9 月 01 日 在本文中,Java 顾问 Dennis Sosnoski 比较几个 Java 文档模型的性能和功能.当选择模型时,无法做