www.blogjava.net/limq/archive/2005/03/09/1865.aspx
AOP以及其它动态代理的实现最终都是要落实在JAVA CLASS之上的,看看对JAVA CLASS的讲解好歹也能提高提高我的语言功底。回过头来发现,自己做了快三年的应用开发,但仍然在基础上有所欠缺,实在是说不过去。
上面是一篇介绍JAVA CLASS以及Reflection API的文章,讲得也还算细致。在Inside JVM一书,作者从JVM体系结构的层次,分析了JAVA 类加载的顺序,执行的操作,JAVA CLASS文件的格式。
magic
minor_version
major_version
constant_pool_count
constant_pool
access_flag
this_class
super_class
interface_count
interfaces
field_count
fields
method_count
methods
attributes_count
attributes
对其中每一部分的表项介绍得一清二楚。记录了这么详细的信息,难道classloader还会加载class错误嘛。
Reflection API只不过是对应领域的建模,Method类、Field类中的相关方法,都可以通过记录在.class文件中的信息来调用的。只是,到了API层,我们的术语变了而已,我们看到的东西变了而已,其实,一切都还在原来设计的基础上做文章。
计算机领域的很多东西,就在一层一层的抽象。如Spring,它提供的Spring JDBC, Spring AOP还是在JAVA Refelection API基础上的另外一层建模,以满足它的目标。世界,就在一层一层变化当中,只要有不同的需求,就会有不同的应用。一切都是那么的简单,而一切经过人的加工和抽象之后,有些简单,有些负杂了。
在那些原来的设计者眼中,世界是简单了。但是,在其它人眼中,世界是复杂了。为什么?因为他们不理解设计者眼中的世界,不理解设计者要解决的问题。说白了,还是因为知识的欠缺和经验的缺失。
当我们走到这一步的时候,我们要开始注重思考,而不是简单的重视使用。只有经过我们认真思考的世界,才是你的世界。否则,永远是别人的世界。
打牢基础。
AOP以及其它动态代理的实现最终都是要落实在JAVA CLASS之上的,看看对JAVA CLASS的讲解好歹也能提高提高我的语言功底。回过头来发现,自己做了快三年的应用开发,但仍然在基础上有所欠缺,实在是说不过去。
上面是一篇介绍JAVA CLASS以及Reflection API的文章,讲得也还算细致。在Inside JVM一书,作者从JVM体系结构的层次,分析了JAVA 类加载的顺序,执行的操作,JAVA CLASS文件的格式。
magic
minor_version
major_version
constant_pool_count
constant_pool
access_flag
this_class
super_class
interface_count
interfaces
field_count
fields
method_count
methods
attributes_count
attributes
对其中每一部分的表项介绍得一清二楚。记录了这么详细的信息,难道classloader还会加载class错误嘛。
Reflection API只不过是对应领域的建模,Method类、Field类中的相关方法,都可以通过记录在.class文件中的信息来调用的。只是,到了API层,我们的术语变了而已,我们看到的东西变了而已,其实,一切都还在原来设计的基础上做文章。
计算机领域的很多东西,就在一层一层的抽象。如Spring,它提供的Spring JDBC, Spring AOP还是在JAVA Refelection API基础上的另外一层建模,以满足它的目标。世界,就在一层一层变化当中,只要有不同的需求,就会有不同的应用。一切都是那么的简单,而一切经过人的加工和抽象之后,有些简单,有些负杂了。
在那些原来的设计者眼中,世界是简单了。但是,在其它人眼中,世界是复杂了。为什么?因为他们不理解设计者眼中的世界,不理解设计者要解决的问题。说白了,还是因为知识的欠缺和经验的缺失。
当我们走到这一步的时候,我们要开始注重思考,而不是简单的重视使用。只有经过我们认真思考的世界,才是你的世界。否则,永远是别人的世界。
打牢基础。