热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

WhyJXTAFailed及其讨论

http:code.google.compppcastwikiWhyJXTAFailed——————————————————————————————————————————————
http://code.google.com/p/ppcast/wiki/WhyJXTAFailed

——————————————————————————————————————————————————————————————

Personal Opinions on Why JXTA Failed

I knew JXTA a log time a long ago and took a close at it recently because I wanted to use it to prototype a data pushing/streaming framework. Apparently, JXTA does not satisfy my need and it seems dead when I looked at its project website and its community. This brings up one interesting question: "why JXTA failed?".

After thinking of it for some time, I have some personal opinions on its failure.

Wrong Target

If you look at JXTA protocol stack, you will see it includes service down to communication layers. It seems include everything but cannot actually address any of them. First, it is hardly a peep to peer communication building block, because it does not address the peer group automated management problem or lack of protocols to form practical peer to peer groups. For example, we may need hierarchical peer groups with leader nodes, routing protocols, UDP protocols.

On the contrary, JXTA looks more like a service oriented framework, but we have already had web services, ESB, and other SOA techniques. Seems there is no real requirements for peer to peer based SOA unless cloud computing will be the future and we have unknown/dynamic services. But the underly protocols in JXTA do not really handle the dynamic nature of the group very well and this leads to question of whether it is really suitable for a dynamic SOA architecture.

As a result, JXTA can hardly find its place in applications until tomorrow will be a different world. That is to say, JXTA is in an embarrassing situation now to find a right target for itself.

Too Much Flavor for J2EE

Seems JXTA is designed by people with heavy J2EE experience instead of networking background.

First, XML is used for all protocol messages even between inner layers. XML might make sense for communication command/handshake only at the layers that will talk to other nodes in the network, but not for all layers and all messages. XML is really verbose for actual communication such as data transmission.

Second, why on the earth JXTA needs the service layer? In my opinion, it would be more appropriate to only focus on the peer to peer communication part and do not care about what data or application it needs to serve. One of the most important design principles is separation of concerns. Unfortunately, JXTA tries to address everything, but some times "all" means "none".

Lack of protocols for peer group management

Right now, JXTA node just tries to join one group and there is no hierarchical sub-groups. For practical applications, most likely you need to form some hierarchical sub-groups with leaders elected for each sub-group. The flat structure, i.e., all peers in one group cannot really scale well and not really appropriate for applications such as application level multicast or data pushing.

We also need routing protocols, congest control, acknowledgment aggregation, and UDP support features for peer to peer networks. Obviously, JXTA is not designed by people from networking background and the lack of the protocols makes it hardly a building block for peer to peer communications.

Comment by btra...@gmail.com, Dec 11, 2008

I am not sure where you are getting the idea that JXTA is dead. JXTA is widely used in a number of places starting in Sun's Glassfish Appserver for dynamic clustering, military and commercial mesh networking, and a number of commercial and research projects. You have mature JXTA implementations (Java SE, C/C++, Java ME). The JXTA community and the technology is doing well and fairly active. JXTA provides a unique set of semantics that enables you to build truelly scalable and distributed applications. Jxta Sockets are very easy to use. JXTA is not a service oriented architecture, it provides building blocks to build decentratized and autonomous services. You are incorrect JXTA is only using XML for protocol message control, application playloads use a binary format for maximum performance. JXTA supports the notion of hierachical peer-groups, virtual routers and UDP.

