CONTENT
=======
- Introduction
- DJBinder short description
- Installation
- How contact us
- License agreement



INTRODUCTION
============
Thank you for using DJBinder, the Dynamic Java Binder.
The version you have downloaded is the Basic Version 1.0.
A new version known as the DJBinder professional version will be available soon.
You can get a lot of information about DJBinder in:

		     http://amslib.free.fr
 


DJBinder SHORT DESCRIPTION
==========================
DJBinder is a new Java tool that creates runtime links between interfaces and 
classes, just like the implements statement does it at build time. In other 
words, it is possible to attach interface implementations to a class without 
recompiling it. DJBinder magic resides in the fact that interfaces implemented 
by special abstract classes can dynamically be associated to a different class 
at runtime. For example, from the view point of a class that uses the Citizen 
interface there is not difference between an interface dynamically implemented: 

    // file 1: 
    public class Person {...} 
    // file 2: 
    public abstract class DI_Person__Citizen implements Citizen {...} 

and an interface implemented in the traditional way :

    public class Person implements Citizen {...} 

In both cases, a Person object can be casted into Citizen using exactly the same
statement :

    Citizen c = (Citizen) new Person("Bill", 23) ;

Furthermore, existing classes do not have to be recompiled to take advantage of 
new dynamically implemented interfaces.

DJBinder is not a new dialect of Java. It is fully compatible with all Java2 
compilers and virtual machines, and it can be used to develop flexible and 
evolutive Java applications, applets and servlets (professional version only).

Some of the main advantages of using DJBinder are : 

- Concurring engineering: Several developers can simultaneously implement 
  different interfaces for the same class because they work on different source 
  files. 

- Multiple inheritance: Each dynamic interface implementation can have a 
  different super class. This enhances Java's capacity to reuse existing software
  without being confronted to the problems of C++ multiple inheritance. 

- Easy evolution: Designers working with DJBinder have the tendency to cut 
  applications into small functional units and program evolution is mainly done 
  by creating new source files, instead of modifying existing ones. Applications 
  using DJBinder can run for many years even in the most changing environment 
  because DJBinder offers the most flexible infrastructure. In other words 
  'Write Once, Run Forever'. 

The version that is now available has some limitations: servlets are not yet 
supported and fields of dynamic interface implementations cannot be serialized 
nor cloned. 

This short description is not enough to use the DJBinder functionalities. They
are explained in:
    http://amslib.djbinder.fr/djbinder.html


INSTALLATION
============
DJBinder services are packed in a single jar file. You must extract the
djbinder.jar file and place it in a directory accessed by your Java
runtime environment.

You must grant all the security authorizations to the djbinder.jar file or 
install it as an extension of the Java virtual machine. To install the 
djbinder.jar file as an extension you have to copy it to a special directory:

    under unix: {JRE_DIRECTORY}/lib/ext
    under Windows: {JRE_DIRECTORY}\lib\ext

You can find more information about installing extensions in the following 
documents of java.sun.com: 
    http://java.sun.com/products/jdk/1.2/docs/guide/extensions/
    http://java.sun.com/docs/books/tutorial/ext/index.html

To activate DJBinder when running a Java application you must execute the 
amslib.djbinder.Start class with the following arguments:

1.main class of the application</LI>
2.first argument of the application</LI>
3.second argument of the application</LI>
...

For example if demo.Smallest is a Java application that prints the smallest 
number among a series of 4 numbers then it can be run with the following command
line (under Windows):

    > c:\jdk1.2\bin\java.exe amslib.djbinder.Start demo.Smallest 13 45 26 8

This example uses the JDK1.2 of SUN, but the mechanism is the same with any 
other Java virtual machine.

To run an applet using DJBinder is conceptually very similar but the HTML syntax
is a little longer, so it is not going to be include it here. You can find an
example of running an applet with DJBinder in: 
    http://amslib.free.fr/djbinder.html



HOW CONTACT US
==============
The author of the program is: Alvaro Schwarzberg
His e-mail is: alvaro.schwarzberg@free.fr
You can also use the e-mail service of: http://amslib.free.fr/contactus.html



LICENSE AGREEMENT
=================
This is a Freeware program. You can use the program freely but you 
cannot redistribute it.
See below the full license agreement, that the user implicitly accepts
by using the program.



READ THE TERMS OF THIS AGREEMENT CAREFULLY BEFORE USING THE PROGRAM.
IF YOU DO NOT AGREE TO ALL THESE TERMS PLEASE DELETE ALL THE UNLOADED FILES.


