 |
| |
| META TOPICPARENT | name="WebHome" |
-- JohnCatherino - 09 Nov 2004 | | |
Java Enterprise Edition Extensions:
| |
< < | CajoServlet - a few extras to allow cajo ItemServer to be incorporated into a J2EE? application | > > | CajoServlet - a few extras to allow cajo ItemServer to be incorporated into a J2EE application | | |
\ No newline at end of file |
| |
| META TOPICPARENT | name="WebHome" |
-- JohnCatherino - 09 Nov 2004 | |
< < | | > > | Welcome to the official wiki of the cajo project. | | | If you are new here:
The cajo project is a small, free library, enabling powerful dynamic multi-machine cooperation, both within, and between, Java applications. It provides an easy-to-use, yet completely understandable framework to simplify the use of RMI, while at the same time, harnessing its full potential. | | | JProxyTest - an extension to the proxy usage introduction, demonstrating powerful additional functionality.
TransparentProxy - how to use remote objects syntactically as if they were local. (pass by reference)
TransparentProxy2 - how to use remote objects locally. (pass by value) | |
> > | Dynamic Subtyping - an important extension to the use of Transparent Proxies. | | | AsyncMethod - how to use asynchronous remote objects locally.
Java Enterprise Edition Extensions:
| |
< < | CajoServlet - a few extras to allow cajo ItemServer to be incorporated into a J2EE? application | > > | CajoServlet - a few extras to allow cajo ItemServer to be incorporated into a J2EE? application | | | | |
< < | |
| |
| META TOPICPARENT | name="WebHome" |
-- JohnCatherino - 09 Nov 2004 | | | JProxyTest - an extension to the proxy usage introduction, demonstrating powerful additional functionality.
TransparentProxy - how to use remote objects syntactically as if they were local. (pass by reference)
TransparentProxy2 - how to use remote objects locally. (pass by value) | |
> > | AsyncMethod - how to use asynchronous remote objects locally. | | |
Java Enterprise Edition Extensions:
|
| |
| META TOPICPARENT | name="WebHome" |
-- JohnCatherino - 09 Nov 2004 | |
< < | Welcome to the official wiki of the rel="nofollow" cajo project! | > > | | | | | |
< < | If you are new here: | > > | If you are new here: | | | The cajo project is a small, free library, enabling powerful dynamic multi-machine cooperation, both within, and between, Java applications. It provides an easy-to-use, yet completely understandable framework to simplify the use of RMI, while at the same time, harnessing its full potential. | |
< < | Current cajo wiki pages: | > > | About the project: | | | | |
< < | FirewalledClients - how to use ItemProxy and ClientProxy | | | CollaborativeComputing - introduction to dynamic application distribution | |
> > |
More Code Examples:
| | | CajoScripting - using cajo with a scripting language
UsingMulticast - how to use the Multicast rel="nofollow" class
ProxyUsage - a gentle introduction into the use of Proxies rel="nofollow"
JProxyTest - an extension to the proxy usage introduction, demonstrating powerful additional functionality. | |
> > | TransparentProxy - how to use remote objects syntactically as if they were local. (pass by reference)
TransparentProxy2 - how to use remote objects locally. (pass by value)
Java Enterprise Edition Extensions:
| | | CajoServlet - a few extras to allow cajo ItemServer to be incorporated into a J2EE? application
|
| |
| META TOPICPARENT | name="WebHome" |
-- JohnCatherino - 09 Nov 2004 | | | CajoScripting - using cajo with a scripting language
UsingMulticast - how to use the Multicast rel="nofollow" class
ProxyUsage - a gentle introduction into the use of Proxies rel="nofollow" | |
> > | CajoServlet - a few extras to allow cajo ItemServer to be incorporated into a J2EE? application | | |
To paraphrase J.R.R.Tolkien; the cajo project is: "One tool to free them all, and on the network bind them"... |
| |
| META TOPICPARENT | name="WebHome" |
-- JohnCatherino - 09 Nov 2004 | | | CollaborativeComputing - introduction to dynamic application distribution
CajoScripting - using cajo with a scripting language
UsingMulticast - how to use the Multicast rel="nofollow" class | |
< < | ExampleSection - a place to to see, or to ask, how to use the framework in various ways. | > > | ProxyUsage - a gentle introduction into the use of Proxies rel="nofollow" | | |
To paraphrase J.R.R.Tolkien; the cajo project is: "One tool to free them all, and on the network bind them"... |
| |
| META TOPICPARENT | name="WebHome" |
-- JohnCatherino - 09 Nov 2004 | | | CollaborativeComputing - introduction to dynamic application distribution
CajoScripting - using cajo with a scripting language
UsingMulticast - how to use the Multicast rel="nofollow" class | |
> > | ExampleSection - a place to to see, or to ask, how to use the framework in various ways. | | |
To paraphrase J.R.R.Tolkien; the cajo project is: "One tool to free them all, and on the network bind them"... |
| |
| META TOPICPARENT | name="WebHome" |
-- JohnCatherino - 09 Nov 2004
Welcome to the official wiki of the rel="nofollow" cajo project! | |
< < | Serving as a giant global chalkboard; here community members can feel free to post ideas, suggestions, comments, questions, and tips.
If you are new to using a wiki, you might want to visit visit the wiki welcome page, otherwise you can just jump right in! There is after all a preview button, before you commit, so you can see exactly how your contribution will look. | > > | If you are new here:
The cajo project is a small, free library, enabling powerful dynamic multi-machine cooperation, both within, and between, Java applications. It provides an easy-to-use, yet completely understandable framework to simplify the use of RMI, while at the same time, harnessing its full potential. | | | Current cajo wiki pages:
| |
< < | | | | FrameworkCharacteristics - fundamental design motivations
FrameworkComparisons - cajo vs. other distributed designs
FoundationSix - the six core classes of the framework | | | CollaborativeComputing - introduction to dynamic application distribution
CajoScripting - using cajo with a scripting language
UsingMulticast - how to use the Multicast rel="nofollow" class | |
< < | <-- add a page of your own here, or contribute to another! --> | | | | |
< < | To paraphrase J.R.R.Tolkien; cajo is: "One tool to free them all, and on the network bind them"... | > > | To paraphrase J.R.R.Tolkien; the cajo project is: "One tool to free them all, and on the network bind them"... |
| |
| META TOPICPARENT | name="WebHome" |
-- JohnCatherino - 09 Nov 2004 | | | FrameworkCharacteristics - fundamental design motivations
FrameworkComparisons - cajo vs. other distributed designs | |
> > | FoundationSix - the six core classes of the framework | | | ExtensionPackage - information about gnu.cajo.utils.extra
FirewalledClients - how to use ItemProxy and ClientProxy | |
> > | CollaborativeComputing - introduction to dynamic application distribution | | | <-- add a page of your own here, or contribute to another! -->
| |
< < | When you are ready, go ahead and create your own page! (or contribute to one of the exitsing ones) | | | | |
< < | To paraphrase J.R.R.Tolkien; cajo is: "One tool to free them all, and on the network bind them"... | > > | To paraphrase J.R.R.Tolkien; cajo is: "One tool to free them all, and on the network bind them"... |
| |
| META TOPICPARENT | name="WebHome" |
-- JohnCatherino - 09 Nov 2004 | |
< < | Welcome! | > > | Welcome to the official wiki of the rel="nofollow" cajo project! | | | | |
< < | This is the official wiki of the rel="nofollow" cajo project. Serving as a giant global chalkboard; here community members can feel free to post ideas, suggestions, comments, questions, and tips. | > > | Serving as a giant global chalkboard; here community members can feel free to post ideas, suggestions, comments, questions, and tips. | | | | |
< < | If you are new to using a wiki, you might want to visit visit the welcome page, otherwise you can just jump right in! After all, there is a preview button before you commit. | > > | If you are new to using a wiki, you might want to visit visit the wiki welcome page, otherwise you can just jump right in! There is after all a preview button, before you commit, so you can see exactly how your contribution will look. | | | Current cajo wiki pages: | | | When you are ready, go ahead and create your own page! (or contribute to one of the exitsing ones) | |
< < | To paraphrase J.R.R.Tolkien; cajo is: "One tool to free them all, and on the network bind them" | > > | To paraphrase J.R.R.Tolkien; cajo is: "One tool to free them all, and on the network bind them"... |
| |
| META TOPICPARENT | name="WebHome" |
-- JohnCatherino - 09 Nov 2004
Welcome! | |
< < | This is the official wiki of the rel="nofollow" cajo project. Serving as a giant global chalkboard; here community members can feel free to post ideas, suggestions, comments, questions, and tips. I will start by hashing out a few general topics; please feel free to improve them, or to add a few of your own. | > > | This is the official wiki of the rel="nofollow" cajo project. Serving as a giant global chalkboard; here community members can feel free to post ideas, suggestions, comments, questions, and tips. | | | If you are new to using a wiki, you might want to visit visit the welcome page, otherwise you can just jump right in! After all, there is a preview button before you commit.
Current cajo wiki pages:
| |
< < | FrameworkCharacteristics
FrameworkComparisons | > > | FrameworkCharacteristics - fundamental design motivations
FrameworkComparisons - cajo vs. other distributed designs | | | <-- add a page of your own here, or contribute to another! -->
|
| |
| META TOPICPARENT | name="WebHome" |
-- JohnCatherino - 09 Nov 2004
Welcome! | |
< < | This is the official wiki of the rel="nofollow" cajo project. Serving as a giant global chalkboard; here all community members can feel free to post ideas, suggestions, comments, questions, and tips. I will start by hashing out a few general topics; please feel free to improve them, or to add a few of your own. | > > | This is the official wiki of the rel="nofollow" cajo project. Serving as a giant global chalkboard; here community members can feel free to post ideas, suggestions, comments, questions, and tips. I will start by hashing out a few general topics; please feel free to improve them, or to add a few of your own. | | | | |
< < | If you are new to using a wiki, you might want to visit visit the welcome page, otherwise you can just jump right in! There is after all a preview button, before you commit. You are welcome to add a new criteria for explanation, or a new framework for comparison. | > > | If you are new to using a wiki, you might want to visit visit the welcome page, otherwise you can just jump right in! After all, there is a preview button before you commit. | | | | |
< < |
- Priorities: The most important consideration in the design of the framework is that is must work for all Java runtime environments, 1.2 and higher. This means, as tempting as some of the new features may be, there is simply too large an installed base to make it practical. That said, there has also been no really cool feature that we could not successfully recreate, using plain-old Java2. However, this does not mean that your applications are in any way restricted. For example, while all devices from mobile phones to desktop workstations can work together, all the latest and greatest features, like Swing for example, can be used, as long as you are sure all the receiving devices can support them.
- Features: One of the most important features of the framework is that applications do not have to be structured around it. This is quite unique amongst distributed frameworks. This makes it extremely to incorporate the framework into large existing applications. As we like to say; you don't design your applications around cajo, it simply drops-in! Straightforward object oriented design is all that is required. Its two main strengths are in the ease in which it allows Virtual Machines to join together dynamically to create a seamles virtual computer, and for its ability to remote rich user interfaces between them simply.
- Limitations: Being RMI based, cajo only works between Java applications. For some applications this can entail a significant porting effort. This is offset however, by the magic of mobile code. Being able to send an object to another Virtual Machine, including its class definitions, is a wondrously powerful feature that can only be provided by using Java.
- Performance: Since cajo is a small efficient layer built atop RMI, its performance is no better, or worse, than other Java technologies like Jini or EJB. While it entails a little more overhead than using basic sockets, the power and transparency the protocol provides are well worth the cost, and would ultimately have to be recreated manually to provide this much functionality.
- Persistence: The primary storage mechanism used in the cajo project is the zedmob. It is a contraction of the words Zipped and Marshalled Object. It allows remote references, and even remotely loaded objects to be saved to disc, or passed to other remote Virtual Machines. A zedmob is persistent in that its existence is entirely independent of the lifetime of the Virtual Machine using it.
- Scalability: The scalability of the framework comes in two forms; sometimes called static, and dynamic. Static scalability means a single application can simply migrate its objects between multiple Virtual Machines, to accomodate increased load or reliability concerns. Dynamic scalability means objects can join together to create emergent functionality. This second technology is very exciting, and still in its infancy.
- Security: There are many facets to security. For server reliability, hosting of proxy objects invites the possibility of a denial of service attack. A proxy object could require more resources than a host could provide, potentially hobbling the Virtual Machine. Security in communication however, can be provided in several ways. The communication can be done over SSL, but the overhead must be taken into consideration. There is however one way to encrypt rel="nofollow" sensitive objects, both individually, and separately. This can be both significantly faster, and even more secure.
- Comparisons:
Note: Please do not regard these comparisons as denigrating any of the fine frameworks outlined below. It is just that the cajo project can perform all of their functionality, and even much more, very simply. If it could not do all this, it would not be worth developing the project in the first place. The tone of the comparisons is of the form: "Here is what that framework does in a nutshell, and here is why cajo is more flexible".
| > > | Current cajo wiki pages: | | | | |
< < | J2EE: An enormous framework for the development of business application servers, called containers in its vernacular. J2EE rel="nofollow" provides API resources to manage communications, threading, transactions, and resources. The cajo framework is an evolution beyond the traditional client/server architecture perspective. It provides a clean foundation on which separate Virtual Machines can offer up, and use, functionality as objects, as simply as it does local ones. | > > | FrameworkCharacteristics
FrameworkComparisons
<-- add a page of your own here, or contribute to another! --> | | | | |
< < | EJB: Much closer to the design idea of the cajo framework, yet still J2EE? focused. EJB rel="nofollow" is a server-side component architecture, similarly cajo is a component architecture but with an object-to-object interaction focus. EJB requires a J2EE? container environment in which to operate, cajo has no requirements for any special frameworks, it is designed to even run on J2ME? platforms, like mobile phones. EJB has specialized classifications of components, broadly categorized as entity, session, and message driven beans. In the cajo framework objects are simply objects, their scope and purpose are application specific, no differently than for local objects.
JMS: Another technology included in the J2EE? platform. JMS rel="nofollow" focus is on messaging between objects. Since cajo allows remote objects to appear local, it is used far more richly than just for messaging. JMS supports many standard legacy messaging protocols, thereby allowing JMS compliant EJB objects a means of communicating with legacy software.
Note: cajo is not, nor is it intended, to be a component of J2EE?. For legacy enterprise applications it is highly recommended to use cajo in addition to J2EE?. It is most effective to reserve the use of heavyweight J2EE? purely for interoperability with other supplier's J2EE? products, or other legacy software. I.e. try to use J2EE? only where mandatory, and cajo for everything else.
Jini: It might be called the inspiration and motivation for the creation of the cajo framework. They both are frameworks to allow spontaneous internetworking of objects, which can easily adapt to change and nodal failure. Jini rel="nofollow" imposes significant architectural structure on its objects, whereas cajo is entirely freeform. This causes the Jini framework to be considerably larger than cajo. The largest impetus for the creation of the cajo project, has also been the largest stumbling-block for the adoption of Jini: The Jini Technology Specific Attachment to the SCSL, aka the JTSA. An extremely restrictive license, in particular, Section IV, subsection D; it legally prohibits open source Jini projects from use outside the research community, and provides no option for use in free software projects. In contrast, the cajo project is licensed under the GNU LGPL; everybody can use it freely.
JavaSpaces: A Jini service for collaboration between resources. It is often thought of as difficult rel="nofollow" to set up and use, as it requires many simultaneously operating support applications, cajo has none of this overhead. In the cajo framework, the analog to this functionality is provided by the far more generic and spontaneous Multicast rel="nofollow" class. Both technologies allow objects to discover each other independently; however cajo uses UDP to provide this dynamically, while JavaSpaces rel="nofollow" uses a service lookup registry over TCP, to provide this functionality statically. JavaSpaces takes a client/server approach, where clients make use of a server to obtain leases on services, through a central registry. The cajo methodology distinguishes functional groups via UDP groups, which are completely decentralized, and purely application specific. Ultimately any use of JavaSpaces is also subject to the terms of the JTSA license.
Note: cajo is, and is intended, as a replacement for Jini. Were it not for the opressive licensing, it is likely the cajo project would never have been started in the first place; so there is a bright side to all this. There are a lot of really cool features in cajo, that do not exist in Jini. They are even welcome to borrow the code, they just need to re-license Jini, under the GNU rel="nofollow" LGPL. (Nothing like a little friendly rivalry between the free, and non-free, software camps;-) | > > | | | | | |
< < | Agent Based: Frameworks such as aglets rel="nofollow" involve sending specially constructed, configured, and well known objects to agent servers. Here these agent objects gather application specific information of interest to the sender, and return it. This is an interesting technnique, and while very easily implemented using cajo, it is outside the core project scope. The cajo framework does not dictate any application architecture, it is a drop-in technology. All agent based systems are designed from scratch as such. | > > | When you are ready, go ahead and create your own page! (or contribute to one of the exitsing ones) | | | | |
< < |
To paraphrase J.R.R.Tolkien cajo is: "One tool to free them all, and on the network bind them"
| > > | To paraphrase J.R.R.Tolkien; cajo is: "One tool to free them all, and on the network bind them" |
| |
| META TOPICPARENT | name="WebHome" |
-- JohnCatherino - 09 Nov 2004 | | | This is the official wiki of the rel="nofollow" cajo project. Serving as a giant global chalkboard; here all community members can feel free to post ideas, suggestions, comments, questions, and tips. I will start by hashing out a few general topics; please feel free to improve them, or to add a few of your own. | |
< < | If you are new to using a wiki, you might want to visit visit the welcome page, otherwise you can just jump right in! There is after all a preview button, before you commit. Feel free to add a new criteria for explanation, or a new framework for comparison. | > > | If you are new to using a wiki, you might want to visit visit the welcome page, otherwise you can just jump right in! There is after all a preview button, before you commit. You are welcome to add a new criteria for explanation, or a new framework for comparison. | | | | |
< < | Priorities: The most important consideration in the design of the framework is that is must work for all Java runtime environments, 1.2 and higher. This means, as tempting as some of the new features may be, there is simply too large an installed base to make it practical. That said, there has also been no really cool feature that we could not successfully recreate, using plain-old Java2. However, this does not mean that your applications are in any way restricted. For example, while all devices from mobile phones to desktop workstations can work together, all the latest and greatest features, like Swing for example, can be used, as long as the receiving devices support them. | > > | Priorities: The most important consideration in the design of the framework is that is must work for all Java runtime environments, 1.2 and higher. This means, as tempting as some of the new features may be, there is simply too large an installed base to make it practical. That said, there has also been no really cool feature that we could not successfully recreate, using plain-old Java2. However, this does not mean that your applications are in any way restricted. For example, while all devices from mobile phones to desktop workstations can work together, all the latest and greatest features, like Swing for example, can be used, as long as you are sure all the receiving devices can support them. | | | Features: One of the most important features of the framework is that applications do not have to be structured around it. This is quite unique amongst distributed frameworks. This makes it extremely to incorporate the framework into large existing applications. As we like to say; you don't design your applications around cajo, it simply drops-in! Straightforward object oriented design is all that is required. Its two main strengths are in the ease in which it allows Virtual Machines to join together dynamically to create a seamles virtual computer, and for its ability to remote rich user interfaces between them simply. | | | Comparisons: | |
< < | Note: Please do not regard these comparisons as denigrating any of the fine frameworks outlined below. It is just that the cajo project can perform all of their functionality, and even much more, very simply. If it could not do all this, it would not be worth developing the project in the first place. The tone of the comparisons is of the form: "Here is what that framework does in a nutshell, and here is why cajo is more flexible". | > > | Note: Please do not regard these comparisons as denigrating any of the fine frameworks outlined below. It is just that the cajo project can perform all of their functionality, and even much more, very simply. If it could not do all this, it would not be worth developing the project in the first place. The tone of the comparisons is of the form: "Here is what that framework does in a nutshell, and here is why cajo is more flexible". | | |
- J2EE: An enormous framework for the development of business application servers, called containers in its vernacular. J2EE rel="nofollow" provides API resources to manage communications, threading, transactions, and resources. The cajo framework is an evolution beyond the traditional client/server architecture perspective. It provides a clean foundation on which separate Virtual Machines can offer up, and use, functionality as objects, as simply as it does local ones.
| | | JMS: Another technology included in the J2EE? platform. JMS rel="nofollow" focus is on messaging between objects. Since cajo allows remote objects to appear local, it is used far more richly than just for messaging. JMS supports many standard legacy messaging protocols, thereby allowing JMS compliant EJB objects a means of communicating with legacy software. | |
< < | Note: cajo is not, nor is it intended, to be a component of J2EE?. For legacy enterprise applications it is highly recommended to use cajo in addition to J2EE?. It is most effective to reserve the use of heavyweight J2EE? purely for interoperability with other supplier's J2EE? products, or other legacy software. I.e. try to use J2EE? only where mandatory, and cajo for everything else. | > > | Note: cajo is not, nor is it intended, to be a component of J2EE?. For legacy enterprise applications it is highly recommended to use cajo in addition to J2EE?. It is most effective to reserve the use of heavyweight J2EE? purely for interoperability with other supplier's J2EE? products, or other legacy software. I.e. try to use J2EE? only where mandatory, and cajo for everything else. | | | Jini: It might be called the inspiration and motivation for the creation of the cajo framework. They both are frameworks to allow spontaneous internetworking of objects, which can easily adapt to change and nodal failure. Jini rel="nofollow" imposes significant architectural structure on its objects, whereas cajo is entirely freeform. This causes the Jini framework to be considerably larger than cajo. The largest impetus for the creation of the cajo project, has also been the largest stumbling-block for the adoption of Jini: The Jini Technology Specific Attachment to the SCSL, aka the JTSA. An extremely restrictive license, in particular, Section IV, subsection D; it legally prohibits open source Jini projects from use outside the research community, and provides no option for use in free software projects. In contrast, the cajo project is licensed under the GNU LGPL; everybody can use it freely. | | | Agent Based: Frameworks such as aglets rel="nofollow" involve sending specially constructed, configured, and well known objects to agent servers. Here these agent objects gather application specific information of interest to the sender, and return it. This is an interesting technnique, and while very easily implemented using cajo, it is outside the core project scope. The cajo framework does not dictate any application architecture, it is a drop-in technology. All agent based systems are designed from scratch as such.
| |
< < | To paraphrase J.R.R. Tolkien, cajo is: "One tool to free them all, and on the network bind them"  | > > | To paraphrase J.R.R.Tolkien cajo is: "One tool to free them all, and on the network bind them" | | |
|
| |
| META TOPICPARENT | name="WebHome" |
-- JohnCatherino - 09 Nov 2004 | | | This is the official wiki of the rel="nofollow" cajo project. Serving as a giant global chalkboard; here all community members can feel free to post ideas, suggestions, comments, questions, and tips. I will start by hashing out a few general topics; please feel free to improve them, or to add a few of your own. | |
< < | If you are new to using a wiki, you might want to visit visit the welcome page, otherwise you can just jump right in! There is after all a preview button, before you commit! | > > | If you are new to using a wiki, you might want to visit visit the welcome page, otherwise you can just jump right in! There is after all a preview button, before you commit. Feel free to add a new criteria for explanation, or a new framework for comparison. | | |
- Priorities: The most important consideration in the design of the framework is that is must work for all Java runtime environments, 1.2 and higher. This means, as tempting as some of the new features may be, there is simply too large an installed base to make it practical. That said, there has also been no really cool feature that we could not successfully recreate, using plain-old Java2. However, this does not mean that your applications are in any way restricted. For example, while all devices from mobile phones to desktop workstations can work together, all the latest and greatest features, like Swing for example, can be used, as long as the receiving devices support them.
| |
< < | Features: One of the most important features of the framework is that applications do not have to be structured around it. This is quite unique amongst distributed frameworks. This makes it extremely to incorporate the framework into large existing applications. As we like to say; you don't design your applications around cajo, it simply drops-in! Straightforward object oriented design is all that is required. | > > | Features: One of the most important features of the framework is that applications do not have to be structured around it. This is quite unique amongst distributed frameworks. This makes it extremely to incorporate the framework into large existing applications. As we like to say; you don't design your applications around cajo, it simply drops-in! Straightforward object oriented design is all that is required. Its two main strengths are in the ease in which it allows Virtual Machines to join together dynamically to create a seamles virtual computer, and for its ability to remote rich user interfaces between them simply. | | | Limitations: Being RMI based, cajo only works between Java applications. For some applications this can entail a significant porting effort. This is offset however, by the magic of mobile code. Being able to send an object to another Virtual Machine, including its class definitions, is a wondrously powerful feature that can only be provided by using Java. | |
< < | Performance: Since cajo is a small efficient layer built atop RMI, its performance is no better, or worse, than other Java technologies like Jini or EJB. While it entails a little more overhead than using basic sockets, the power and transparency the protocol provides are well worth the cost, and would ultimately have to be recreated manually to provide this functionality. | > > | Performance: Since cajo is a small efficient layer built atop RMI, its performance is no better, or worse, than other Java technologies like Jini or EJB. While it entails a little more overhead than using basic sockets, the power and transparency the protocol provides are well worth the cost, and would ultimately have to be recreated manually to provide this much functionality. | | | | |
< < | Persistence: The primary storage mechanism used in the cajo project is the zedmob. It is a contraction of the words Zipped and Marshalled Object. It allows remote references, and even remotely loaded objects to be saved to disc, or passed to other remote Virtual Machines. A zedmob is persistent in that its existence is entirely independent of that of the Virtual Machine using it. | > > | Persistence: The primary storage mechanism used in the cajo project is the zedmob. It is a contraction of the words Zipped and Marshalled Object. It allows remote references, and even remotely loaded objects to be saved to disc, or passed to other remote Virtual Machines. A zedmob is persistent in that its existence is entirely independent of the lifetime of the Virtual Machine using it. | | | Scalability: The scalability of the framework comes in two forms; sometimes called static, and dynamic. Static scalability means a single application can simply migrate its objects between multiple Virtual Machines, to accomodate increased load or reliability concerns. Dynamic scalability means objects can join together to create emergent functionality. This second technology is very exciting, and still in its infancy. | |
< < | Security: There are many facets to security. For server reliability, hosting of proxy objects invites the possibility of a denial of service attack. A proxy object could require more resources than a host could provide, potentially hobbling the Virtual Machine. Security in communication however, can be provided in several ways. The communication can be done over SSL, but the overhead must be taken into consideration. There is however at least one way rel="nofollow" to encrypt sensitive objects, both individually, and separately. This can be both significantly faster, and even more secure. | > > | Security: There are many facets to security. For server reliability, hosting of proxy objects invites the possibility of a denial of service attack. A proxy object could require more resources than a host could provide, potentially hobbling the Virtual Machine. Security in communication however, can be provided in several ways. The communication can be done over SSL, but the overhead must be taken into consideration. There is however one way to encrypt rel="nofollow" sensitive objects, both individually, and separately. This can be both significantly faster, and even more secure. | | | Comparisons: | |
> > | Note: Please do not regard these comparisons as denigrating any of the fine frameworks outlined below. It is just that the cajo project can perform all of their functionality, and even much more, very simply. If it could not do all this, it would not be worth developing the project in the first place. The tone of the comparisons is of the form: "Here is what that framework does in a nutshell, and here is why cajo is more flexible". | | | | |
< < | J2EE: A vastly larger framework for the development of business application servers, called containers in its vernacular. J2EE rel="nofollow" provides API resources to manage communications, threading, transactions, and resources. The cajo framework is an evolution beyond the traditional client/server architecture perspective. It provides a clean foundation on which separate Virtual Machines can offer up, and use, functionality as objects, as simply as it does local ones. | > > | J2EE: An enormous framework for the development of business application servers, called containers in its vernacular. J2EE rel="nofollow" provides API resources to manage communications, threading, transactions, and resources. The cajo framework is an evolution beyond the traditional client/server architecture perspective. It provides a clean foundation on which separate Virtual Machines can offer up, and use, functionality as objects, as simply as it does local ones. | | | | |
< < | EJB: Much closer to the design intent of the cajo framework, yet still J2EE? focused. EJB rel="nofollow" is a server-side component architecture, similarly cajo is a component architecture but with an object-to-object interaction focus. EJB requires a J2EE? container environment in which to operate, cajo has no requirements for any special frameworks, it is designed to even run on J2ME? platforms like mobile phones. EJB has specialized classifications of components, broadly categorized as entity, session, and message driven beans. In the cajo framework objects are simply objects, their scope and purpose are application specific, no differently than for local objects. | > > | EJB: Much closer to the design idea of the cajo framework, yet still J2EE? focused. EJB rel="nofollow" is a server-side component architecture, similarly cajo is a component architecture but with an object-to-object interaction focus. EJB requires a J2EE? container environment in which to operate, cajo has no requirements for any special frameworks, it is designed to even run on J2ME? platforms, like mobile phones. EJB has specialized classifications of components, broadly categorized as entity, session, and message driven beans. In the cajo framework objects are simply objects, their scope and purpose are application specific, no differently than for local objects. | | | | |
< < | JMS: Is another technology included in the J2EE? platform. JMS rel="nofollow" focus is on messaging between objects. Since cajo allows remote objects to appear local, it is used far more richly than just for messaging. JMS supports many standard legacy messaging protocols, thereby allowing JMS compliant EJB objects a means of communicating with legacy software. | > > | JMS: Another technology included in the J2EE? platform. JMS rel="nofollow" focus is on messaging between objects. Since cajo allows remote objects to appear local, it is used far more richly than just for messaging. JMS supports many standard legacy messaging protocols, thereby allowing JMS compliant EJB objects a means of communicating with legacy software. | | | | |
< < | Note: cajo is not, nor is it intended, to be a component of J2EE?. For legacy enterprise applications it is highly recommended to use cajo in addition to J2EE?. It is most effective to reserve the use of heavyweight J2EE? purely for interoperability with other supplier's J2EE? products, or other legacy software. I.e. try to use J2EE? only where required, and cajo for everything else. However, given the extraordinary flexibility, simplicity, and scalability of cajo, it is worthy successor to J2EE? for use in new applications. | > > | Note: cajo is not, nor is it intended, to be a component of J2EE?. For legacy enterprise applications it is highly recommended to use cajo in addition to J2EE?. It is most effective to reserve the use of heavyweight J2EE? purely for interoperability with other supplier's J2EE? products, or other legacy software. I.e. try to use J2EE? only where mandatory, and cajo for everything else. | | | Jini: It might be called the inspiration and motivation for the creation of the cajo framework. They both are frameworks to allow spontaneous internetworking of objects, which can easily adapt to change and nodal failure. Jini rel="nofollow" imposes significant architectural structure on its objects, whereas cajo is entirely freeform. This causes the Jini framework to be considerably larger than cajo. The largest impetus for the creation of the cajo project, has also been the largest stumbling-block for the adoption of Jini: The Jini Technology Specific Attachment to the SCSL, aka the JTSA. An extremely restrictive license, in particular, Section IV, subsection D; it legally prohibits open source Jini projects from use outside the research community, and provides no option for use in free software projects. In contrast, the cajo project is licensed under the GNU LGPL; everybody can use it freely. | |
< < | JavaSpaces: A Jini service for collaboration between resources. It is often thought of as difficult rel="nofollow" to set up and use, as it requires many simultaneously operating support applications, cajo has none of this overhead. In the cajo framework, the analog to this functionality is provided by the far more generic and spontaneous Multicast rel="nofollow" class. Both technologies allow objects to discover each other independently; cajo uses UDP to provide this dynamically, while JavaSpaces rel="nofollow" uses a service lookup registry over TCP, to provide this functionality statically. JavaSpaces takes a more client/server approach, where clients make use of a server to obtain leases on services, through a central registry. The cajo methodology distinguishes functional groups via UDP groups, which are completely decentralized, and purely application specific. Ultimately any use of JavaSpaces is also subject to the terms of the JTSA license. | > > | JavaSpaces: A Jini service for collaboration between resources. It is often thought of as difficult rel="nofollow" to set up and use, as it requires many simultaneously operating support applications, cajo has none of this overhead. In the cajo framework, the analog to this functionality is provided by the far more generic and spontaneous Multicast rel="nofollow" class. Both technologies allow objects to discover each other independently; however cajo uses UDP to provide this dynamically, while JavaSpaces rel="nofollow" uses a service lookup registry over TCP, to provide this functionality statically. JavaSpaces takes a client/server approach, where clients make use of a server to obtain leases on services, through a central registry. The cajo methodology distinguishes functional groups via UDP groups, which are completely decentralized, and purely application specific. Ultimately any use of JavaSpaces is also subject to the terms of the JTSA license. | | | | |
< < | Note: cajo is, and is intended, as a replacement for Jini. Were it not for the opressive licensing, it is likely the cajo project would never have been starte in the first place; so there is a bright side to all this. There are a lot of really cool features in cajo, that do not exist in Jini. They are even welcome to borrow the code, they just need to re-license Jini, under the GNU rel="nofollow" LGPL. (Nothing like a little friendly rivalry between the free, and non-free, software camps;-) | > > | Note: cajo is, and is intended, as a replacement for Jini. Were it not for the opressive licensing, it is likely the cajo project would never have been started in the first place; so there is a bright side to all this. There are a lot of really cool features in cajo, that do not exist in Jini. They are even welcome to borrow the code, they just need to re-license Jini, under the GNU rel="nofollow" LGPL. (Nothing like a little friendly rivalry between the free, and non-free, software camps;-) | | | | |
< < | Agent Based: Frameworks such as aglets rel="nofollow" involve sending specially constructed, configured, and well known objects to agent servers. Here these agent objects gather application specific information of interest to the sender, and return it. This is an interesting technology, and while very easily implemented using cajo, it is fundamentally outside the project scope. The cajo framework does not dictate any application architecture, it is a drop-in technology. All agent based systems are designed from scratch as such. | > > | Agent Based: Frameworks such as aglets rel="nofollow" involve sending specially constructed, configured, and well known objects to agent servers. Here these agent objects gather application specific information of interest to the sender, and return it. This is an interesting technnique, and while very easily implemented using cajo, it is outside the core project scope. The cajo framework does not dictate any application architecture, it is a drop-in technology. All agent based systems are designed from scratch as such. | | | | |
< < | | > > | To paraphrase J.R.R. Tolkien, cajo is: "One tool to free them all, and on the network bind them"  | | | | |
< < | | | | |
| |
| META TOPICPARENT | name="WebHome" |
-- JohnCatherino - 09 Nov 2004 | | | Comparisons:
| |
< < | J2EE: A vastly larger and far more comprehensive framework for the development of application servers, called containers in its vernacular. J2EE rel="nofollow" provides API resources to manage communications, threading, transactions, and resources. The cajo framework is not based on a client/server architecture perspective, it is more generic than that. It provides a clean foundation on which separate Virtual Machines can offer up, and use, functionality as objects, as simply as it does local ones. It does not have the enterprise management focus of J2EE?. | > > | J2EE: A vastly larger framework for the development of business application servers, called containers in its vernacular. J2EE rel="nofollow" provides API resources to manage communications, threading, transactions, and resources. The cajo framework is an evolution beyond the traditional client/server architecture perspective. It provides a clean foundation on which separate Virtual Machines can offer up, and use, functionality as objects, as simply as it does local ones. | | | | |
< < | EJB: Much closer to the design intent of the cajo framework, yet still vastly larger in scope. EJB rel="nofollow" is a server-side component architecture, similarly cajo is a component architecture but with an object-to-object interaction focus. EJB requires a J2EE? container environment in which to operate, cajo has no requirements for any special frameworks, it even runs on J2ME?. EJB has specialized classifications of components, broadly categorized as entity, session, and message driven beans. In the cajo framework objects are simply objects, their scope and purpose are application specific, no differently than for local objects. | > > | EJB: Much closer to the design intent of the cajo framework, yet still J2EE? focused. EJB rel="nofollow" is a server-side component architecture, similarly cajo is a component architecture but with an object-to-object interaction focus. EJB requires a J2EE? container environment in which to operate, cajo has no requirements for any special frameworks, it is designed to even run on J2ME? platforms like mobile phones. EJB has specialized classifications of components, broadly categorized as entity, session, and message driven beans. In the cajo framework objects are simply objects, their scope and purpose are application specific, no differently than for local objects. | | | | |
< < | JMS: Is another technology included in the J2EE? platform. JMS rel="nofollow" focus is on messaging between objects. Since cajo allows remote objects to appear local, it is used far more richly than just for messaging. However, JMS defines standard protocols, thereby allowing JMS compliant EJB objects from various vendors standard means of communicating about standard transactions. | > > | JMS: Is another technology included in the J2EE? platform. JMS rel="nofollow" focus is on messaging between objects. Since cajo allows remote objects to appear local, it is used far more richly than just for messaging. JMS supports many standard legacy messaging protocols, thereby allowing JMS compliant EJB objects a means of communicating with legacy software. | | | | |
< < | Note: cajo is not, nor is it intended, as a replacement for J2EE?. For enterprise applications it is highly recommended to use cajo in addition to J2EE?. It is most effective to reserve the use of heavyweight J2EE? purely for interoperability with other supplier's J2EE? products, or legacy software. I.e. try to use J2EE? only where required, and cajo for everything else. | > > | Note: cajo is not, nor is it intended, to be a component of J2EE?. For legacy enterprise applications it is highly recommended to use cajo in addition to J2EE?. It is most effective to reserve the use of heavyweight J2EE? purely for interoperability with other supplier's J2EE? products, or other legacy software. I.e. try to use J2EE? only where required, and cajo for everything else. However, given the extraordinary flexibility, simplicity, and scalability of cajo, it is worthy successor to J2EE? for use in new applications. | | | | |
< < | Jini: It might be called the inspiration and motivation for the creation of the cajo framework. They both are frameworks to allow spontaneous internetworking of objects, which can easily adapt to change and nodal failure. Jini rel="nofollow" imposes significantly more architectural structure on its objects, whereas cajo is entirely freeform. This causes the Jini framework to be considerably larger than cajo. The largest impetus for the creation of the cajo project, has also been the largest stumbling-block for the adoption of Jini: The Jini Technology Specific Attachment to the SCSL, aka the JTSA. An extremely restrictive license, in particular, Section IV, subsection D; it legally prohibits open source Jini projects from use outside the research community, and provides no option for use in free software projects. In contrast, the cajo project is licensed under the GNU LGPL; everybody can use it freely. | > > | Jini: It might be called the inspiration and motivation for the creation of the cajo framework. They both are frameworks to allow spontaneous internetworking of objects, which can easily adapt to change and nodal failure. Jini rel="nofollow" imposes significant architectural structure on its objects, whereas cajo is entirely freeform. This causes the Jini framework to be considerably larger than cajo. The largest impetus for the creation of the cajo project, has also been the largest stumbling-block for the adoption of Jini: The Jini Technology Specific Attachment to the SCSL, aka the JTSA. An extremely restrictive license, in particular, Section IV, subsection D; it legally prohibits open source Jini projects from use outside the research community, and provides no option for use in free software projects. In contrast, the cajo project is licensed under the GNU LGPL; everybody can use it freely. | | | JavaSpaces: A Jini service for collaboration between resources. It is often thought of as difficult rel="nofollow" to set up and use, as it requires many simultaneously operating support applications, cajo has none of this overhead. In the cajo framework, the analog to this functionality is provided by the far more generic and spontaneous Multicast rel="nofollow" class. Both technologies allow objects to discover each other independently; cajo uses UDP to provide this dynamically, while JavaSpaces rel="nofollow" uses a service lookup registry over TCP, to provide this functionality statically. JavaSpaces takes a more client/server approach, where clients make use of a server to obtain leases on services, through a central registry. The cajo methodology distinguishes functional groups via UDP groups, which are completely decentralized, and purely application specific. Ultimately any use of JavaSpaces is also subject to the terms of the JTSA license. | |
< < | Note: cajo is, and is intended, as a replacement for Jini. This is unfortunate; were it not for the opressive licensing, it is likely the cajo project would never have been built in the first place. There is a bright side however; there are a lot of really cool features in cajo, that do not exist in Jini. They are welcome to borrow the code, they just have to re-license Jini, under the GNU rel="nofollow" LGPL. (Nothing like a little friendly rivalry between the free, and non-free, software camps:-) | > > | Note: cajo is, and is intended, as a replacement for Jini. Were it not for the opressive licensing, it is likely the cajo project would never have been starte in the first place; so there is a bright side to all this. There are a lot of really cool features in cajo, that do not exist in Jini. They are even welcome to borrow the code, they just need to re-license Jini, under the GNU rel="nofollow" LGPL. (Nothing like a little friendly rivalry between the free, and non-free, software camps;-) | | | Agent Based: Frameworks such as aglets rel="nofollow" involve sending specially constructed, configured, and well known objects to agent servers. Here these agent objects gather application specific information of interest to the sender, and return it. This is an interesting technology, and while very easily implemented using cajo, it is fundamentally outside the project scope. The cajo framework does not dictate any application architecture, it is a drop-in technology. All agent based systems are designed from scratch as such. |
| |
| META TOPICPARENT | name="WebHome" |
-- JohnCatherino - 09 Nov 2004 | | | Persistence: The primary storage mechanism used in the cajo project is the zedmob. It is a contraction of the words Zipped and Marshalled Object. It allows remote references, and even remotely loaded objects to be saved to disc, or passed to other remote Virtual Machines. A zedmob is persistent in that its existence is entirely independent of that of the Virtual Machine using it. | |
< < | Scalability: The scalability of the framework comes in two forms; sometimes called static, and dynamic. Static scalability means a single application can simply migrate its objects between multiple Virtual Machines, to accomodate increased load. Dynamic scalability means objects can join together to create emergent functionality. This new technology is very exciting, and still in its infancy. | > > | Scalability: The scalability of the framework comes in two forms; sometimes called static, and dynamic. Static scalability means a single application can simply migrate its objects between multiple Virtual Machines, to accomodate increased load or reliability concerns. Dynamic scalability means objects can join together to create emergent functionality. This second technology is very exciting, and still in its infancy. | | | Security: There are many facets to security. For server reliability, hosting of proxy objects invites the possibility of a denial of service attack. A proxy object could require more resources than a host could provide, potentially hobbling the Virtual Machine. Security in communication however, can be provided in several ways. The communication can be done over SSL, but the overhead must be taken into consideration. There is however at least one way rel="nofollow" to encrypt sensitive objects, both individually, and separately. This can be both significantly faster, and even more secure. | | | JMS: Is another technology included in the J2EE? platform. JMS rel="nofollow" focus is on messaging between objects. Since cajo allows remote objects to appear local, it is used far more richly than just for messaging. However, JMS defines standard protocols, thereby allowing JMS compliant EJB objects from various vendors standard means of communicating about standard transactions. | |
< < | Jini: It might be called the inspiration and motivation for the creation of the cajo framework. They both are frameworks to allow spontaneous internetworking of objects, which can easily adapt to change and nodal failure. Jini rel="nofollow" imposes significantly more architectural structure on its objects, whereas cajo is entirely freeform. This causes the Jini framework to be considerably larger than cajo. The largest impetus for the creation of the cajo project, has also been the largest stumbling-block for the adoption of Jini: The Jini Technology Specific Attachment to the SCSL, aka the JTSA. An extremely restrictive license, in particular, Section IV, subsection D; it legally prohibits open source Jini projects from use outside the research community, and provides no option for use in free software projects. In contrast, the cajo project is freely licensed under the GNU LGPL, everybody can use it. | > > | Note: cajo is not, nor is it intended, as a replacement for J2EE?. For enterprise applications it is highly recommended to use cajo in addition to J2EE?. It is most effective to reserve the use of heavyweight J2EE? purely for interoperability with other supplier's J2EE? products, or legacy software. I.e. try to use J2EE? only where required, and cajo for everything else.
Jini: It might be called the inspiration and motivation for the creation of the cajo framework. They both are frameworks to allow spontaneous internetworking of objects, which can easily adapt to change and nodal failure. Jini rel="nofollow" imposes significantly more architectural structure on its objects, whereas cajo is entirely freeform. This causes the Jini framework to be considerably larger than cajo. The largest impetus for the creation of the cajo project, has also been the largest stumbling-block for the adoption of Jini: The Jini Technology Specific Attachment to the SCSL, aka the JTSA. An extremely restrictive license, in particular, Section IV, subsection D; it legally prohibits open source Jini projects from use outside the research community, and provides no option for use in free software projects. In contrast, the cajo project is licensed under the GNU LGPL; everybody can use it freely. | | | JavaSpaces: A Jini service for collaboration between resources. It is often thought of as difficult rel="nofollow" to set up and use, as it requires many simultaneously operating support applications, cajo has none of this overhead. In the cajo framework, the analog to this functionality is provided by the far more generic and spontaneous Multicast rel="nofollow" class. Both technologies allow objects to discover each other independently; cajo uses UDP to provide this dynamically, while JavaSpaces rel="nofollow" uses a service lookup registry over TCP, to provide this functionality statically. JavaSpaces takes a more client/server approach, where clients make use of a server to obtain leases on services, through a central registry. The cajo methodology distinguishes functional groups via UDP groups, which are completely decentralized, and purely application specific. Ultimately any use of JavaSpaces is also subject to the terms of the JTSA license. | |
> > | Note: cajo is, and is intended, as a replacement for Jini. This is unfortunate; were it not for the opressive licensing, it is likely the cajo project would never have been built in the first place. There is a bright side however; there are a lot of really cool features in cajo, that do not exist in Jini. They are welcome to borrow the code, they just have to re-license Jini, under the GNU rel="nofollow" LGPL. (Nothing like a little friendly rivalry between the free, and non-free, software camps:-) | | | Agent Based: Frameworks such as aglets rel="nofollow" involve sending specially constructed, configured, and well known objects to agent servers. Here these agent objects gather application specific information of interest to the sender, and return it. This is an interesting technology, and while very easily implemented using cajo, it is fundamentally outside the project scope. The cajo framework does not dictate any application architecture, it is a drop-in technology. All agent based systems are designed from scratch as such.
|
| |
| META TOPICPARENT | name="WebHome" |
-- JohnCatherino - 09 Nov 2004 | | | Features: One of the most important features of the framework is that applications do not have to be structured around it. This is quite unique amongst distributed frameworks. This makes it extremely to incorporate the framework into large existing applications. As we like to say; you don't design your applications around cajo, it simply drops-in! Straightforward object oriented design is all that is required. | |
< < | Limitations: Being RMI based, cajo only works between Java applications. For some applications this can entail a significant porting effort. This is offset however, by the magic of mobile code. Being able to send an object to another Virtual Machine, including its class definitions, is a wondrously powerful feature that can only be provided by using Java. | > > | Limitations: Being RMI based, cajo only works between Java applications. For some applications this can entail a significant porting effort. This is offset however, by the magic of mobile code. Being able to send an object to another Virtual Machine, including its class definitions, is a wondrously powerful feature that can only be provided by using Java. | | | Performance: Since cajo is a small efficient layer built atop RMI, its performance is no better, or worse, than other Java technologies like Jini or EJB. While it entails a little more overhead than using basic sockets, the power and transparency the protocol provides are well worth the cost, and would ultimately have to be recreated manually to provide this functionality. | | | Comparisons:
| |
< < | J2EE: A vastly larger and far more comprehensive framework for the development of application servers, called containers in its vernacular. It provides API resources to manage communications, threading, transactions, and resources. The cajo framework is not based on a client/server architecture perspective, it is more generic than that. It provides a clean foundation on which separate Virtual Machines can offer up, and use, functionality as objects, as simply as it does local ones. It does not have the enterprise management focus of J2EE?. | > > | J2EE: A vastly larger and far more comprehensive framework for the development of application servers, called containers in its vernacular. J2EE rel="nofollow" provides API resources to manage communications, threading, transactions, and resources. The cajo framework is not based on a client/server architecture perspective, it is more generic than that. It provides a clean foundation on which separate Virtual Machines can offer up, and use, functionality as objects, as simply as it does local ones. It does not have the enterprise management focus of J2EE?. | | | | |
< < | EJB: Much closer to the design intent of the cajo framework, yet still vastly larger in scope. EJB is a server-side component architecture, similarly cajo is a component architecture but with an object-to-object interaction focus. EJB requires a J2EE? container environment in which to operate, cajo has no requirements for any special frameworks, it even runs on J2ME?. EJB has specialized classifications of components, broadly categorized as entity, session, and message driven beans. In the cajo framework objects are simply objects, their scope and purpose are application specific, no differently than for local objects. | > > | EJB: Much closer to the design intent of the cajo framework, yet still vastly larger in scope. EJB rel="nofollow" is a server-side component architecture, similarly cajo is a component architecture but with an object-to-object interaction focus. EJB requires a J2EE? container environment in which to operate, cajo has no requirements for any special frameworks, it even runs on J2ME?. EJB has specialized classifications of components, broadly categorized as entity, session, and message driven beans. In the cajo framework objects are simply objects, their scope and purpose are application specific, no differently than for local objects. | | | | |
< < | Jini: It might be called the inspiration and motivation for the creation of the cajo framework. They both are frameworks to allow spontaneous internetworking of objects, which can easily adapt to change and nodal failure. Jini imposes significantly more architectural structure on its objects, whereas cajo is entirely freeform. This causes the Jini framework to be considerably larger than cajo. The largest impetus for the creation of the cajo project, has also been the largest stumbling-block for the adoption of Jini: The Jini Technology Specific Attachment to the SCSL, aka the JTSA. An extremely restrictive license, in particular, Section IV, subsection D; it legally prohibits open source Jini projects from use outside the research community, and provides no option for use in free software projects. In contrast, the cajo project is freely licensed under the GNU LGPL, everybody can use it. | > > | JMS: Is another technology included in the J2EE? platform. JMS rel="nofollow" focus is on messaging between objects. Since cajo allows remote objects to appear local, it is used far more richly than just for messaging. However, JMS defines standard protocols, thereby allowing JMS compliant EJB objects from various vendors standard means of communicating about standard transactions. | | | | |
< < | JavaSpaces: | > > | Jini: It might be called the inspiration and motivation for the creation of the cajo framework. They both are frameworks to allow spontaneous internetworking of objects, which can easily adapt to change and nodal failure. Jini rel="nofollow" imposes significantly more architectural structure on its objects, whereas cajo is entirely freeform. This causes the Jini framework to be considerably larger than cajo. The largest impetus for the creation of the cajo project, has also been the largest stumbling-block for the adoption of Jini: The Jini Technology Specific Attachment to the SCSL, aka the JTSA. An extremely restrictive license, in particular, Section IV, subsection D; it legally prohibits open source Jini projects from use outside the research community, and provides no option for use in free software projects. In contrast, the cajo project is freely licensed under the GNU LGPL, everybody can use it. | | | | |
< < | JMS: | > > | JavaSpaces: A Jini service for collaboration between resources. It is often thought of as difficult rel="nofollow" to set up and use, as it requires many simultaneously operating support applications, cajo has none of this overhead. In the cajo framework, the analog to this functionality is provided by the far more generic and spontaneous Multicast rel="nofollow" class. Both technologies allow objects to discover each other independently; cajo uses UDP to provide this dynamically, while JavaSpaces rel="nofollow" uses a service lookup registry over TCP, to provide this functionality statically. JavaSpaces takes a more client/server approach, where clients make use of a server to obtain leases on services, through a central registry. The cajo methodology distinguishes functional groups via UDP groups, which are completely decentralized, and purely application specific. Ultimately any use of JavaSpaces is also subject to the terms of the JTSA license. | | | | |
< < | Agent Based: | > > | Agent Based: Frameworks such as aglets rel="nofollow" involve sending specially constructed, configured, and well known objects to agent servers. Here these agent objects gather application specific information of interest to the sender, and return it. This is an interesting technology, and while very easily implemented using cajo, it is fundamentally outside the project scope. The cajo framework does not dictate any application architecture, it is a drop-in technology. All agent based systems are designed from scratch as such. | | | |
| |
| META TOPICPARENT | name="WebHome" |
-- JohnCatherino - 09 Nov 2004 | | | Security: There are many facets to security. For server reliability, hosting of proxy objects invites the possibility of a denial of service attack. A proxy object could require more resources than a host could provide, potentially hobbling the Virtual Machine. Security in communication however, can be provided in several ways. The communication can be done over SSL, but the overhead must be taken into consideration. There is however at least one way rel="nofollow" to encrypt sensitive objects, both individually, and separately. This can be both significantly faster, and even more secure. | |
< < | Comparisons: | > > | Comparisons: | | | | |
< < | J2EE: | > > | J2EE: A vastly larger and far more comprehensive framework for the development of application servers, called containers in its vernacular. It provides API resources to manage communications, threading, transactions, and resources. The cajo framework is not based on a client/server architecture perspective, it is more generic than that. It provides a clean foundation on which separate Virtual Machines can offer up, and use, functionality as objects, as simply as it does local ones. It does not have the enterprise management focus of J2EE?. | | | | |
< < | EJB: | > > | EJB: Much closer to the design intent of the cajo framework, yet still vastly larger in scope. EJB is a server-side component architecture, similarly cajo is a component architecture but with an object-to-object interaction focus. EJB requires a J2EE? container environment in which to operate, cajo has no requirements for any special frameworks, it even runs on J2ME?. EJB has specialized classifications of components, broadly categorized as entity, session, and message driven beans. In the cajo framework objects are simply objects, their scope and purpose are application specific, no differently than for local objects. | | | | |
< < | Jini: | > > | Jini: It might be called the inspiration and motivation for the creation of the cajo framework. They both are frameworks to allow spontaneous internetworking of objects, which can easily adapt to change and nodal failure. Jini imposes significantly more architectural structure on its objects, whereas cajo is entirely freeform. This causes the Jini framework to be considerably larger than cajo. The largest impetus for the creation of the cajo project, has also been the largest stumbling-block for the adoption of Jini: The Jini Technology Specific Attachment to the SCSL, aka the JTSA. An extremely restrictive license, in particular, Section IV, subsection D; it legally prohibits open source Jini projects from use outside the research community, and provides no option for use in free software projects. In contrast, the cajo project is freely licensed under the GNU LGPL, everybody can use it. | | | JavaSpaces: |
| |
| META TOPICPARENT | name="WebHome" |
| |
< < | | | | -- JohnCatherino - 09 Nov 2004
Welcome! | |
< < | This is the official wiki of the rel="nofollow" cajo project.
Serving as a giant global chalkboard; here all community members can feel free to post ideas, suggestions, comments, questions, and tips. | > > | This is the official wiki of the rel="nofollow" cajo project. Serving as a giant global chalkboard; here all community members can feel free to post ideas, suggestions, comments, questions, and tips. I will start by hashing out a few general topics; please feel free to improve them, or to add a few of your own. | | | | |
< < | I will start by hashing out a few general topics; please feel free to add a few of your own. | > > | If you are new to using a wiki, you might want to visit visit the welcome page, otherwise you can just jump right in! There is after all a preview button, before you commit! | | | | |
< < | Priorities: | > > | Priorities: The most important consideration in the design of the framework is that is must work for all Java runtime environments, 1.2 and higher. This means, as tempting as some of the new features may be, there is simply too large an installed base to make it practical. That said, there has also been no really cool feature that we could not successfully recreate, using plain-old Java2. However, this does not mean that your applications are in any way restricted. For example, while all devices from mobile phones to desktop workstations can work together, all the latest and greatest features, like Swing for example, can be used, as long as the receiving devices support them. | | | | |
< < | Features: | > > | Features: One of the most important features of the framework is that applications do not have to be structured around it. This is quite unique amongst distributed frameworks. This makes it extremely to incorporate the framework into large existing applications. As we like to say; you don't design your applications around cajo, it simply drops-in! Straightforward object oriented design is all that is required. | | | | |
< < | Limitations: | > > | Limitations: Being RMI based, cajo only works between Java applications. For some applications this can entail a significant porting effort. This is offset however, by the magic of mobile code. Being able to send an object to another Virtual Machine, including its class definitions, is a wondrously powerful feature that can only be provided by using Java. | | | | |
< < | Performance: | > > | Performance: Since cajo is a small efficient layer built atop RMI, its performance is no better, or worse, than other Java technologies like Jini or EJB. While it entails a little more overhead than using basic sockets, the power and transparency the protocol provides are well worth the cost, and would ultimately have to be recreated manually to provide this functionality. | | | | |
< < | Persistence: | > > | Persistence: The primary storage mechanism used in the cajo project is the zedmob. It is a contraction of the words Zipped and Marshalled Object. It allows remote references, and even remotely loaded objects to be saved to disc, or passed to other remote Virtual Machines. A zedmob is persistent in that its existence is entirely independent of that of the Virtual Machine using it. | | | | |
< < | Scalability: | > > | Scalability: The scalability of the framework comes in two forms; sometimes called static, and dynamic. Static scalability means a single application can simply migrate its objects between multiple Virtual Machines, to accomodate increased load. Dynamic scalability means objects can join together to create emergent functionality. This new technology is very exciting, and still in its infancy. | | | | |
< < | Size:
Security: | > > | Security: There are many facets to security. For server reliability, hosting of proxy objects invites the possibility of a denial of service attack. A proxy object could require more resources than a host could provide, potentially hobbling the Virtual Machine. Security in communication however, can be provided in several ways. The communication can be done over SSL, but the overhead must be taken into consideration. There is however at least one way rel="nofollow" to encrypt sensitive objects, both individually, and separately. This can be both significantly faster, and even more secure. | | | Comparisons: | | | | |
< < | If you are new to using a wiki, you might want to visit visit the welcome page, otherwise you can just jump right in! There is after all a preview button, before you commit! |
| |
| META TOPICPARENT | name="WebHome" |
| |
< < | | | | -- JohnCatherino - 09 Nov 2004
Welcome! | | | Limitations: | |
> > | Performance:
Persistence:
Scalability:
Size: | | | Security:
Comparisons: | | | Jini: | |
> > | JavaSpaces:
JMS:
Agent Based: | | |
|
|
> > |
| META TOPICPARENT | name="WebHome" |
-- JohnCatherino - 09 Nov 2004
Welcome!
This is the official wiki of the rel="nofollow" cajo project.
Serving as a giant global chalkboard; here all community members can feel free to post ideas, suggestions, comments, questions, and tips.
I will start by hashing out a few general topics; please feel free to add a few of your own.
- Priorities:
- Features:
- Limitations:
- Security:
- Comparisons:
If you are new to using a wiki, you might want to visit visit the welcome page, otherwise you can just jump right in! There is after all a preview button, before you commit! |
|