易截截图软件、单文件、免安装、纯绿色、仅160KB

JAVA调DLL,.JNI技术实践

鉴于爬虫开发需要一个图片解析功能的函数,到网络上查找了一些jni方面的内容,并做了自己的一些修改,具体如下:
   目前java与dll交互的技术主要有3种:jni,jawin和jacob。Jni(Java Native Interface)是sun提供的java与系统中的原生方法交互的技术(在windows\linux系统中,实现java与native method互调)。目前只能由c/c++实现。后两个都是sourceforge上的开源项目,同时也都是基于jni技术的windows系统上的一个应用库。Jacob(Java-Com Bridge)提供了java程序调用microsoft的com对象中的方法的能力。而除了com对象外,jawin(Java/Win32 integration project)还可以win32-dll动态链接库中的方法。就功能而言:jni >> jawin>jacob,其大致的结构如下图:
jni技术体系功能结构图
就易用性而言,正好相反:jacob>jawin>>jni。
Jvm封装了各种操作系统实际的差异性的同时,提供了jni技术,使得开发者可以通过java程序(代码)调用到操作系统相关的技术实现的库函数,从而与其他技术和系统交互,使用其他技术实现的系统的功能;同时其他技术和系统也可以通过jni提供的相应原生接口开调用java应用系统内部实现的功能。
在windows系统上,一般可执行的应用程序都是基于native的PE结构,windows上的jvm也是基于native结构实现的。Java应用体系都是构建于jvm之上。
Windows系统上的java体系
Jni对于应用本身来说,可以看做一个代理模式。对于开发者来说,需要使用c/c++来实现一个代理程序(jni程序)来实际操作目标原生函数,java程序中则是jvm通过加载并调用此jni程序来间接地调用目标原生函数。
Jni调用过程示意图
l        Jni程序开发的一般操作步骤如下:
1.      编写java中的调用类,并用javac   包名.*.java 命令 得到该调用类的class文件
2.      用javah 包名.* 生成c/c++原生函数的头文件
3.        c/c++中调用需要的其他函数功能,实现原生函数(原则上可以调用任何资源)
4.        将项目依赖的所有原生库和资源加入到java项目的java.library.path
5.      生成java调用类对应的dll库
6.      发布java应用和dll库
l       


相关文档:

flex 处理java后台返回的JavaBean

关于flex处理java 实体bean,我也查了好多资料,现在终于搞定,写一个简单的例子,分享给大家
高手就不用看了
/*student实体类=java*/
public class Student implements java.io.Serializable{
 private String sNo;
 private String sName;
 get..
 set..
}
/*flex as类 Student.as*/
packa ......

java中汉字转拼音

代码如下:
  以下为引用的内容:
  package com.example.pinyin.demo2;
  import net.sourceforge.pinyin4j.PinyinHelper;
  import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
  import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
  import net.sourceforge.pinyin4j.form ......

RedHat AS4配置Java环境

到Sun网站下载自解压安装包jdk-xxxx.bin
安装:
[root@RHEL4 JDK-1.5.0.06]# chmod +x jdk-xxxx.bin
[root@RHEL4 JDK-1.5.0.06]# ./jdk-xxxx.bin
选择安装位置,
J2SDK安装目录: /usr/local/jdk
配置Java环境变量:
在 ~/.bash_profile 里加入下列几行环境变量即可:
export JAVA_HOME=/usr/local/jdk
export PAT ......

java列出某文件夹下的所有文件


File   f=new   File("DerectoryName");      
  String   []results=f.list();   
  
import java.io.*;    
  public class listFile    
  {  &nb ......

java调用dll例子


最佳答案
1. 编写范例文档
public class TestNative
{
private native static int Max(int a,int b);
public static void main(String[] args)
{
System.out.println(Max(4,5));
}
static
{
System.loadLibrary("VCdll");
}
}
其中
LoadLibrary中的DLL文件名称可以 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号