Limited License Grant
---------------------
Amslib grants to you a non-exclusive, non-transferable limited license to use 
the accompanying DJBinder software and documentation (collectively "Software") 
without fee for evaluation of the Software and for development of applications 
provided that you may not re-distribute the Software in whole or in part, either 
separately or included with a product.


Ownership of the Software
-------------------------
All ownership rights to the Software and all associated intellectual property 
rights is retained by Amslib. Unless enforcement is prohibited by applicable 
law, you may not reverse engineer, modify or decompile Software. No right, 
title or interest in or to Software is granted under this Agreement. This 
Agreement does not authorize you to use any Amslib name, trademark or logo. 
You acknowledge that Amslib owns the DJBinder trademark and all DJBinder-related
trademarks, logos and icons.


Warranty and Disclaimer
-----------------------
THE SOFTWARE IS PROVIDED "AS IS" AND WITHOUT WARRANTY OF ANY KIND. AMSLIB MAKES 
NO WARRANTIES OR CONDITIONS, EXPRESS OR IMPLIED, AND HEREBY DISCLAIM ALL 
WARRANTIES, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF 
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON INFRINGEMENT, WITH 
RESPECT TO THE SOFTWARE. AMSLIB DOES NOT GUARANTEE OR MAKE ANY REPRESENTATIONS 
REGARDING THE USE OR THE RESULTS OF THE USE OF THE SOFTWARE IN TERMS OF ITS 
CORRECTNESS, ACCURACY OR RELIABILITY, OR THAT THE OPERATION OF THE SOFTWARE 
WILL BE UNINTERRUPTED OR ERROR FREE.  Some of these disclaimers can be legally 
invalid, so the above limitation may not apply to you.


Limitation of Liability
-----------------------
TO THE EXTENT NOT PROHIBITED BY LAW,  IN NO EVENT SHALL AMSLIB BE LIABLE TO YOU 
OR ANY THIRD PARTY FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL 
DAMAGES (INCLUDING DAMAGES FOR COST OF OBTAINING SUBSTITUTE GOODS, LOSS OF 
BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF DATA AND EQUIPMENT, AND OTHER 
SUCH DAMAGE OR LOSS),  HOWEVER CAUSED REGARDLESS OF THE THEORY OF LIABILITY, 
ARISING OUT OF OR RELATED TO THE USE OF OR INABILITY TO USE THE SOFTWARE, 
WHETHER USED IN TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, EVEN IF 
AMSLIB HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. The foregoing 
limitations will apply even if the above stated warranty fails of its essential 
purpose.


Restrictions for High Risk Activities 
-------------------------------------
SOFTWARE IS NOT DESIGNED OR INTENDED FOR USE IN ON-LINE CONTROL OF AIRCRAFT, 
AIR TRAFFIC, AIRCRAFT NAVIGATION OR AIRCRAFT COMMUNICATIONS; OR IN THE DESIGN, 
CONSTRUCTION, OPERATION OR MAINTENANCE OF ANY NUCLEAR FACILITY.  YOU WARRANT 
THAT YOU WILL NOT USE SOFTWARE FOR THESE PURPOSES. Amslib disclaims any express 
or implied warranty of fitness for such uses. You acknowledge and agree that 
the Software is not specifically developed or intended for use with systems that 
are not fault tolerant.  Amslib shall not be liable for any claims or damages 
arising from such use of the Software.


Termination
-----------
This Agreement is effective until terminated. This Agreement will terminate 
without notice from Amslib automatically and immediately if you fail to comply 
with the provisions of this Agreement.  Upon termination, you must immediately 
stop using the Software and destroy all copies (and partial copies) of the 
Software. You may terminate this Agreement at any time by destroying all copies 
of the Software.


Source Code
-----------
Software may contain source code that is provided solely for reference purposes 
pursuant to the terms of this Agreement.


Miscellaneous
-------------
If any provision of this Agreement is held to be unenforceable, this Agreement 
will remain in effect with the provision omitted, unless omission would 
frustrate the intent of the parties, in which case this Agreement will 
immediately terminate. This Agreement is the entire agreement between you and 
Amslib relating to its subject matter and supersedes all prior or 
contemporaneous agreements and representations between the parties. No 
modification of this Agreement will be binding, unless such change is written 
and signed by an authorized Amslib representative. Amslib may transfer, assign 
sublicense or pledge any of its rights and obligations under this agreement to 
any third party, without notice to you and without your consent.  
