[slide 1] hi, for those of you who don't know me, my name is ryan flannery, and i'm giving a series of presentations on sun microsystems technologies. the past two presentations, i've really tried to rush through...trying to get them finished up in about 10-15 minutes. the presentations that sun normally sends me are upwards of 45 minutes in lenght, and that's just entirely too long. a couple of you have asked me to go a bit slower this time around, so it may take just a bit longer. also, if you have any questions throughout the thing, please feel free to ask. so, today's presentation in on JXTA, a peer-to-peer technology heavily endorsed by Sun. First, i want to cover what the letters JXTA themselves mean, so i can abbreviate for the rest of the presentation. JXTA is an abbrieviation for "JUXTA"...meaning justapositioned. and that's because the original set of developers working on the project found that P2P computing is juxtapositioned to the heirarchical client-server model. so, for the rest of the presentation, JXTA is reffered to as JUXTA. [slide 2] this presentation was formally prepared by Sang Shin, of Sun Microsystems. You can email him at the email address above, or vist the Sun EvangCentral web site for more info. [slide 3] the things i'm going to cover are: * the benefits of P2P computing * Sun's commitment to P2P * a brief overview of JUXTA * some examples of applications built on top of JUXTA * and just a quick note about where Sun is going with all of this then, as always, i'll provide some links to where you can go for more info. [slide 4] so, first up is the benefits of Peer-to-Peer computing. [slide 5] if you look, you can see the past and present models of distributed computing, along with what Sun hopes to be the future model. Previously, all networked computing was handled in a strict Client-Server model. Today, most networked apps run over the Internet. Soon, Sun hopes to change this structure to a pure P2P model, where 'peers', regardless of their architecture, can communicate freely with each other. [slide 5] why move to P2P? well, in todays environment, there are 3 key problems. 1 - Information is relatively hard to find. There's so much, it's impossible to index and catalog it all. 2 - Bandwidth, and by that i mean that the general ability to move around the environment. The popular sites and downloads remain popular, while it's virtually impossible to make something from scratch become popular. 3 - Resources are being wasted. There's mass amounts of unused resources out there, right now, that could be better used. [slide 6] The first problem, Information, is probably the biggest. There's so much data out there that you CAN'T access on the Internet, because most of it simply isn't on a web-server. These stats blow my mind: Every year, the world produces 2 EXABYTES of DIGITAL INFORMATION. And, every year, only 300 Terabytes (300 Trillion Bytes) get put on the web. That means less than 1 millionth of all digital information, is put on the web each year. What's worse, Google (a search engine which indexes the most pages), only searches 1.3 Billion pages. I personally that pretty amazing, considering all the hype about our 'digital age', in which everything is on the Internet. [slide 7] The second problem, Bandwidth Utilization. Since 1975, a single fiber's bandwidth has increased by a factor of ONE MILLION. but the Internet is STILL SLOW. Why? Every year, more and more devices get online, only to go to the same places. The Hot links get hotter, and the cold ones stay cold. [slide 8] The third problem, Computing Resources. Up on the slide, and from common knowledge, you all can see that the shear power of our computing abilities has exploded since the dawn of the Internet. But, a great deal of it is going to waste. It's sitting around, doing nothing. [slide 9] So, what can a P2P environment do to help this? 1 First, concerning the Information problem, who-ever is in and P2P network can help by sharing their knowledge...their files. Data doesn't have to be on a web server, it doesn't have to be written up in HTML, anybody can get to it in its native format. 2 Second, better use of available resources. Rather than having to mirror data between desktop machines and web server, the data only has to exist in one place. An example of this would be the SETI@home project. For those of you who aren't familiar with it, you can download a program, which in windows acts like a screen saver, and when your computer isn't being used, it connects to the SETI (search for extra-terrestrial intelligence) servers and helps process all of the data that they generate. There's similar programs for Cancer Research, and much more. These are some simple examples, where these "spare resources" can help make a big difference. [slide 10] Now, how does Sun stand in all this? [slide 11] Sun is absolutely commited to P2P technology. The JUXTA project is HEAVILY endorsed by Sun. As you can see, Scott McNeily is really ambitious about the subject. The JUXTA project is continually funded by Sun, and Sun actively participates in the development itself. [slide 12] now, a brief over of JUXTA technology [slide 13] The overall goal of the project is to provide a simple foundation, consisting of the overall structure, the protocals, and the API's, necessary to create and manage a P2P environment or P2P applications. [slide 14] Up now, you can see the structure that Sun has in place for JUXTA. It's a 3 tier environment. The lowest tier, the Core, supports all of the above services and applications. The middle tier consists of all of the Services. These are things like the ability to share files and search around. The top tier is the application later. This is where you as a developer would implement that JUXTA API's and create your application. You can also see in that structure (point), a spot for the JUXTA shell. This is nothing more than a tool, really, that you can use to query the local P2P environment. I HIGHLY recommend that you just download this shell, from JXTA.ORG, and play around with it. it has a unix-style command prompt, and allows you to do all sorts of nifty stuff. just play around with it. [slide 15] so, right now some of you may be wondering, why use JUXTA for P2P? there's already plenty of P2P applications out there, that don't use JUXTA. well, for starters, most of these applications are propietary. You couldn't just make an application and "plug it in" to that network. And being proprietary, it probably only works on one platform...most likely a Wintel platform, in which case P2P becomes PC-to-PC...certaintly not a good thing for everybody to use. [slide 16] JUXTA is built to counter these problems by making the foundation for the network completely interoperable, in that you can take it and do anything with you. You as the developer decide on it's limits. Also, JUXTA is cross-platform, independent of the users software and hardware. It's also ubiquitous, in that it can be used virtually anywhere (which kinda ties into the first two). [slide 17] so, some of the concepts that make JUXTA JUXTA are: * a common set of protocols, with API's for all the major languages. * peers, which are the nodes of the network * peer groups, which is simply some logical grouping of peers. * messages, which are simply the packets of info sent from one peer out to another peer, or peer group. * pipes, which are alot like streams in C++. * services, which are basically just a core set of applications, common throughout JUXTA * advertisement, which is the ability for a peer to provide a message for other, interested peers * discover, which is just that...the ability for a peer to discover other peers and peer groups. * there's also the shell, which i mentioned before. [slide 18] so, what types of applications are already out there, using JUXTA? [slide 19] well, first there's the ever-popular file-sharing applications. there's also searching and indexing, which runs on each peer and just catalogs what that peer has chosen to share (unlike google, which tries to index everything). Thers's also the ability to mirror storage accross a P2P network, and the Shell, which is sort of an all-purpose application, where you interact with a P2P environment through a command-line interface. Also, there's some P2P email clients built using JUXTA...they're ok...not too verbose yet, but i'm sure they'll get there. [slide 20] So, to summarize things: * JXTA is a network programming platform...a foundation which developers can use to write distributed apps. * JXTA is geared towards a P2P environment * JXTA is completely interoperable, platform independent, and ubiquitous * JXTA itself is set of protocols and API's which services and apps sit on * and, the JXTA community is based at the JUXTA web site, at www.jxta.org [slide 21] that's all i have for this presentation, here's some links you can visit if you're more interested in the subject. your best bet, if you haven't messed with this at all, is to goto the jxta.org home page, and d'load the shell.