JXTA技术与应用发展(转载)

一、概述
美国Sun公司自从1995年向世界推出了Java语言以来,每年都会在Java领域里推出新的技术,从JavaCard、J2ME到J2EE、JINI、JavaTV,推动了Java技术的发展和应用。在最近几次的旧金山的JavaOne会议中,JXTA是该公司向业界推出的较新技术。该技术的目的是为P2P的网络应用开发提供一个统一的平台,而且为了鼓励和支持该技术的发展,JXTA项目采用了开放源码的方式,因此吸引了大量业界人士参与到JXTA技术的研究与应用当中,JXTA Community(www.jxta.org)就是人气很旺的一个Java技术研究开发的网站。
JXTA最早起源于2000年的夏天,现在大家把JXTA看成是P2P的平台,JXTA的目标是要解决几个技术与商业上的难题。第一是解决众多P2P系统互不相通的问题。2000年,是P2P突飞猛进的高潮年,但高潮背后却是许多小公司用自己的封闭系统试图在Internet上圈一块地。Sun认为,只有互通才能真正发挥出P2P的优势,就好像IM(Instant Messaging),能互连的人越多,越有价值。所以Sun决定出面发布一个平台,使所有P2P系统都能连接起来,只有Sun这样位置中立、但在技术上有雄存实力被大家认可的公司才有希望做成这一平台。
JXTA的另外一个目的就是找寻一套数量最少、概念最简单的系统构成的“积木”。如果成功,这几块积木就会是今后大家构架信息系统的基本模块,从而帮助人们摆脱像Windows或TCP/IP这样的传统软件带来的包袱。Java、Jini和JXTA像是J的三部曲,Java取自著名咖啡产地名,Jini是genie(精灵) 的谐音,而JXTA则是Juxtapose的缩写。当时BillJoy用grep把所有J打头的英文词找出来,juxtapose跃然纸上,很是巧妙。既表现了P2P或肩并肩的意义,又说明JXTA不局限于P2P。但JXTA与众不同,它是由一系列网络协议构成的,用任何语言都可以实现,并不只限于Java,只有彻底独立于操作系统、网络传输技术以及程序设计语言,才真正达到了跨平台,而这样的技术,最容易受到业界的认同。
JXTA是项目创始人、Sun首席科学家BillJoy二十多年酝酿的结晶,“JXTA技术是网络编程和计算的平台,用以解决现代分布计算尤其是点对点(P2P)计算中出现的问题。”JXTA研究项目,将提供使用户更便捷地访问连接在互联网上的个人电脑资源的新框架,从而进一步拓展互联网的空间。同时JXTA也是Sun的ONE互联网战略的延续,并且将更积极的姿态与Microsoft的.Net战略和Hailstorm计划一争高低。Joy指出,JXTA可能是Sun One平台最简单的一部分,而不是打算将它变成象微软的.Net那样复杂的东西,而且JXTA也将是开放源代码的团体;有别于而微软的Passport和Hailstorm技术都是申请专利的专有技术,Sun希望通过公开JXTA源代码的方式,成为微软最有力的竞争对手,在公开源代码的领域中,Linux和Apache是卓越的成功典范,Sun也希望JXTA能铸造新的成功。
JXTA技术提供了基础性的机制解决当前分布计算应用中面临的问题,实现新一代统一、安全、互操作以及异构的应用。目前它支持基于Java技术的平台和系统。而将来JATX技术将不受到内存的限制而支持更多小型移动设备。JXTA通过Java技术和XML数据表达的结合,提供了强大的功能使得垂直应用得以交互,并且可以克服目前P2P软件中的限制。同时,通过小型、简单、便于开发的构造模块,JXTA将使开发者从建立各自框架的复杂工作得以解放,可以潜心关注于建设各类新颖、创造性的、分布式计算应用。

二、JXTA的应用

1、即时通信和文件共享(myJXTA)
myJXTA是在J2SE平台上的一个JXTA演示程序,主要为展示JXTA项目和P2P的一些概念,它提供了一些功能,诸如安全的一对一的交谈、组内的交谈、组内文档的共享、搜索和下载等。myJXTA使用JXTA平台的核心服务,完成发现组、加入组和创建组的功能;还有在两个Peer 间创建连接,完成一对一的交谈;或者在组内建立连接,完成组内的交谈以及组内文件的搜索和下载。该程序的主要目的是未了展示基于JXTA协议的P2P的工作方式。

