首页 > 编程知识 正文

javavm(JavaVMName漏洞)

时间:2023-12-24 12:05:52 阅读:321133 作者:KSPB

本文目录一览:

java中vm技术是什么

vm就是java虚拟机,java不是基于操作系统运行的,而是在虚拟机中运行的,这也是java为什么能实现跨平台的原因,java编译器将java源程序编译成字节码,字节码是一种中间语言,只有java虚拟机猜能解释字节码,所以java的类文件是在虚拟机上运行的

如何查看计算机中java vm版本

步骤如下:

1在开始,输入cmd。

2在运行中输入java -version回车。

就会显示java vm的相关信息。

载入java vm时windows出现错误 2怎么解决

解决方法:

UG NX11.0点击“install liscense server”因为JAVA安装出现问题:

载入 JAVA VM时WINDOWS 出现错误:2”

改变JAVA的配置方法:

1)不要使用JAVA安装教程中的JAVA_HOME变量。

2)建立PATH和CLASSPATH时使用绝对路径,不要使用%JAVA_HOME%。即将%JAVA_HOME%用C:Program FilesJavajdk1.8.0_144(jdk安装路径)手动替换。

然后,UG NX11.0就能继续进行下去。

Java是一种可以撰写跨平台应用程序的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。

Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码,从而实现了“一次编译、到处执行”的跨平台特性。

不过,每次的编译执行需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。但在 J2SE 1.4.2 发布后,Java 的执行速度有了大幅提升。

与传统程序不同,Sun 公司在推出 Java 之际就将其作为一种开放的技术。全球数以万计的 Java 开发公司被要求所设计的 Java 软件必须相互兼容。

“Java 语言靠群体的力量而非公司的力量”是 Sun 公司的口号之一,并获得了广大软件开发商的认同。这与微软公司所倡导的注重精英和封闭式的模式完全不同。

JAVA VM是什么意思

java虚拟机,是java实现跨平台的工具。

java生成的class文件在虚拟机上执行,通过生成不同平台上的代码,实现跨平台。而不用编成人员为了在不同的平台上运行,而写不同的代码。

JNIEnv和JavaVM的区别

Java和Android中JavaVM对象有区别

在java里,每一个process可以产生多个java vm对象,但是在android上,每一个process只有一个Dalvik虚拟机对象,也就是在android进程中是通过有且只有一个虚拟器对象来服务所有java和c/c++代码。 Java 的dex字节码和c/c++的*.so同时运行Dalvik虚拟机之内,共同使用一个进程空间。之所以可以相互调用,也是因为有Dalvik虚拟机。当java 代码需要c/c++代码时,在Dalvik虚拟机加载进*.so库时,会先调用JNI_Onload(),此时就会把JAVA VM对象的指针存储于c层jni组件的全局环境中,在Java层调用C层的本地函数时,调用c本地函数的线程必然通过Dalvik虚拟机来调用c层的本地函数,此时,Dalvik虚拟机会为本地的C组件实例化一个JNIEnv指针,该指针指向Dalvik虚拟机的具体的函数列表,当JNI的c组件调用Java层的方法或者属性时,需要通过JNIEnv指针来进行调用。 当本地c/c++想获得当前线程所要使用的JNIEnv时,可以使用Dalvik虚拟机对象的JavaVM* jvm-GetEnv()返回当前线程所在的JNIEnv*。

如何得到JavaVM,JNIEnv接口

JavaVM接口

第一种方式,在加载动态链接库的时候,JVM会调用JNI_OnLoad(JavaVM* jvm, void* reserved)(如果定义了该函数)。第一个参数会传入JavaVM指针。

第二种方式,在native code中调用JNI_CreateJavaVM(jvm, (void**)env, vm_args)可以得到JavaVM指针。

两种情况下,都可以用全局变量,比如JavaVM* g_jvm来保存获得的指针以便在任意上下文中使用。

Android系统是利用第二种方式Invocation interface来创建JVM的。

JNIEnv接口

JNI开发最常见的错误就是滥用了JNIEnv接口。需要强调的是JNIEnv是跟线程相关的。

在native method中,JNIEnv作为第一个参数传入。那么在JNIEnv不作为参数传入的时候,该如何获得它?JNI提供了两个函数:(*jvm)-AttachCurrentThread(jvm, (void**)env, NULL)和(*jvm)-GetEnv(jvm, (void**)env, JNI_VERSION_1_2)。两个函数都利用JavaVM接口获得JNIEnv接口,上面已经讲到如何获得JavaVM接口。

JNI规范也说明,可以将获得JNIEnv封装成一个函数。

1

2

3

4

5

6

JNIEnv* JNU_GetEnv()

{

JNIEnv* env;

(*g_jvm)-GetEnv(g_jvm, (void**)env, JNI_VERSION_1_2);

return env;

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。