From that point of view, what terminology emphasizes the specific
problems that are solved by the 299 spec? "injectable type" or
"contextual type" make sense to me, but perhaps there is something
better. (It sounds like Scott would like something that emphasises
the configurability.)
I do think the configuration and binding/locator capabilities are the
heart of the spec, but I'm mostly agnostic on the naming.
Some of the best names are arbitrary, like "swing", "bean",
"java",
"seam", etc. because in a year or two, everyone will treat the name as
arbitrary anyway. I do think "bean" is overused, so it would be nice
to pick something else.
I like Emmanuel's "weaver" suggestion. It's a nice image about what
the spec's trying to do without bogging down by trying to get too
literal.
-- Scott
Sent from my iPhone
On Dec 24, 2008, at 9:04 AM, Scott Ferguson <ferg(a)caucho.com> wrote:
>
> On Dec 23, 2008, at 10:31 AM, Michael Keith wrote:
>
>>
>> Scott,
>>
>> I tried to explain why the name of this spec was problematic. I
>> provided
>> some background that the underlying issue that an additional
>> component model
>> layer was being introduced, and that we needed to try to resolve
>> that problem.
>
> We all want a standard JavaEE component model.
>
> 1) Is EJB the current JavaEE component model? No. Sun presented
> EJB to the Java community and it was rejected. Further versions
> were also rejected. In their anger and frustration, independent
> developers created their own, successful component model named
> Spring. Spring is the current de facto component model, not EJB.
>
> 2) Should EJB be offered yet again as the JavaEE component model?
> I presented abstract criteria for evaluating component models, and
> the new EJB draft falls short on the most critical requirements:
> configuration and binding. So, no, EJB should not be offered as
> the JavaEE component model.
>
> 3) Will Sun offer EJB again as the JavaEE component model? That's
> a bureaucratic question. Based on past history, yes, Sun will
> offer EJB again as the component model regardless of technical
> merits or public demand.
>
>> What you came back with was a bunch of reasons why the EJB
>> component model was inferior
>> to the web beans component model, and that EJB is essentially a
>> failure and "not a complete,
>> modern component model" (which I am tempted to debate with you
>> about, but have resisted
>> because it is really entirely beside the point).
>
> If we are to have a standard JavaEE component model, I'd personally
> like it to be the best one possible. That's not beside the point.
> That is the point.
>
> If you honestly believe EJB's configuration, binding, and packaging
> is superior to WebBeans as a component model, please do give your
> reasons. We all want the best model possible.
>
> -- Scott
>
>>
>>
>>>> If EJB has not reached this state then it is a failing of EJB,
>>>
>>> I'd think 10 years of failing would give a rather big hint.
>>
>> You obviously think that EJB is in a failed state as a component
>> model so I
>> am just wondering why you think web bean components should replace
>> EJB components
>> in "modern" applications, anyway? What right does web beans have
>> to become the
>> new "modern" component model? Because it's newer? Because it's
>> better?
>>
>>> -----Original Message-----
>>> From: Scott Ferguson [mailto:ferg@caucho.com]
>>> Sent: Monday, December 22, 2008 10:21 PM
>>> To: Michael Keith
>>> Cc: Gavin King; Java Community Process JSR #299 Expert List;
>>> WebBeans;
>>> Matt Drees; Jim Knutson
>>> Subject: Re: Terminology
>>>
>>>
>>>
>>> On Dec 22, 2008, at 10:05 AM, Michael Keith wrote:
>>>
>>>> Again, allow me to clarify some of the issues by starting a
>>>> discussion that is at the heart
>>>> of this concern. Hopefully this will help people understand more
>>>> about where we are coming from.
>>>>
>>>> One of the biggest concerns around JSR 299 is that it promotes yet
>>>> another component
>>>> model in addition to EJB. This is *highly* undesirable, in fact it
>>>> is a very dangerous
>>>> thing for the platform. A lot of time and effort has been put into
>>>> making EJB a
>>>> competitive component model so that it can stack up to any other
>>>> component model
>>>> out there.
>>>
>>> EJB is not a complete, modern component model. I'm surprised
>>> anyone
>>> is arguing that it is.
>>>
>>> A modern component model includes the following orthogonal
>>> capabilities:
>>> 1) configuration, i.e. specializing components with site-specific
>>> values
>>> 2) component location and binding (@BindingType, JNDI)
>>> 3) lifecycle (servlet-style, component, pooled (stateless), proxy
>>> (stateful), etc)
>>> 4) aspects (including @Transaction, @Asynchronous, as well as
>>> decorators)
>>> 5) packaging
>>>
>>> EJB only attempts to solve #3 and #4, and even #3 is incomplete for
>>> the most basic lifecycle model. #5 for EJB is extremely limited.
>>>
>>> WebBeans concentrates on #1, #2, #5 and implements #4 in a
>>> complementary fashion to EJB. The lifecycle for WebBeans is
>>> a single,
>>> simple model, which is missing from EJB.
>>>
>>> 1) configuration - specializing the components with runtime values
>>>
>>> EJB - none, really. There's still no effective mechanism to
>>> configure an individual bean.
>>>
>>> WebBeans - the cleanest and most powerful configuration yet
>>> designed. (Including the potential to support any JavaEE spec as a
>>> bean configuration, if certain changes are made.)
>>>
>>> 2) component location and binding
>>>
>>> EJB - JNDI, plus the ad-hoc JNDI-based tags @EJB,
>>> @Resource, etc.
>>> This is obsolete by two generations. Finally, in 3.1 EJB is
>>> adopting
>>> naming conventions. Yay.
>>>
>>> WebBeans - delightful type-based @BindingType model, benefiting
>>> from years of DI experiments.
>>>
>>> 3) lifecycle (this is a partition of the different styles.
>>> Note that
>>> there is no overlap between EJB and WebBeans)
>>>
>>> A) servlet-style, multithreaded, "pojo". Basically, the only
>>> lifecycle WebBeans supports. This model is extremely powerful and
>>> successful in high traffic sites, as any servlet demonstrates.
>>> B) EJB stateless: proxy, pooled instances. Also servlet
>>> SingleThreadedModel. (Note that SingleThreadedModel has been
>>> deprecated for years.)
>>> C) EJB stateful: proxy, single instance. Personally, I
>>> think this
>>> is a conceptually weird model, whose only value is the XA
>>> Synchronization interface.
>>> D) EJB message driven beans: pooled instances again, but for a
>>> specific use.
>>> E) Singleton. Basically a single-threaded, locked object.
>>> F) Entity - for historical interest
>>>
>>> 4) aspects - *note* all aspects can theoretically apply to either
>>> WebBeans or EJB. The only restrictions are bureaucratic
>>>
>>> A) Interceptor - WebBeans and EJB
>>> B) Decorator - WebBeans
>>> C) Transaction - EJB, but possible for WebBeans
>>> D) security (@RunAs, etc) - EJB, but possible for WebBeans
>>> E) asyncronous, EJB, but possible for WebBeans
>>> F) @Schedule, EJB but possible for WebBeans
>>> G) @Lock, EJB but possible for WebBeans
>>>
>>> 5) packaging
>>>
>>> WebBeans - any .jar or classes
>>> EJB - ear or war
>>>
>>> From the above capabilities, the strength of the EJB spec is in its
>>> predefined aspects. These are good. The EJB component lifecycles
>>> have specialized uses, but the most simple, common and important is
>>> missing, presumably left to the WebBeans spec.
>>>
>>> The weaknesses of EJB are in its configuration,
>>> location/binding, and
>>> packaging (and missing component lifecycle), but these are WebBeans
>>> strengths! So the two specs complement each other, they don't
>>> directly complete.
>>>
>>>> If EJB has not reached this state then it is a failing of EJB,
>>>
>>> I'd think 10 years of failing would give a rather big hint.
>>>
>>> -- Scott
>>>> and means
>>>> that EJB should be fixed and/or modified so that it provides
>>>> whatever kind of component
>>>> that people need or want. It does not warrant adding yet
>>> another way
>>>> to develop business
>>>> logic components and then adding the functionality that may
>>> already
>>>> be, or should be, in
>>>> the existing component model.
>>>>
>>>> So, with this issue as a backdrop, I think there are two
>>> things that
>>>> this spec can do to
>>>> ensure that the platform is not fractured or schitzophrenic in
>>>> certain areas:
>>>>
>>>> 1) We have to ensure that this spec makes use of existing
>>> component
>>>> models, modifying the
>>>> existing component model when necessary, and adding new
>>> features to
>>>> the model when required.
>>>> Note that this correlates exactly with what this spec
>>> originally had
>>>> as its mandate -- to
>>>> integrate existing JSF and EJB components.
>>>>
>>>> 2) Ensure that people understand what this spec is, what it is
>>>> offering, and what problems it
>>>> is trying to solve. One thing that has become abundantly clear is
>>>> that when people read the
>>>> term "web beans" they think of it as being a second/third type
of
>>>> enterprise bean. This is only
>>>> natural, but can be easily avoided by changing the name to be more
>>>> in line with the value
>>>> that this spec has, and the domain in which it resides.
>>>>
>>>> So, we are really talking about more than just a name
>>> change, but a
>>>> name change is certainly
>>>> a good start!
>>>>
>>>>> -----Original Message-----
>>>>> From: Gavin King [mailto:gavin@hibernate.org]
>>>>> Sent: Sunday, December 21, 2008 2:32 AM
>>>>> To: Java Community Process JSR #299 Expert List; WebBeans; Matt
>>>>> Drees;
>>>>> Scott Ferguson; Michael Keith; Jim Knutson
>>>>> Subject: Terminology
>>>>>
>>>>>
>>>>> Oracle have proposed that we remove the term "Web Bean"
from the
>>>>> specification. I'm therefore searching for alternative
>>>>> terminology.
>>>>> Please let me know your opinions and suggestions.
>>>>>
>>>>> Here's one possibility:
>>>>>
>>>>> Web Bean -> injectable type
>>>>> simple Web Bean -> injectable Java class
>>>>> enterprise Web Bean -> injectable EJB
>>>>>
>>>>> Or:
>>>>>
>>>>> Web Bean -> contextual type
>>>>> simple Web Bean -> contextual Java class
>>>>> enterprise Web Bean -> contextual EJB
>>>>>
>>>>> Note that "contextual type" already means something in the
>>>>> current
>>>>> spec, but that thing should be easy enough to rename.
>>>>>
>>>>> --
>>>>> Gavin King
>>>>> gavin.king(a)gmail.com
>>>>>
http://in.relation.to/Bloggers/Gavin
>>>>>
http://hibernate.org
>>>>>
http://seamframework.org
>>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>