in coding

some conception in java

  • JNDI: (Java Naming and Directory Interface) 这是在javaEE体系内部的一个“域名”系统,你可以通过配置指定某种资源的命名,然后通过该命名来引用资源,以达到程序代码和资源之间解耦的目的。这里的资源最常见的是jdbc数据源,通常还会有某种环境实体、EJB组件或者其他资源引用。
  • RMI: (Remote Method Invocation) RMI内置于java语言核心,是java最高效的远程对象访问和调用技术。实现类似功能的技术每个平台都有,.NET平台下有.net remoting,不过到3.0以后都整合为WCF了。RMI是基于TCP/IP的,效率很高,是EJB的实现基础,但是不能穿越防火墙。要能穿越防火墙当然得走http,最常见的就是web service得soap了,不过公认soap的效率是非常低的。我google了一下,java常用的技术还有Hessian/Burlap/Httpinvoker,这些都是基于http协议的,可以穿越防火墙。其中Hessian基于二进制代码,协议公开,在.net/php/python等各个语言都有相应实现。Burlap是基于xml,效率相对低些。Httpinvoker内置于Spring,据说效率和RMI差不多,但是应用不多不太成熟。目前除了EJB基于RMI以外,其他情况下最常用的是Hessian。
  • JMS: (Java Message Service) 共享空间和消息传递是软件系统中最常用的数据传播方式,jms就是java提供的消息传递服务,一般也叫做消息中间件,基本来说这也是每个技术平台必备构成,例如.net或者说ms的消息队列(MQ)组件。如何控制消息的传递?点对点?分发订阅?异步传输?这些特性都由jms提供,不需要程序员自己再从头开发了。特别的,javaEE提供了一种特殊的消息驱动bean(message-driven bean,MDB),他将ejb和jms联系起来,利用jms消息来调用bean。
  • JAXP: (Java API for XML Processing) 这个东东名字叫api,但是严格来说不算是api,而是一个xml操作的抽象层。java中解析xml的方法很多(例如DOM和SAX),使用这些api去解析xml时需要编写的代码完全不同,因此可以认为业务代码和xml解析耦合非常紧密。为了消除这种耦合产生了jaxp,通过jaxp你可以采用相同的业务代码用不同的解析器操作xml——当然事实上由于两种解析器的理念不同,代码还是会有一定的差别。

    老实说,我有点没搞懂,既然仍然无法完全避免业务代码的差别,那又何必一定要这样搞呢?也许这不是我这儿纸上谈兵能理解的,需要具体的问题来实践。

  • JAXR: (Java API for XML Registries) 这也是一种解耦或者说抽象机制,registries是指目前互联网上分布的基于xml的注册服务,例如ebXML和UDDI。而jaxr使你能通过统一的接口访问这些不同的xml注册服务。

java体系的概念太多了,这只是最近看的很少一部分。

Write a Comment

Comment

  • Related Content by Tag