|
|
||
Daniel Brookshier's BlogSwing ArchivesJXTA at 5 Years OldPosted by turbogeek on April 07, 2006 at 04:37 PM | Permalink | Comments (3)JXTA is just about to turn 5 years old. Hard to imagine. Those internet years at 7 to 1 seem to be in play, at least with my memory. A lot has happened in 5 years. I got involved with JXTA soon after it was announces. Anything with the mark of Bill Joy had to have something smart associated with it, so I jumped in head first. I quickly started writing applications and doing small things. I learned a lot. Soon after things started, I got a call from Sams Publishing to do a book on JXTA. It was a difficult book. Though I had some experience, we were still struggling with how to best write P2P applications. P2P is not the easiest thing in the world. The idea of publish pipes and all that was not an easy thing to wrap your mind around. The ping example in the book went on for many pages - now I can write ping in one. One of the key advances was simply an understanding of how to write P2P applications. One of the best is just the simplistic well-known-ID or WKI for lack of something shorter. For all the indexing and advertising, there are simpler applications of WKI that make it very simple to implement many P2P applications. The JXTA spec and platform evolved too. The original version was painfully slow. Just connecting to the network could take a couple of minutes. Now average boot and connect to a JXTA network is a couple of seconds. Transfer speeds are also way up. The C version of the platform is also doing well and had a lot of heavy rewriting. Nothing better than a little refactoring, except more refactoring. The protocol changed slightly, making up for some of the speed. The key advances were in how the Rendezvous worked. But it seems that a lot of things sped up with little changes here and there over a few years. None of this was without a lot of dedication from the platform team. The next bit of advancement was the addition of a Socket wrapper for JXTA. One of the tough problems with the base API was working with an API that was unfamiliar. The socket API is very familiar and it is easier for the average developer to understand what's going on. The socket also hides things like reliability a bit better. There has been a lot of churn in the design of the code under the wrapper, but those changes are completely transparent. The business viability of JXTA also continued to improve. I have been employed by several companies that were using JXTA, including many fortune 500's. I have also worked with several startups. JXTA makes sense for a lot of applications and businesses see that quite clearly. There are still a few things that big business needs like out of the box presence, identity management, and a true P2P database. We do have presence in our commons project, but there is room to grow. The market for P2P is still growing and JXTA is still the only viable multi-purpose solution. Don't get me wrong, there is a lot of P2P out there, but mostly for file sharing and not writing business critical applications. The only alternative is Groove and that's owned by Microsoft. It also costs quite a bit. JXTA is open source and it is simple to set up your own P2P network for pennies on the dollar. Where is the market? Where are the applications? They are in a lot of places from the military to telecom. I have consulted with a bunch of companies, plus there are many listed at jxta.org. The latest startup I've been working with is called Kerika. They have a really cool tool that is best described as a graphical wiki. The workspace is sort of like a drawing tool mixed with the ability to add text, images, and documents but also relate them with connecting lines. The symbols can be clicked to reveal an even deeper view. Sort of like mind mapping, but this tools also adds collaboration and sharing to the mix. I think it is one of the coolest applications for P2P and it is written in 100% Java with Swing, but has its own look that is very clean and professional. They have just started their beta program, so the product is free, so check Kerika out. Overall, it has been an amazing 5 years. JXTA is out in the real world and is doing a great job. We have a lot to grow. But that also means there is opportunities everywhere! Quick Links
Kerika - http://www.kerika.com/
Swing Set 3 - The Rotary Bazooka T-Shirt launcherPosted by turbogeek on July 02, 2005 at 02:32 AM | Permalink | Comments (0)Tossing a t-shirt is not as easy as it looks. Especially if you are a software developer. That is at least what the Swing Set 3 team tells me. Looking at the flesh wounds of one of the members, it is a bit dicy (or rather the launcher bytes). The Swing Set 3 team only garnered second place this year. I was quite surprised. The winning entry was closer to the Bluetooth of Danish Viking and King, Harald Blåtand, not the Bluetooth related to Java ME device (BTW Java ME is the new branding for J2ME). Swing Set 3 on the other hand was a marvel of electronics, old bycycle parts, and sharp pointy bits that together flung t-shirts to the back of the auditorium. Ok, here is the team: o Matt Quail (http://madbean.com) - The software guy and master of the GUI interface
o Brendan Humphreys (http://opencurly.com) - Aluminum expert, T-Shirt Artisan
Just a bunch of software guys trying to hardware, the same way they do software. That means bugs and crashes, right? But let's look at the technology now because it is quite impressive.
Features
o Secondary low-volume/high-range t-shirt release boom - This one sent a t-shirt to the back of the room.
o Mac 15 inch 1.5gHz PowerBook - Command and control center I love their visual interface. But as you can see by their photos, they really should stand a bit farther back from the imager.
Based on the speed, the software calculates the best time to release. That's the theory anyway and the hardest part. Time for physics. A 200 gram t-shirt, spinning at 200 RPM, at a radius of 80 centimeters has an effective weight of 10 kilos. So forty kilos of t-shirt! That is a lot of shirt. The latches have to hold the 10 kilos and still be able to open in milliseconds or the trajectory will be wrong. Now for the real problem. Inadequate code coverage unit testing in a real environment. The highly precise infrared sensor set to 850 nanometers are key to making the device wok. In fact testing in the auditorium was done to be double sure. Unfortunately these super accurate sensors were susceptible to broad spectrum source (like a reporter's camera flash). The end result was that the system did not have an accurate idea of where all the spinning bits were and let fly whenever a reporter's camera went off. Another manifestation of Murphy's law and perhaps one to remember. If you have a very accurate measurement tool, the world will throw noise at you that looks like clean and accurate data. Beyond the 28 hours a day that each member contributed to the effort to chuck a shirt, they also work for Cenqua. Cenqua has two tools; Clover and FishEye. Clover is a code coverage tool for Java (a great product but lousy for t-shirt launch testing). it tells you what parts of you code are not being tested by your unit tests. FishEye is a tool that provides a web based interface into your source code repository, allowing sophisticated searching, RSS feeds and much more. http://www.cenqua.com/ The build pictures are here http://flickr.com/photos/pte/tags/tshc New projects in Global Education and Learning for January, 31 2005Posted by turbogeek on January 31, 2005 at 09:45 AM | Permalink | Comments (0)
The Global Education and Learning Community welcomes more great projects. This time we have
Owner: cdmilligan@dev.java.net
Liber is a research laboratory at Pernambuco's Federal University. There are multiple projects here covering EDMS (Electronic Document Management System), Human-Machine Interface, Information Retrieve and Data Integration. Liber has four major projects: Macunayna: a multimidia EDMS, The Pernambuco's Annals: a textual database created using PostgreSQL and Jakarta Lucene; Theses compilations from theses and dissertations (like NDLTD) made at Pernambuco's Federal University. Sonora which deals with sound files.
http://recuitment.dev.java.net/
The Recuitment project was started to develop tools to select the eligible candidates for developer recruitment. In this project some reservation candidates will also be classified according to some norms. The system will also calculate statistics about the candidates. The system's primary function will be to put candidates through written tests and other eligibility tests.
nesk01@dev.java.net
This is a student using java.net for his school project. I am happy to welcome students and teachers to host on java.net because we here to help.
JXTA Yields an Application for P2P BackupsPosted by turbogeek on August 21, 2004 at 04:30 PM | Permalink | Comments (8)
Well, I keep saying that JXTA is where business needs to go to make a buck. Companies are indeed listening. 312 Inc. has just released a new JXTA product called LeanOnMe. LeanOnMe is a Peer-to-Peer off site backup tool. Simply, you choose the files you want backed up and choose another computer in the 312 Inc. peer network and your files can be backed up on demand or any time you specify. Of course you can also recover your files and all you need is the software and your password. Im all for backup. It is just hard to do. I was in Orlando last week for Hurricane Charlie. Lucky me. But my critical data was backed up despite the trees being snapped in half by the wind. But my data was backed up.
Before I continue, under full disclosure, 312 Inc hired me to do some consulting. So I could profit from you buying this software. I wont get much, but some, just the same. I am biased toward LeanOnMe and my friends at 312, so take this all in with a dose of salt and by all means, question my motives. It is more important to me that you understand that this a real live JXTA-based, 100% Java, Swing application. Buying a copy, more than helping me, will help LeanOnMe be a success, and thus helping JXTA be a success by proving P2P applications work. But only do it if it makes sense to you. Only you can know that you cant live without a product. If you like the idea of P2P backups, you can download the app and try it for a while for free. If you want keep on using it, use the discount code 312sun and you get 10% off. Like I said, Im not as much interested in you buying than I am in you seeing that P2P and JXTA are real. Buy it or not, please try it to see how well JXTA performs. I just want to talk about why JXTA was a good choice for this application. I'm pushing JXTA here. If you think LeanOnMe is cool too, tha's just a bonus.
So, what makes LeanOnMe really different because of JXTA? Most backup systems use either a local tape/disk or an off site server. This system uses another computer, any computer running LeanOnMe software. That's 'any computer. and 'anywhere'. By using JXTA, 312 has avoided the problem with centralized systems and taken advantage of terabytes of unused storage. But there is more to it than that. There are indeed terabytes of unused servers all over the world left over from the dot bomb. Why use JXTA? How does it work? How well does JXTA work in this model? Read on. Why JXTA First, why JXTA? The first reason is simple enough: JXTA provides the ability to find a specific computer anywhere on the internet. Another reason is that JXTA is stable and fairly quick now that we have reached JXTA 2.3. JXTA is also general purpose. Unlike many other P2P systems based on file sharing, JXTA is communications based. Anything can be communicated, including encrypted backups or their status. Unlike file sharing, random replication of files is also not desirable. You only need a few copies and you need to know specifically where they are to recover them. There is also a need for a protocol specific to the application to manage the files. JXTAs Pipe approach does not constrain communications and thus any protocol can be applied. JXTA is also open source. In part, open source has made it possible for people like myself to understand a lot of the code and how best to use it. I wont say I am all-knowing. JXTA is complex, but my knowledge has helped the development process. Open source has also helped because I have added a few pieces to the system, including the BinaryID that is used in the LeanOnMe application. The system uses the BinaryID to create a well-known-ID to connect pipes quickly with existing data about peers. JXTA is also easily customized. In this case, 312 has created an isolated peer network. By isolating the network, 312 has further created a safety net that adds to security. This is just the first version of LeanOnMe, so there will be many features added in the future, but the application is very solid and very familiar to anyone that has used a piece of backup software. Because it uses the peer network, adding innovative P2P functionality will be a breeze. This means some freedom to the developer too. For example 312 can add chat, workgroup management and almost any other network feature you might need. And more importantly they can add the feature without adding server infrastructure.
So, how does it work? First, in the first version it is not 100% P2P. There is a server component. LeanOnMe uses an LDAP server to keep track of where backups are stored. A couple of reasons for this are that you can recover because you can locate your backup through the data in the LDAP. Secondly, by controlling access to the LDAP, 312 can also ensure you are who you say you are. So this centralization gives your security and 312 a little control. Everything else is P2P. Some more interesting aspects of the way the system works is that it uses the same presence mechanism as JxtaNetMap . Essentially the RDV reports peers entering and leaving the network on a propagation pipe that that all the peers subscribe to. This allows the application to know what other peers are available and online. As for file transfers, 312 rolled their own and used the BiDiPipe for the transport. They have great features like the ability to restart a file transfer if there is an error. Its fast too! If you have good bandwidth it is far faster than tape or some of the slower backup media.
Security is important in a P2P application. First, data is going to computers that you may not control. Secondly, there is no isolation from listeners. This is the internet, not a happily isolated corporate network. What did 312 do to make sure data was safe? The security is interesting and seems airtight. There are two passwords. One key is used for access to the system and one for your key store. If you have these, you can unlock your files even if the original computer is totally destroyed. If you have your original data on a laptop (read easily dropped or stolen laptop), this is the kind of access you need. Of course, the backups are encrypted. The act of encryption and decryption is done on the source computer and via the passwords entered at runtime. The result is that there is no spreading of passwords required. It also means that the computers where these files are stored do not have access to the keys. This prevents your friends from snooping around in your data. But backups are about the source computer too because it can be destroyed, so we need an independent way of accessing our data. By having the mapping data to where our data is stored in the LDAP (with its own backups), even with all our primary computers destroyed; we could still locate and access backups. Yes, a centralized vulnerability, but it makes sense in this case. It is a minor convenience to keep the LDAP backed up and highly available compared to doing the same thing with a high bandwidth data storage center. A second aspect of security is that of the warm fuzzy of trust. Because this is P2P, you can choose any computer. So, we can choose to back up to specific computers and thus to specific people. So I can back up to my friends and familys computers because I trust them. My friend or my own computers certainly have a little trust than I can put to the average person. Even with an encrypted backup, some would like that extra security blanket or knowing the person that owns the equipment where important data is stored. The third piece of security is communications. LeanOnMe uses JXTA's encrypted pipes to ensure that all communications are hidden from prying eyes. But why encrypt communications when the backups themselves are encrypted? This is just protecting the application itself. By encrypting communications you are hiding the protocol and the specific actions. Call it paranoia or being prudent, it certainly does not hurt.
The story here is that P2P with JXTA has provided a solution that was not possible before. The P2P model creates the opportunity and JXTA provides the possibility. Add hard work and a good design and you too can succeed with JXTA. But what really changes when you move form client server to P2P? The first is freedom of choice. In the client/server model, there is only one place that the files can go. With P2P, the files can be located on any machine or even multiple machines. The freedom means that you not only can ensure that your data is in Idaho when Florida is hit by a hurricane, but also on your desktop and your laptop. P2P also means that the applications still work behind your cable modem, NAT, and firewall. The evils of IP being changed by DHCP are also eliminated. Simply you can get to the computer with the backup data. This increases your freedom of choice. Back to your home PC and your laptop. Without JXTAs ability to cross the cable modem boundary, you would not be able to access your data on that home PC if you were on the road.
LeanOnMe is using JXTA , but it is also using the LDAP. Thats not pure P2P, so whats the point? It could be solved with a distributed system but in this case the data is probably better centralized. Not all things need to be P2P. As it is, 99% of the work is P2P so the cost of the LDAP server is low for 312. Secondly, the scalability is much higher with less equipment. With 99% of the traffic between peers, the network scales itself as its members are added with their own resources.
Another aspect important to developers is that it is written with Swing. I am a Swing advocate. I have used Swing since its early betas and because of my knowledge do not cow the rumors that it is slow and complicated. These rumors are once again put to the test. The interface is fast and looks great. It is successfully running on my Apple PowerBook and my dual processor G5 along with other machines running Linux and Windows. Stop bashing Swing, here is another example of a great application done right. There are hundreds of other Swing applications, including NetBeans. Nothing wrong with Swing in applications as I see it and as is seen by thousands of other dedicated Swing developers.
I have talked a lot about the aspects of why backup works in P2P and a little about the foundations of the application and how it uses JXTA . The warm fuzzy you should get is that JXTA is something that you can depend on to create a business on. Though 312 is cornering the P2P backup space, there are thousands more applications that can use JXTA . You have fewer excuses now. JXTA is ready for prime time. Get out there and write something we will be proud to call JXTA Connected.
Java == platform independence Killer Applications and JXTAPosted by turbogeek on March 26, 2004 at 11:57 PM | Permalink | Comments (7)
Some technologies don't gain wide adoption until there is an application used by a large number of users. We call them killer applications because they are so compelling or in fact kill a problem dead. For the personal computer it was the spreadsheet (Visicalc was the first and it was copied by the rest) and at about the same time, the word processor. What will be the killer application for JXTA? Is it already here?
Napster was a killer application. Sadly it was done in a way that was not legal. I won't go into the politics of record companies and free speech - the fact is that Napster was taken out of play by the courts. Yes there are other music sharing and purchasing applications, but nothing as big as Napster. But the other problem is that it was only about music (at least the killer part). There was no real big application associated with general business or entertainment based on the P2P/Central-Index scheme of Napster. Don't think that there are not other file sharing applications doing quite well. In fact, there are file sharing applications written in JXTA that support thousands of users in legitimate business applications. They may become the new 'next big thing' but I see it as just a better way to share files rather than the ultimate killer application.
Sometimes a killer application just makes things easier. Struts is making it even easier to develop web applications. Ant makes it easier to build and maintain projects. XDoclets reduces labor via its code generation capabilities. All these examples are starting to be widely adopted because of their productivity improvements. Can JXTA make things easier? JXTA has all the hallmarks of reduced effort. First, there is no real server involved. Imagine the time, money, and sweat equity saved by not dealing with the monolithic server and its support system. But that's just economics - where is the savings for the common man? Let's look a little at one of the key ideas about JXTA.
What makes JXTA unique? It's not about Peer-to-Peer (P2P). P2P is just a fuzzy buzzword that means computers talking to to computers. What abut JXTA is that it places the Internet inside applications rather than the browser. This also means the gestalt of the application includes a real interface, storage, and can be run 24 hours a day if needed. The quote below is from Juan Taylor, which covers this quite nicely: What s the ONE thing that P2P can do that client/server can't? It's that the Client can be a Server. WHY would the client want to be a server? To share information Easily and in different and even complex (only jxta can do this) ways in a 'User to User' way. In anonymous file-sharing there is an innate loss of wanting to share files. In a User to User perspective, there is an immediate desire to share. There's the Benefit, and the complexity of which only JXTA can handle. What this means simply is that unlike client server, JXTA is client/server and server/client or even server to server or client to client. The information, storage, processing, and communications can start at either end. In the world of applications this also means that I don't have to work in a world of centralized resources where there are multiple issues. The worst problem of course is just the impedance mismatch between the world of application and the world of web applications.
So, what if every client was a server? Sadly it is not all about efficiency. I say sadly because P2P is all about wasted space and CPU cycles. The sad part is the knee jerk reaction many have to waste. But the fact is that replicating data and the power of your own CPU verses a shared server is far safer and can be orders of magnitude more efficient in getting the job done. The waste is insignificant in terms of the modern PC with their large disks and often idle CPU's. When you trade inefficiency in an area that is monetarily insignificant, the gain in productivity is essentially for free.
The forum interface is similar to those on Java.net. Basically a forum is a threaded discussion. The oldest version of this is the old news forums which still exists but has been taken over by spam. Think of it as a server based email that anyone can read or submit messages. What would a P2P Forum look like? First the history of the messages need to be available to anyone. This a great feature of the forum because it lets you search for a conversation in the past. Guess what, that has to be on a PC since there is no server. Here comes the duplication of effort: To make this work, keeping the history on as many computers as possible increases the speed of the search. The search is really fast if you have your own copy. If the forum history is very large, and is bigger than that free 5 gigabytes on your disk, we can share different sections of the data. We still need a lot of copies because some peers may go off line.
Ok, does it hurt your sense of efficient computing yet? I remember being unable to use linked lists and hash tables for years because my professor in college was so anal that memory was the most important thing in the world. He put speed and ease of use far far down the list of importance.
Ok, now back to killer applications. What if we added a P2P forum to a development tool? First, because it is part of the tools, the focus is like a laser. The efficiency of use is very close to the tool because it is the tool. Have a weird exception? It is a click to add it verses cut and paste and a little reformatting. Wondering what the correct settings are for a task? What if the expert could reply with his settings which you can just use rather than interpret a poorly formatted and worded answer. Yes I have perhaps a couple gig of messages, but I have the world's greatest integrated help system. These ideas are Copyright Daniel Brookshier 2004, all rights and derivative patents can not be used by Microsoft or its agents. Free use to those that use 100% Java and JXTA to implement the solution. Ideas like this need to be free to make life less like walking on broken glass.
JXTA is a killer capability that will make a good application a great application. Making every a PC a server seems like a good idea. Not every solution will benefit, but there are a few thousand new ideas that JXTA makes possible. Look at the world upside down. Be the server. | ||
|
|