社区
Java SE
帖子详情
在windows2000下怎样用java实现以下几项功能
bbhl80
2003-10-16 12:05:29
1、修改注册表
2、新建快捷方式
3、调用其它非java程序,列入word excel等
...全文
88
6
打赏
收藏
在windows2000下怎样用java实现以下几项功能
1、修改注册表 2、新建快捷方式 3、调用其它非java程序,列入word excel等
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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()方法。
楼上完全正确
Java
程序
实现
Windows
串口通信方法
本文还有配套的精品资源,点击获取 简介:本文探讨了在
Java
中
实现
Windows
串口通信的两种方法:通过JNI调用
Windows
API和使用RXTX第三方库。JNI方法涉及编写本地代码和加载动态链接库,而RXTX库提供了简化的API以跨平台
实现
串口通信。文中以RXTX为例展示如何设置串口参数、监听数据事件以及发送和接收数据。同时,本文强调了正确配置JRE和系统路径的重要性...
Java
软件锁屏
功能
实现
指南
在操作系统层面,锁屏
功能
是保护用户数据安全的一项基本
功能
。在
Java
应用中
实现
锁屏
功能
通常需要与底层系统交互。
Java
通过JNI(
Java
Native Interface)或JNA(
Java
Native Access)这类桥接技术
实现
与本地系统API的交互,进而控制锁屏行为。对于开发者而言,了解这些技术如何
实现
锁屏
功能
,不仅有助于扩展应用程序的
功能
,还能加深对
Java
跨平台特性的理解。
windows
环境下运行
java
的脚本
windows
环境下运行
java
的脚本 前几天研发时遇到eclipse运行不稳定的情况,明明
实现
了的
功能
有的时候能运行到,有时运行不到,非常让人头疼。于是想在本地搭一套运行环境,方便比较。 说明:
以下
情况主要针对
java
运行 首先考虑Application。maven编译Spring Boot默认打的包是fatjar,所以比较好处理。此处重点考虑传统Application。也可以考虑打成fatja...
利用
Java
制作仿
Windows
记事本(
功能
齐全)
由于期末降至,每年的学校的实训也开始了,实训当然不是每天工地搬砖啊! 嗯,今年的实训是利用
Java
去制作各种各样的东西,有仿
Windows
记事本,有网页浏览器制作,有日历记事本,还有连连看游戏制作,嗯,当然不是全部都做啊,那就来不及了,毕竟学校也是有时间限制的,就三四天时间。我的话,抽到的题目是
Windows
记事本的制作!! 额,顺便说一句,寒假里我要是有空的话,我会继续更的,把各种浏览器连连
Jawin 2.0 Alpha1:
Java
与
Windows
交互的新桥梁
简介:Jawin项目旨在通过桥接器使
Java
程序能够直接调用
Windows
API,增强
Java
应用程序与
Windows
系统的交互能力。版本2.0 Alpha1提供了一组
Java
类来包装
Windows
API,允许
Java
开发者使用
Java
语法调用系统级
功能
。压缩包包含Jawin库、示例代码、文档、API参考、构建脚本、源代码以及测试用例,为开发者提供了深入学习和
实现
Java
与
Windows
交互的资源。尽管作为早期版本可能存在一些问题,Jawin仍为
Java
开发者打开了更高效利用
Windows
功能
的大门。
Java SE
62,634
社区成员
307,266
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章