WhyJXTAFailed及其讨论

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?

<snip> The page was updated on July 2008 with the new board members! </snip>

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?

 

原文地址:https://www.cnblogs.com/cuizhf/p/2208186.html