社区
Java SE
帖子详情
在windows2000下怎样用java实现以下几项功能
bbhl80
2003-10-16 12:05:29
1、修改注册表
2、新建快捷方式
3、调用其它非java程序,列入word excel等
...全文
50
6
打赏
收藏
在windows2000下怎样用java实现以下几项功能
1、修改注册表 2、新建快捷方式 3、调用其它非java程序,列入word excel等
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yiningchen
2003-10-16
打赏
举报
回复
1,2使用JNI,把Windows API封装到JNI
3.Runtime.exec()方法。
bbhl80
2003-10-16
打赏
举报
回复
楼上的各位大虾,多谢多谢!!!
小弟一定细心钻研!!
peacock_king
2003-10-16
打赏
举报
回复
有现成的API:
Windows Registry API Native Interface
地址:
http://www.trustice.com/java/jnireg/
搜索方法:
在www.google.com搜索如下内容:
“how to modify windows registry with java”
chifengwatch
2003-10-16
打赏
举报
回复
gz
imagex
2003-10-16
打赏
举报
回复
jit
JIT(Just In Time,及时编译)技术是个比较好的思想。它的基本原理是:首先通过Java编译器把Java源代码编译成平台无关的二进制字节码。然后在Java程序真正执行之前,系统通过JIT编译器把Java的字节码编译为本地化机器码。最后,系统执行本地化机器码,节省了对字节码进行解释的时间。这样做的优点是大大提高了Java程序的性能,缩短了加载程序的时间;同时,由于编译的结果并不在程序运行间保存,因此也节约了存储空间。缺点是由于JIT编译器对所有的代码都想优化,因此同样也占用了很多时间。
动态优化技术是提高Java性能的另一个尝试。该技术试图通过把Java源程序直接编译成机器码,以充分利用Java动态编译和静态编译技术来提高Java的性能。该方法把输入的Java源码或字节码转换为经过高度优化的可执行代码和动态库 (Windows中的. dll文件或Unix中的. so文件)。该技术能大大提高程序的性能,但却破坏了Java的可移植性。
JNI技术
实际上,有一种通常为我们忽视的技术可以在很大程度上解决这个难题,那就是JNI(Java Native Interface, Java本地化方法)。主张采用纯Java的人们通常反对本地化代码的使用,他们认为在Java程序执行的过程中调用C/C++程序会影响程序的可移植性和安全性。还有一些人认为JNI只是对过去混合编程技术的简单扩展,其实际目的是为了充分利用大量原有的C程序库。
编写jni代码的流程:
1.写java类代码(.java)
2.编译成字节代码(.class)
3.产生c头文件(.h)
4.编写jni实现代码(.c)
5.编译成连接库文件(.dll)
6.运行程序
1. 首先编写需要JNI功能的Java类源文件。其中,需要JNI实现的方法应当用native关键字声明。在该类中,用System. loadLibrary()方法加载需要的动态链接库。关键代码如下:
//Compute.java
……
public class Compute {
public native double comp (double [] params);
……
static {
// 调用动态链接库
System. loadLibrary(“mathlib”);
}
……
}
2. 将该类源文件用Java类编译器编译成二进制字节码文件。由于采用了native关键字声明,编译器会忽视没有代码体的JNI方法部分。
3. 利用javah -jni *.class 生成相关JNI方法的头文件。我们可以手工生成该文件,但是由于Java虚拟机是根据一定的命名规范完成对JNI方法的调用,所以手工编写头文件需要特别小心。
上述文件产生的头文件部分代码如下:
//Compute. h
……
extern “C” {
JNIEXPORT jdouble JNICALL Java_Compute_comp (JNIEnv *, jobject, jdoubleArray);
}
……
可以看出,JNI函数名称分为三部分:首先是Java关键字,供Java虚拟机识别;然后是调用者类名称(全限定的类名,其中用下划线代替名称分隔符);最后是对应的方法名称,各段名称之间用下划线分割。
JNI函数的参数也由三部分组成: 首先是JNIEnv *,是一个指向JNI运行环境的指针;第二个参数随本地方法是静态还是非静态而有所不同——非静态本地方法的第二个参数是对对象的引用,而静态本地方法的第二个参数是对其 Java 类的引用; 其余的参数对应通常 Java 方法的参数,参数类型需要根据一定规则进行映射。
4. 根据头文件编写相应方法的实现代码。由于篇幅所限,具体的实现部分在此不再赘述。在编码过程中,需要注意变量的长度问题,例如Java的整型变量长度为32位,而C语言为16位,所以要仔细核对变量类型映射表,防止在传值过程中出现问题。
5. 利用C/C++编译器将JNI实现代码编译成动态链接库。调用者类中需要显式调用该链接库。
在Win32环境下,可以利用Visual C ++或其他能产生DLL文件的C/C++编译器将实现代码编译成动态链接库。笔者利用的是Microsoft.NET Framework的编译器。编译指令如下,其中%Java_HOME%是笔者的jdk安装目录变量:
cl -I%Java_HOME%\include
-I%Java_HOME%\include\win32
-LD jnicomp. c -Femathlib. dll
在Sun Soloaris下,相应指令为:
cc -G -I/usr/local/java/include -I/usr/local/java/include/solaris jnicomp. c \
-o mathlib. so
注意,编译的时候需要用I指令包含必要的库文件路径。
经过上述处理,就基本上完成了一个包含本地化方法的Java类的开发。
imagex
2003-10-16
打赏
举报
回复
1,2使用JNI,把Windows API封装到JNI
3.Runtime.exec()方法。
楼上完全正确
windows
环境下运行
java
的脚本
windows
环境下运行
java
的脚本 前几天研发时遇到eclipse运行不稳定的情况,明明
实现
了的
功能
有的时候能运行到,有时运行不到,非常让人头疼。于是想在本地搭一套运行环境,方便比较。 说明:
以下
情况主要针对
java
运行 首先考虑Application。maven编译Spring Boot默认打的包是fatjar,所以比较好处理。此处重点考虑传统Application。也可以考虑打成fatja...
利用
Java
制作仿
Windows
记事本(
功能
齐全)
由于期末降至,每年的学校的实训也开始了,实训当然不是每天工地搬砖啊! 嗯,今年的实训是利用
Java
去制作各种各样的东西,有仿
Windows
记事本,有网页浏览器制作,有日历记事本,还有连连看游戏制作,嗯,当然不是全部都做啊,那就来不及了,毕竟学校也是有时间限制的,就三四天时间。我的话,抽到的题目是
Windows
记事本的制作!! 额,顺便说一句,寒假里我要是有空的话,我会继续更的,把各种浏览器连连
Java
程序设计基础——开发环境搭建(
Windows
)
跨平台性作为
Java
的特性之一,而平台是由操作系统(OS)和处理器(CPU)构成的,每个平台都会形成自己独特的机器指令,即该平台可以直接识别,执行的一种由0,1组成的序列代码。因为平台会因为操作系统或者处理器的不同,导致相同的0,1序列表示不同的指令,所以只要OS 或者CPU不同,机器指令就会发生改变。也就是说,在一台机器上编译好的字节码,可能因为机器换了另一种CPU的芯片,使得平台可识别的机器指令发生改变而无法运行,必须重新进行编译。因此想要运行
Java
的字节码文件,就必须依赖
Java
独有的运行环境。
java
实现
简单记事本
本次做这个记事本小程序,主要是为了学习Swing包中几个重要的类JFileChooser,JOptionPane,JMenu,当然也顺便巩固一下前面学的IO 流的知识。 一、简要介绍 1、JFileChooser JFileChooser为用户选择文件提供了一种简单机制,可弹出针对用户主目录的文件选择器。编写记事本程序主要用到了
以下
几种方法: a. showOpenDialog(C...
基于
java
服务端
实现
二维码扫描
在
Java
中,可以使用第三方库来识别二维码内容。一个常用的库是ZXing(Zebra Crossing),它提供了强大的二维码处理
功能
。首先,确保已将ZXing库添加到项目中。可以手动下载ZXing JAR文件,也可以使用构建工具(如Maven或Gradle)来管理依赖。在上述代码中,首先通过方法将二维码图片加载为对象。然后,创建对象,它将作为参数。接下来,使用将转换为。使用创建Reader对象,并调用decode()方法传入来解码二维码。最后,通过Result对象获取二维码的内容。
Java SE
62,612
社区成员
307,332
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章