了解下JAVA的剖析Java类和对象的初始化历程
你通过从书的数量和开发周期及运行速度来证明:net网页编程和ruby要比java简单。本文次要对类和对象初始化全历程举行剖析,经由过程一个实践成绩引进,将源代码转换成JVM字节码后,对JVM实行历程的关头点举行周全剖析,并在文中交叉进了相干JVM标准和JVM的部份内部实际常识,以实际与实践分离的体例先容对象初始化和类初始化之间的合作和大概存在的抵触成绩。
成绩引进
克日我在调试一个列举范例的剖析器程序,该剖析器是将数据库内一万多条列举代码装载到缓存中,为了完成疾速定位列举代码和详细列举种别的一切列举元素,该类在装载列举代码的同时对其接纳两种战略创建内存索引。因为该类是一个大众服务类,在程序各个层面城市利用到它,因而我将它完成为一个单例类。这个类在我调剂类实例化语句地位之前运转一般,但当我把该类实例化语句调剂到静态初始化语句之前时,我的程序不再为我事情了。上面是经由我简化后的示例代码:
[清单一]
packagecom.ccb.framework.enums;
importjava.util.Collections;
importjava.util.HashMap;
importjava.util.Map;
publicclassCachingEnumResolver{
//单态实例 统统成绩皆由此行引发
privatestaticfinalCachingEnumResolverSINGLE_ENUM_RESOLVER=newCachingEnumResolver();
/*MSGCODE->Category内存索引*/
privatestaticMapCODE_MAP_CACHE;
static{
CODE_MAP_CACHE=newHashMap();
//为了申明成绩,我在这里初始化一条数据
CODE_MAP_CACHE.put("0","北京市");
}
//private,forsingleinstance
privateCachingEnumResolver(){
//初始化加载数据引发成绩,该办法也要负点义务
initEnums();
}
/***初始化一切的列举范例*/
publicstaticvoidinitEnums(){
//~~~~~~~~~成绩从这里入手下手表露~~~~~~~~~~~//
if(null==CODE_MAP_CACHE){
System.out.println("CODE_MAP_CACHE为空,成绩在这里入手下手表露.");
CODE_MAP_CACHE=newHashMap();
}
CODE_MAP_CACHE.put("1","北京市");
CODE_MAP_CACHE.put("2","云南省");
//.....othercode...
}
publicMapgetCache(){
returnCollections.unmodifiableMap(CODE_MAP_CACHE);
}
/***猎取单态实例**@return*/
publicstaticCachingEnumResolvergetInstance(){
returnSINGLE_ENUM_RESOLVER;
}
publicstaticvoidmain(String[]args){
System.out.println(CachingEnumResolver.getInstance().getCache());
}
}
想必人人看了下面的代码后会感到有些茫然,这个类看起来没有成绩啊,这切实其实属于典范的饿汉式单态形式啊,怎样会有成绩呢?
是的,他看起来切实其实没有成绩,但是假如将他run起来时,其了局是他不会为你准确work。运转该类,它的实行了局是:
<p>
什么时候上述的三种开发工具能和三为一,什么时候java的竞争力才更强,才有机会拉拢更多的程序员投入到对java的开发上,因为到时的开发工具将会比.net网页编程的更简单。还有一点也很关键,什么时候java推出的jsf能成为真正意义上的标准。 你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。 你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。 是一种为 Internet发展的计算机语言 Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。 让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。 Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。 J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。 吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧 我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。 你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。 是一种使用者不需花费很多时间学习的语言 其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
页:
[1]