J2EE是为企业级应用开发者设计的庞大工具包,对Java核心规范在大小和广度上都有巨大的扩展。是对现有和新技术的集成,可以大幅度加速应用开发。
J2EE是一个标准、规范。遵循此规范开发的应用可以做到编写一次,随处运行,实现跨平台运行。一下是这十三种规范,对于规范,我更多的以我自己目前已有的知识来解读一下。
1.JDBC(Java Database Connectivity)
名字都和ODBC(Open Database Connectivity)那么相像,给人的第一感觉就是他们要实现的功能差不多,但事实并非仅仅是换了一个字母那么简单。我觉得可以这样理解JDBC:是ODBC与ADO的结合体,创建连接和发送SQL只用JDBC一个就行了,而ODBC只是创建一个连接,还需要用ADO来进行数据操作。
2.JNDI(Java Name and Directory Interface)
名字为Java名字和路径的接口,对于这个的理解目前还不是那么深刻。部署EJB、DataSource等,为其提供一个JNDI-NAME,那么在程序中,就可以通过lookup查找这个唯一ID,就可以获得到相应的资源,而这个资源,可以不是本地文件系统中的,这就为分布式的系统打下了很好的基础。
我感觉这个就像一个k-v对,名字为key,而value是任意对象。
3.EJB(Enterprise Javabean)
Javabean的任务是:一次性编写,任何地方执行,任何地方重用。Javabean分为会话Bean(无会话状态的Bean,有会话状态的Bean)、实体Bean、消息驱动Bean。
关于实体Bean,我感觉很像三层里面的DAL+Entity。只不过,在这里,Bean可以由容器实现,也可以由Bean自己实现。由容器实现,在使用过程中,感觉很像为某个空间设置数据源,只需要通过自己选择一下,语句就可以出来。而有Bean自己控制的Bean,感觉就很像三层里面的DAL+Entiry了。
会话Bean,可以作为三层架构中的业务逻辑层出现。而消息驱动Bean,更多的是用在了JMS(Java massage Service)中。
4.RMI(Remote Method Invoke)
远程方法请求。名如其实,这个是用来调用远程方法的。使用序列化的方式在客户端与服务器之间传递数据,是呗EJB使用的更底层的协议。
5、Java IDL/CORBA(待日后深入理解)
JavaIDL使分布式、支持Web的Java应用可以给予IIOP协议透明地调用远程服务
6、JSP
JSP页面由HTML代码嵌入其中Java代码组成。怎么嵌入先不管,吃饭理论,ASP学过,这里只变了一个字母,而且要达到的目的也都一样:页面展示。所以对于这个的理解不是那么难。
7、Servlet
其实看到这个的时候,我深深感觉到米老师对于各种语言看法的正确性了:语言其实是相同的,真正学会了一门语言,学会另一门语言真的不用多久。不知道大家还记不记得.net平台中的一般处理程序。
我在学习AJAX的时候,看的是Java版的,里面说让建一个servlet,当时把我给愁的够呛。后来我建了一个一般处理程序,发现结构和servlet差不多,于是就把卸载servlet中的语句写在了一般处理程序中,发现正常执行了。
所以从.net平台转过来,我觉得可以这将上面两个对应到已学的知识:Asp页面——jsp页面,servlet——一般处理程序。这样,jsp对你来说的新鲜感是不是就小了很多了。
8.XML(Extensible Markup Language)
扩展标记语言。这个在学习asp.net的时候,就接触过,只是到现在了,依然没有深入用过。XML是平台独立的,和Java的发展也是相互独立的。正是由于XML的平台独立,使得java的跨平台有了强力的后盾。
9JMS(java message service)
看了这部分,第一感觉就是,刚刚做的那个系统,如果用上这个机制,那么会更完美。
点对点互发,消息广播。还可以这样设置:如果对方没有在线,那么消息会存在服务器,待对方上线后,发送给对方。其实这个自己新增个表,其实也可以实现,但是你不好实现的是优化,如果面对大数据量,你无法保证是否会像你使用JMS那样高效。
10.JTA(java transaction API)
java事务API。这点,在.net平台中也是有的(ADO事务)。事务,可以由容器控制,也可以由bean控制。
在学习数据库的时候,第一次接触了事务这一个词,事务最简单最直接的目的就是保证数据的有效性,数据的一致性。
11.JavaMail
用于存取邮件服务器的API,提供了一包邮件服务器的抽象类。不仅支持SMTP服务器,也支持IMAP服务器。
12、13.JTA和JTS
Java事务API和Java事务服务未J2EE平台提供了分布式事务服务。
对于J2EE的理解还有待进一步的研究,下一步要通过一个项目来对J2EE的知识进行深入以及巩固。纸上学来终觉浅,在项目中成长是IT人学习的法宝。
最后,再说一下对于三层架构的看法。忘了听谁说过,MVC不是架构,只是几个设计模式而已。可是学习的过程中,老师说了一个外观模式:业务逻辑放在会话Bean用来减小Web与实体Bean的耦合,当时看了一下,这不就是我们每天津津乐道的三层架构么。
再发表语句对设计模式的看法:有的设计模式,是架构级别的。架构,是设计模式的体现。