仓酷云

标题: JAVA网页设计Java的ClassLoader与Package机制 [打印本页]

作者: 爱飞    时间: 2015-1-18 11:44
标题: JAVA网页设计Java的ClassLoader与Package机制
恰恰证明了java的简单,要不怎么没有通过c/c++来搞个这种框架?为了深切懂得Java的ClassLoader机制,我们先来做以下实行:

packagejava.lang;
publicclassTest{
publicstaticvoidmain(String[]args){
char[]c="1234567890".toCharArray();
Strings=newString(0,10,c);
}
}

String类有一个Package权限的机关函数String(intoffset,intlength,char[]array),依照默许的会见权限,因为Test属于java.lang包,因而实际上应当能够会见String的这个机关函数。编译经由过程!实行时了局以下:

Exceptioninthread"main"java.lang.SecurityException:Prohibitedpackagename:
java.lang
atjava.lang.ClassLoader.defineClass(UnknownSource)
atjava.security.SecureClassLoader.defineClass(UnknownSource)
atjava.net.URLClassLoader.defineClass(UnknownSource)
atjava.net.URLClassLoader.access$100(UnknownSource)
atjava.net.URLClassLoader$1.run(UnknownSource)
atjava.security.AccessController.doPrivileged(NativeMethod)
atjava.net.URLClassLoader.findClass(UnknownSource)
atjava.lang.ClassLoader.loadClass(UnknownSource)
atsun.misc.Launcher$AppClassLoader.loadClass(UnknownSource)
atjava.lang.ClassLoader.loadClass(UnknownSource)
atjava.lang.ClassLoader.loadClassInternal(UnknownSource)

奇异吧?要弄清为何会有SecurityException,就必需弄分明ClassLoader的机制。

Java的ClassLoader就是用来静态装载class的,ClassLoader对一个class只会装载一次,JVM利用的ClassLoader一共有4种:

启动类装载器,尺度扩大类装载器,类路径装载器和收集类装载器。

这4种ClassLoader的优先级顺次从高到低,利用所谓的“双亲委派模子”。切实地说,假如一个收集类装载器被哀求装载一个java.lang.Integer,它会起首把哀求发送给上一级的类路径装载器,假如前往已装载,则收集类装载器将不会装载这个java.lang.Integer,假如上一级的类路径装载器前往未装载,它才会装载java.lang.Integer。

相似的,类路径装载器收到哀求后(不管是间接哀求装载仍是下一级的ClassLoader上传的哀求),它也会先把哀求发送到上一级的尺度扩大类装载器,如许一层一层上传,因而启动类装载器优先级最高,假如它依照本人的体例找到了java.lang.Integer,则上面的ClassLoader都不克不及再装载java.lang.Integer,只管你本人写了一个java.lang.Integer,试图代替中心库的java.lang.Integer是不成能的,由于本人写的这个类基本没法被上层的ClassLoader装载。

再说说Package权限。Java言语划定,在统一个包中的class,假如没有润色符,默许为Package权限,包内的class都能够会见。可是这还不敷正确。切实的说,只要由统一个ClassLoader装载的class才具有以上的Package权限。好比启动类装载器装载了java.lang.String,类路径装载器装载了我们本人写的java.lang.Test,它们不克不及相互会见对方具有Package权限的办法。如许就制止了歹意代码会见中心类的Package权限办法。



令人可喜的是java现在已经开源了,所以我想我上述的想法也许有一天会实现,因为java一直都是不断创新的语言,每次创新都会给我们惊喜,这也是我喜欢java的一个原因。
作者: 谁可相欹    时间: 2015-1-21 13:39
科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
作者: 第二个灵魂    时间: 2015-1-25 20:00
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
作者: 简单生活    时间: 2015-2-3 19:48
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
作者: 透明    时间: 2015-2-7 19:02
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
作者: 活着的死人    时间: 2015-2-11 08:31
是一种使用者不需花费很多时间学习的语言
作者: 老尸    时间: 2015-2-28 10:48
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
作者: 小魔女    时间: 2015-3-9 22:41
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
作者: 小女巫    时间: 2015-3-16 17:35
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
作者: 变相怪杰    时间: 2015-3-22 01:13
是一种为 Internet发展的计算机语言
作者: 因胸联盟    时间: 2015-3-22 18:14
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
作者: 山那边是海    时间: 2015-3-27 23:01
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
作者: 再见西城    时间: 2015-4-6 13:04
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
作者: 灵魂腐蚀    时间: 2015-4-9 22:28
Java 编程语言的风格十分接近C、C++语言。
作者: 兰色精灵    时间: 2015-4-14 11:54
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
作者: 不帅    时间: 2015-4-16 09:10
是一种使网页(Web Page)产生生动活泼画面的语言
作者: 若天明    时间: 2015-4-22 02:07
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
作者: 海妖    时间: 2015-4-22 08:29
Java 编程语言的风格十分接近C、C++语言。
作者: 莫相离    时间: 2015-4-26 22:27
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
作者: 柔情似水    时间: 2015-5-1 07:10
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
作者: 爱飞    时间: 2015-5-1 19:10
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2