因胸联盟 发表于 2015-1-18 11:34:35

了解下JAVA的来源根基接口(RNI)

学习JAVA的目的更多的是培养自身的工作能力,我觉得工作能力的一个核心就是:独立思考能力,因为只有独立思考后,才会有自己的见解
同J/Direct比拟,RNI是一种比非Java代码庞大很多的接口;但它的功效也非常壮大。RNI比J/Direct更靠近于JVM,这也使我们能写出更无效的代码,能处置固无方法中的Java对象,并且能完成与JVM外部运转机制更严密的集成。
RNI在观点上相似Sun公司的JNI。思索到这个缘故原由,并且因为该产物还没有正式竣工,以是我只在这里指出它们之间的次要差别。欲懂得更具体的情形,请参考微软公司的文档。
JNI和RNI之间存在几方面有目共睹的差别。上面列出的是由msjavah天生的C头文件(微软供应的msjavah在功效上相称于Sun的javah),使用于后面在JNI例子里利用的Java类文件ShowMsgBox。
/*DONOTEDIT-
automaticallygeneratedbymsjavah*/
#include<native.h>
#pragmawarning(disable:4510)
#pragmawarning(disable:4512)
#pragmawarning(disable:4610)

structClassjava_lang_String;
#defineHjava_lang_StringClassjava_lang_String

/*HeaderforclassShowMsgBox*/

#ifndef_Included_ShowMsgBox
#define_Included_ShowMsgBox

#defineHShowMsgBoxClassShowMsgBox
typedefstructClassShowMsgBox{
#include<pshpack4.h>
longMSReserved;
#include<poppack.h>
}ClassShowMsgBox;

#ifdef__cplusplus
extern"C"{
#endif
__declspec(dllexport)void__cdecl
ShowMsgBox_ShowMessage(structHShowMsgBox*,
structHjava_lang_String*);
#ifdef__cplusplus
}
#endif

#endif/*_Included_ShowMsgBox*/

#pragmawarning(default:4510)
#pragmawarning(default:4512)
#pragmawarning(default:4610)除可读性较差外,代码里还埋没着一些手艺性成绩,待我逐一道来。
在RNI中,固无方法的程序员晓得对象的二进制结构。如许便同意我们间接会见本人但愿的信息;我们不用象在JNI里那样取得一个字段或办法标识符。但因为并不是一切假造机都必要将不异的二进制结构使用于本人的对象,以是下面的固无方法只能在MicrosoftJVM下运转。
在JNI中,经由过程JNIEnv自变量可会见大批函数,以便同JVM打交道。在RNI中,用于把持JVM运作的函数酿成了可间接挪用。它们中的某一些(如把持非常的那一个)相似于它们的JNI“兄弟”。但年夜多半RNI函数都有与JNI中分歧的名字和用处。
JNI和RNI最严重的一个区分是“渣滓搜集”的模子。在JNI中,渣滓搜集在固无方法实行时代恪守与Java代码实行时不异的划定规矩。而在RNI中,要由程序员在固无方法举动时代自行卖力“渣滓搜集器”器的启动与中断。默许情形下,渣滓搜集器在进进固无方法前处于不举动形态;如许一来,程序员便可假定筹办利用的对象用不着在谁人工夫段内举行渣滓搜集。但是一旦固无方法筹办长工夫实行,程序员就招考虑激活渣滓搜集器——经由过程挪用GCEnable()这个RNI函数(GC是“GarbageCollector”的缩写,即“渣滓搜集”)。
也存在与全局句柄特征相似的机制——程序员可使用可包管特定的对象在GC举动时代不至于被看成“渣滓”收失落。观点是相似的,但称号有所差别——在RNI中,人们把它叫作GCFrames。
一旦你有了思想,那你编的程序就有了灵魂,不管是什么语言到了你的手里都会是你的工具而已,他们的价值是能尽快帮助你实现你想要的目标。但是如果你没有了思想,那就像是海里的帆船失去了船帆,是很难到打海的另一边的。

老尸 发表于 2015-1-21 10:26:22

那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!

简单生活 发表于 2015-1-24 12:03:25

Java是一种计算机编程语言,拥有跨平台、面向对java

只想知道 发表于 2015-1-24 16:38:16

是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能

不帅 发表于 2015-2-2 11:01:31

是一种使网页(Web Page)产生生动活泼画面的语言

金色的骷髅 发表于 2015-2-7 18:10:21

吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧

再现理想 发表于 2015-2-11 08:40:31

Java是一种计算机编程语言,拥有跨平台、面向对java

柔情似水 发表于 2015-3-11 02:02:19

《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。

莫相离 发表于 2015-3-13 22:58:30

《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。

admin 发表于 2015-3-20 20:57:07

任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言

兰色精灵 发表于 2015-4-3 05:10:51

你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。

灵魂腐蚀 发表于 2015-5-8 01:58:59

象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。

爱飞 发表于 2015-6-11 03:15:16

当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?

乐观 发表于 2015-6-17 18:06:37

象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。

仓酷云 发表于 2015-6-17 19:36:53

你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?

透明 发表于 2015-6-22 15:13:36

是一种突破用户端机器环境和CPU

若相依 发表于 2015-7-11 22:51:44

Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。

活着的死人 发表于 2015-7-16 19:29:20

接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。

飘灵儿 发表于 2015-7-20 01:58:47

是一种突破用户端机器环境和CPU

分手快乐 发表于 2015-7-20 08:48:03

如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
页: [1]
查看完整版本: 了解下JAVA的来源根基接口(RNI)