2006/6/21, Kenneth Tam <[EMAIL PROTECTED]>:

I've had a few conversations recently about what kinds of
changes/improvements might make sense for Beehive controls to make
them more accessible and usable in light of all the changes that have
gone on in the Java development world since controls were originally
designed.  Here are some rough thoughts/ideas I've had; I'll probably
start exploring some of these ideas in the coming weeks via
prototyping in a sandbox and post more detailed explanations of what
I'm thinking.

Goal:
Rearchitecture to incorporate support for various contemporary
container and ease-of-development technologies, and strea
mline/modularize feature-set based on developer feedback.

Support strong separation of service provider/consumer concerns
- continue to expect control implementation authors (service
providers) to be more highly skilled Java developers than
consumers.
- focus more on adding value to consumers, less on making it easier
for the provider (plenty of other technologies in t
hat space).
   - controls _usage_ should continue to be highly toolable

Key use case is consumers authoring interface extensions for extensible
controls
- rich support for provider-defined annotation grammars & associated
semantics
- think of controls as making Java dynamic proxies easy &
annotation/metadata driven.
  - focus on resource access / smart proxy problem

De-emphasize nested controls case
- controls no longer positioned as generic logic containers
- just write pojos, use other containers and their features
- limit or refactor eventset support (how important has this been in
actual usage)?



I think that eventSet is important async model. Although the actual usage
may not be high, but it will be higher, especially considering SOA as next
big thing.

Make it easier to use controls from anywhere by reducing/refactoring
container requirements
- remove or refactor dependency on JavaBeans Runtime Containment and
Services Protocol specification (unclear that valu
e of that framework justifies cost/complexity)



Agree on this. Just make it transparent for us, ok?

- consider interop and co-existence with other annotation sets as an
important use case
  - JAX-WS
  - EJB 3
  - JSR-250


Yes, definitely.


- consider replacing compile-time code-gen with runtime bytecode gen
(asm or cglib style)


This is very important IMHO. One should be able to write a control and test
it without waiting code generation. Code generation is not healthy for IDEs
that consistently check for new files. Sometimes it even break the permanent
generation of the underling VM!


- delegate dependency injection/IoC responsibilities; replace
@Control and @Context
  - expect developers to use injection container of their choice
   - Spring
   - EJB3/JSR-250 (@Resource)
  - refactor declarative property configuration (usage of @Property
annotations on fields marked w/ @Control) to make it
optional (just another source of injection)


For dependency  injection, Spring guys are doing a common framework based on
annotation. IMHO, Beehive Control should work closely with Spring guys, add
on value where they can't reach.

 - pluggable lifecycle support (can we replace ResourceContext?)
   - JSR-250 (@PostConstruct, @PreDestroy)

---

Would love to hear some comments/feedback, especially about other
ideas of how controls might be more useful in conjunction with all the
other Java technologies that have proliferated in the past few years.




--
Regards,
Antony Chien

Reply via email to