Some views from a programmer [1/3: requirements]
Daniel Latrémolière
daniel.latremoliere at gmail.com
Thu Sep 17 07:58:51 EDT 2009
I am sorry for sending you another mail [really shorter than preceding],
but I promise to stop after this mail.
>
> Simplistically (time dimension omitted), I will tell modularity is
> allowing better understanding and development of complex software: I
> think this can mostly be currently achieved by good packages naming
> and JAR packaging. The only new feature I can found useful for me is a
> new access right "module" for all types, methods, fields to simplify
> and enforce API notion (hiding items not in API).
>
I have completely forgotten the small problem of uncoupling each module
from others at execution time (currently realized by service providing
and life cycle events received by interfaces for module manager). I
think it will be a smaller problem than preceding e-mails, because this
is the classical problem of "Inversion of Control" (between module and
application manager) and is already partially solved by incompatible
multiple JSR standards (like, for example, JSR 330 "@Inject" for
dependency injection, JSR 250 @Resource, etc.).
To be simple, an inversion of control requirements are:
* Injection of services (like by example a Logger instance) in
constructors, fields, parameters tagged with an annotation of the
module classes. This will occur at given times defined by the
given scope of the annotation and definition of this scope in the
application manager.
* Allow the module to provide objects (like by example services
implementations) to the application manager from returned results
of methods tagged with an annotation giving possible states of
calling.
Module starting, stopping are only module-specific scopes defining
module times (like some others largely used scopes: HTTP request life
cycle, HTTP session life cycle, etc.), then does not need big changes
(only a newly defined scope).
NB: Please note that JSR 250 already includes annotations for declaring
roles required/allowed for calling a method, giving probably an
interesting idea for future module evolution by defining roles existing
in a module and allowing one module to use another module but only with
a specified (by application manager) role (giving more secure complex
applications).
End of my e-mail series.
Thank you for reading my bad english,
Daniel Latrémolière.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cs.oswego.edu/pipermail/jsr294-modularity-observer/attachments/20090917/7b9e415c/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: daniel_latremoliere.vcf
Type: text/x-vcard
Size: 199 bytes
Desc: not available
URL: <http://cs.oswego.edu/pipermail/jsr294-modularity-observer/attachments/20090917/7b9e415c/attachment.vcf>
More information about the jsr294-modularity-observer
mailing list