DistrIT - Distributed Processing in Java made Simple and Powerful
Welcome to the home of DistrIT, a Java API for distributing tasks across a network. DistrIT provides you the foundations making it easy to start your own distributed processing project such as SETI@home, distributed.net, or the Distributed Hardware Evolution Project. This Distributed Processing API can also be used to distribute other tasks such as a CPU-intensive rendering process distributed across various PCs within an intranet, a Informative Map GUI running on custom PCs around a shopping mall, or an artificial evolutionary process spreading across the internet.
DistrIT has the following features:
- Platform Independent. Write your code once and then run it on multiple clients on diverse platforms simultaneously.
- Self-Updating client code. The server will distribute your updated client code automatically.
- Robust under client, server and connection failure.
- Powerful. General to express any distributed processing task and other tasks as well.
- Simple. Get your first distrbuted processing started in 30 minutes.
Access the Sourceforge project page for more facilites.
Why use Java for distributed processing?
Java is a great option for distributed processing tasks:
- Cross-platform: Compile once, run many.
- Currently comparable in speed to C++ and Java is predicted to overtake it due to advancements in compilers
and run-time optimization. Read about the Server Virtual Machine to get a flavour
of how aggressively Java is optimized in run-time.
- Cleaner and quicker developing: Less time debugging and more time actually thinking about your problem and
running it.
- New code can be seamlessly distributed to clients across the internet.
DistrIT vs. BOINC
Advantages of DistrIT over BOINC include:
- Cross-Platform. The same client code can be distributed accross all platforms. Platform-specific
optimizations are incorporated at run-time at the JVM level, these are implemented for free by Sun
experts.
- Simple and Powerful Architecture. The DistrIT architecture is simple enough to have a distributed
application running in half an hour, yet also powerful allowing a distributed processing task of any complexity
to be implemented.
- Secure. The generic client can function with maximum security only allowed to communicate with a
specific port at a specific ip address. It can function without file-system access rights and highly
restricted network rights. Security policies, implemented at JVM level, will prevent hackers from downloading
malicious functional code onto the clients.
- Clean and Lightweight. The entire client is packaged in single 5Kbyte JAR file. Once installed it
dynamically downloads the code to execute without writing to the hard-drive. However it can be customized to
save some state to disk if required by your application.
- Fast. For starters, time is saved during development because of the high-level nature of Java
allowing time to think about the actual problems instead of memory locations. Moreover, platform-specific
coding and optimization is all left to Sun experts. Finally the speed of Java is forecasted to overtake C++ as
advances into Java compilers and optimizers pay off. With current technology their speeds are
comparable.
When would I want to use DistrIT?
There are various cases in which DistrIT could be useful to you:
- If you have any CPU intensive processing task you would like to distribute over many processes, processors
or cross-platform PCs over a network. For eg. distributing a fractal generating task over various CPUs on one
PC, an RSA cracking process over thousands of PCs across the internet, or an Evolutionary Algorithm across a
cluster of PCs.
- If you would like to control what application is run on a group of PCs. DistrIT will run any code you may
want on the clients including GUIs without any need to write to the client's hard drive. For eg. at home you
may want to have a scheduling application open on your various PCs from 9 to 5 sharing a common database, and
the rest of the day you may want an online multiplayer tetris game to be loaded up. Or if you're managing a
project across various sites you may want to load up specific applications sharing common data at the PCs of
all members of the project.
- If you need your client code to be self-updating. DistrIT can transparently distribute code to thousands
of clients over the internet keeping them up to date with your latest bug-fixes.
Startup Guide
Get walked through the first steps of using DistrIT by the Getting Started
Guide.
Download
Download the DistrIT package source to start developing your own distribued project. You will also need DebugLib to make them compile. Find both of these source releases in the Files Section. Source code is daily kept up to date in the CVS Repository. There is also a client binary release containing the 5K generic client.
Browse the Documentation API
The Documentation API for DistrIT v1.0.
To Do List and Requests
The current To Do list is checked in the CVS repository. Requests can be sent by contacting the project administrator by email or in the Open Discussion Forum. Project Developers can add requests to the To Do list directly.
Developing
To become a developer for this project please email the project administrator.