Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • Developers
    • Faster Development Cycle
    • Better Component Isolation
      • reduce the size of the shared space
      • reduce number of binding dependencies
      • Separation between internal beans and exported service implementations.
      • able to use multiple versions of jars without conflicts
    • A Better Provider or Optional Mechanism
    • Reducing Code maintenance Costs
    • Reducing reliance on non mainstream technologies and techniques
      • Standard ClassLoader Environment

Faster Development Lifecycle

...

We want to reduce the complexity of Sakai and make it easier to develop for Sakai by adopting mainstream technologies that even the most basic Java programmer could be expected to understand. J2EE webapps are an example of this approach. Most Java programmers understand what a webapp is. Where we have a reliance of a non mainstream 3rd party library that impacts the way in which developers work, we should try and reduce its scope and bindings. Where we have an internal structure that is hard to understand or causes developers problems, we take considerably more time to explain it whilst adapting it an making it simpler to engage with.

Standard ClassLoader environment

Many modern, and particularly Spring-based libraries, cannot function correctly in Sakai's current ClassLoader environment, since in component code the context ClassLoader is incorrectly set to the most recent webapp which serviced a request. The concept of the context ClassLoader was introduced in Java 2, and an increasing number of libraries are relying on it. With an incorrect context ClassLoader, many packages, such as Alfresco, or ActiveMQ cannot be used without a good deal of custom coding, in the case of Alfreso a prohibitive amount. At a lower level, the incorrect ClassLoader causes unexpected effects with many Spring-based techniques (resource loading, creating proxies etc.) which steepen the learning curve for developers who are familiar with Spring but not Sakai. Correcting the context ClassLoader is one of the functions that could be achieved by a proxy-based design (see below).

Possible Component Manager Layouts

...