I see that you are trying to reimplement something similar with PPCat ;-( JXTA is already supporting all this already and Jxta rocks!

Comment by project member John.Jian.Fang, Dec 11, 2008

If you visit the JXTA project web site and JXTA community web site, you will see why I said JXTA seems dead. No update over years.

As you said, JXTA is not a service oriented architecture, but it is not really designed for large scale p2p networks either. Because it lacks the protocol support for p2p networks including dynamic group management, routing protocols, flow control protocols, application level multicast and so on. You mentioned JXTA supports the notion of hierachical peer-groups, virtual routers and UDP, could you point out where is the document for that?

Jxta Sockets? Assume you have 3,000 peers, if one peer needs to send messages to all peers, you need 3,000 Jxta Sockets? Application level multicast is more efficient way and the real power of p2p networks.

I do not believe JXTA can support the applications I am going to work on. It is not "re-implement", but something totally new and JXTA cannot address.

Comment by phi...@gmail.com, Dec 12, 2008

JXTA failed because it didn't make it simple to do what we wanted, at that time peer to peer was interesting and popular. I wanted to use it in my program, but when I looked at the JXTA code I just felt it was so complex! far out. I was totally put off by the complexity and the terms in use.

Its just like applets, a combination of smarts and stupidity, applets are a problem because they start up slow, where-as Flash starts up straight away. Applets have a security model, but only the programmers care about that. The end users just notice the long startup time. The stupidity is that this is a simple and clear problem to see and should have been fixed a long time ago.

The stupid and clear problem with JXTA was the high complexity.

Comment by btra...@gmail.com, Dec 15, 2008

John,

The site is updated as needed. The page was updated on July 2008 with the new board members! You seem to have some misunderstanding of JXTA. JXTA does support the creation of dynamic peergroup. It is in fact the only P2P platform that does support dynamic peergroup. JXTA also used a routing protocol to route messages across multiple physical links. JXTA sockets support flow control.

I suggest you start reading the following documents. https://jxta-guide.dev.java.net/source/browse/*checkout*/jxta-guide/trunk/src/guide_v2.5/JXSE_ProgGuide_v2.5.pdf

JXTA socket has the notion of virtual multicast socket. The peer that sends a multicast only needs to open a connection to its rendezvous peers that will handle the broadcast through the rendezvous peerview (the peerview acts as a virtual multicast tree). The sending peer don't have to open a connection to 3,000 peers! This multicast feature has been optimized to support carrier grade scalability and performance throughput via many man/years optimization.

Cheers,

B.

Comment by btra...@gmail.com, Dec 15, 2008

Philhk,

JXTA is a generic platform that provides high and low-level APIs. JXTA provides a very simple abstraction JXTA socket for beginners. You program it as a Unix/Java Socket. Applets are a much powerful abstraction than flash. Have you see the latest capability where you can drag an applet out of your browser and have the applet continued to run as a desktop application. You should try the new applet implementation on the latest Java6U10?. It is very fast. Security is very important for end users as you don't end up with viruses. Flash has a lot of security problems as you are writing more complex network applications. Developers are really now moving away from using Flash for that reason.

Hth,

B.

Comment by project member John.Jian.Fang, Dec 15, 2008

Bernard,

Thanks for pointing me to the document. Sure, I will read more deeply on the recent documents. I read some books about JXTA before. Seems at least one is from you, right? JXTA seems pretty hot around 2002, but sadly, it became silent after that.

For the virtual multicast socket, there is really not too many details on the document. I wonder how the virtual multicast tree is constructed and maintained in a highly dynamic environment, i.e., peers keep joining and leaving.

Because my background is networking although I do have a lot of experiences in software, I may have a different view of the problem as you do. I worked on the p2p multicast protocol before and right now, I like to get it prototyped.

Thanks,

Jian

Comment by sivait...@gmail.com, Sep 4, 2009

jxta rocks

Comment by amitmank...@gmail.com, Aug 5, 2010

Hi btratra,

It's 2010, is JXTA dead now?

The page was updated on July 2008 with the new board members!

The new board members were supposed to be announced in July 2010, but there is no update at all.

I am currently analysing the framework and how it can be adapted to my application requirements and understand that it's totally dormant (maybe dead?)

Is there any alternative to JXTA that's more popular then?

Hello?

Comment by creative...@gmail.com, Sep 7, 2010

Version 2.6 was released over summer so, while not one of the more popular open source projects, it is still active.

Comment by jfabrizi...@gmail.com, Jan 11, 2011

I would give my opinion in this discussion. I think that JXTA is too complex to use! For a very simple operation, like create a peergroup, enter in a group or create a pipe, the programmer has to write too many code rows. For this reason a modest JXTA program is very verbose and isn't enough readable and simple to understand. Another weak point is the performance a run-time (especially when the p2p applications start).

Comment by mysc...@gmail.com, Mar 6, 2011

Hi guys! I am not sure if this is the best place to post this! but here goes.. I am trying implement a streaming service between Android and PC using Jxta. You guys have obviously used JXTA before so can you please let me know if this idea would even work! Will I be able to just make sockets an then stream audio over it! Or is this just dumb?

 


推荐阅读
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • Android系统源码分析Zygote和SystemServer启动过程详解
    本文详细解析了Android系统源码中Zygote和SystemServer的启动过程。首先介绍了系统framework层启动的内容,帮助理解四大组件的启动和管理过程。接着介绍了AMS、PMS等系统服务的作用和调用方式。然后详细分析了Zygote的启动过程,解释了Zygote在Android启动过程中的决定作用。最后通过时序图展示了整个过程。 ... [详细]
  • SoIhavealoopthatrunsperfectforeventsandonlyshowsfutureposts.TheissueisthatIwould ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 本文介绍了在多平台下进行条件编译的必要性,以及具体的实现方法。通过示例代码展示了如何使用条件编译来实现不同平台的功能。最后总结了只要接口相同,不同平台下的编译运行结果也会相同。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • Spring学习(4):Spring管理对象之间的关联关系
    本文是关于Spring学习的第四篇文章,讲述了Spring框架中管理对象之间的关联关系。文章介绍了MessageService类和MessagePrinter类的实现,并解释了它们之间的关联关系。通过学习本文,读者可以了解Spring框架中对象之间的关联关系的概念和实现方式。 ... [详细]
  • 如何查询zone下的表的信息
    本文介绍了如何通过TcaplusDB知识库查询zone下的表的信息。包括请求地址、GET请求参数说明、返回参数说明等内容。通过curl方法发起请求,并提供了请求示例。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • 本文记录了在vue cli 3.x中移除console的一些采坑经验,通过使用uglifyjs-webpack-plugin插件,在vue.config.js中进行相关配置,包括设置minimizer、UglifyJsPlugin和compress等参数,最终成功移除了console。同时,还包括了一些可能出现的报错情况和解决方法。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了SpringCloudRibbon部分源码相关的知识,希望对你有一定的参考价值。1:ribbon是提供通过servi ... [详细]
author-avatar
Morpheus尘世美t
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有