2、网络游戏(Chess)
    JXTA技术已在许多游戏应用方面得到了展示,一个互动式的国际象棋比赛的应用程序使用JXTA来传递两个棋手间的对奕过程,并将它展现给观众,国际象棋游戏和“tic-tac-toe"游戏都可以用来展示JXTA在小型设备上的应用,一个游戏者可以创建一个新的JXTAPeer组并邀请全世界其他游戏者加入他的游戏,当然也可以限制他人进入他的游戏组。

3、协同工作
JXTA技术已经展示它在协同工作应用程序中的能力。用JXTA开发出来的集成开发环境可以允许一个以上的开发者同时开发一个软件程序;另外一个协作式的JXTA应用程序允许几个人同时编辑同一个电子数据表。其他JXTA项目中开发的合作开发工具包则利用了JXTA进行会话、共享浏览和文件共享。
    由于具有通话功能,JXTA技术在合作开发中拥有这样一个优点:一个应用程序的开发不需依赖于服务器或其他中央管理系统。JXTA处理新发现的节点,并保证路线通畅,在用户和交互式应用程序间交换消息。

4、聊天程序
JXTA非常适合编写聊天程序,而且可以有多种实现方法,包括完全的集中式、代理方式到完全非集中式。而且一个非常有意思的情况是,用JXTA来实现一个集中式的聊天程序非常困难,而实现完全非集中式的聊天程序反而简单,因为JXTA平台本身已经完全解决了底层Peer之间的发现和通信问题。在现有的JXTA项目中已经有许多聊天程序的例子,包括myJXTA应用程序(原先称为InstantP2P)、JXTA shell中的Talk命令、HotWire应用程序和其他几个编程指南。

5、JXTA 社区
JXTA是一个开放源代码的项目,它是由JXTA社区http://www.jxta.org在推动发展。在这个站点上可以获取最新的JXTA文档和程序代码,而且你可以注册并加入到正在进行中的JXTA项目,参与并推动项目的进展;这些项目分类存放,为用户展示了JXTA各方面的功能;此外,站点上还有邮件列表,都是JXTA开发人员和P2P参与者就感兴趣的问题的讨论。

三、JXTA的发展

1、各种语言的实现
目前JXTA只有Java的实现版本,以至于大家谈到JXTA都认为它是用Java开发的一套P2P框架,而忽略了JXTA的实质只是一套独立于各种平台和语言的协议。因此在各种语言上实现JXTA成为一项非常重要的工作。只有这样,因特网上的用各种各样语言实现的应用软件就可以只需改写网络部分的代码而转换到JXTA平台上来。这不但大大地节省了工作量,而且将会吸引大量因为各种原因无法采用Java语言的软件加入到JXTA中来,从而大大促进JXTA协议的发展。现在正在进行的其他语言的实现有C,Perl,Python,Smalltalk等等,显然这还远远不够,也许我们将来需要看到用Pascal,VB,C#实现的版本。
 
2、各种平台的实现
跨平台,这是Java已经实现了的目标,但是并不表示JXTA就无事可做,一个真正的P2P网络不仅仅是包括PC这个大家目前已经熟悉的设备,它还应该包含各种现在以及将来能够连到因特网上的设备。头一个目标显然是PDA和手机这种移动设备,JXTA for J2ME以及PocketJxta都已经在进行中,而且已经可以使用;但是,我们还要考虑到将来的各种设备,这其中主要是各种各样的嵌人式设备。如果这些设备都运行JXTA平台,那么我们将看到一个真正的P2P世界。
 
3、各种应用
有好的应用,一个平台是不可能流行起来的。目前在jxta.org上登记的应用开发项目有多个,相比现实世界中的各种网络软件的数目,这个数字实在是很小。目前的JXTA应用主要集中在即时通信和文件共享上面,这似乎成了P2P的代名词。但是如果只局限于这些应用,JXTA的应用范围将会很有限。
 
4、Service
Service在JXTA中扮演着极其重要的角色,所有JXTA协议的实现都是以Service的形式存在着的。除了几个核心服务外,目前JXTA上有多个关于Service的项目正在开展着,从某种程度上来说,Service比Application更重要;如果没有好的Service,也就产生不了多少好的应用,在这些进行中的Service中,Search是其中关键的环节,在没有中心服务器的P2P网络中,如何有效地进行查找成为一个关键问题,与此同时,还需做到尽可能地减少占用的带宽。


本文引用通告地址(TrackBack Ping URL)为:

http://blog.ccw.com.cn/trackback.jsp?postID=4952

你可能感兴趣的:(P2P(JXTA))