首先应该知道J2EE是什么吧?和J2SE、J2ME相比,也就是提供了更多的API吧,run的JVM那还不是一样。于是你听到的J2EE中的这个技术,那个技术,真的不要被名字吓倒,丫丫的,它就是给你提供一个相关方面的API而已。说到这里就干脆把技术和API之间的关系说一下吧,当然不能划等号,技术是一种规范,是文字而已,是大家相约遵守的,而API呢,是实现相关技术的基本功能的接口。这句话一出来,我想会影响对很多技术的学习态度。Servlet是一种基于java服务器端开发的技术,是一种规范,大家读约定如果你用java语言来开发服务器端的话,就写出Servlet这种样子,到底哪种样子呢?你可以去官方网站看它的规范。而它的api呢?也可以下到,还想想,还应该在哪里看的到呢?web服务器中。
如果你去看书学习的话,你必然会遇到一个新词,容器,于是你晕了,容器是什么东西丫,这么通俗,通俗的难以理解。我用我的理解来给你澄清一些概念吧,或许会对你很有用。
前面就说过,你写代码要有写汇编的意识,当然不是要你能够完全理解到那个层次,完完全全的没有必要,但是需要你有这个意识。你需要意识到,你写好的代码,最终都是要扩展成一堆的汇编放到硬件上去run的,这个扩展过程呢?就需要你多关注一些了。在C++里面,这个扩展过程一般是动态链接一些库,它的动态链接是完完全全的把代码插到调用的地方,这样呢?有一个好处一个坏处,好处是它run起来很快,因为编译过程就定下来整个运行过程,直接run就好了,一个坏处呢,就是没有好的动态扩展性能,你都是直接的代码插到调用的地方,就是说运行后就基本上没有太多的选择余地了,所以C++力顶了多态这个性质,因为多态正好弥补了它的这个缺点。
其实呢,上面的一好一坏都是相对java而言的,java就正好相反,它的动态扩展性能非常的好,因为它的类装载器都可以有多个,可以在运行时选择类装载器,丫丫的,我看到这个就又被彻底征服了。你可以在运行时来选择一个类装载器,然后用这个类装载器来装载类。不同的运行过程,会装载不同的类,这个扩展可以C++无法比拟的。这样也就注定了它的慢了,你的编译过程那总不能把调用的代码插进来吧?你编译过程连是引用哪个类都不知道,插什么哦。所以java在运行时才去找相关的引用类,然后调用。也只是保持一个引用的地址而已,根本没办法把代码插进来。这样就不可能不慢啊,所以java在死命把这个动态引用过程优化。
又说远了,是要说容器的哦。