Hi everyone, I like Ondro's, Bernd Müller, Ralph Soika,Ondro Mihályi comment EJB is not a bad spec. Whatever the new spec like @Service may be, It will be important to maintain ejb features such as: remote calls between ejbs (with efficient binary protocols), keeping transactions DISTRIBUTED, between remote calls between ejbs, security context distribution.
Perhaps it would be desirable to retain the functionality that if an ejb is calling a method of another ejb the AS, understands that if the two ejbs are on the same instance of jvm the call will be local rather than remote.
By comparison, spring boot or other frameworks like helidon and quarkus do not have these features, for example in spring boot the giant Alibaba/Alipay have written a framework for rpc Dubbo (https://dubbo.apache.org/en/) for satisfy remote calls with (efficient) binary protocols between services and also wrote the seata(https://seata.apache.org/) framework for distributed transactions.
This shows that in complex/enterprise contexts rmi/rcp calls between components(like EJB @Remote Stateless/new @Service) and distributed transactions between them ARE IMPORTANT.
Lastly, but still important, Google has written a new framework Service weaver (https://serviceweaver.dev/blog/vision.html) which practically refers to the EJB component model of the first J2EE specifications.
Finally I say, ok to change the name of a specification, but let's not lose these features which, as we see in complex and enterprise contexts, are fundamental. Furthermore, it would be important that in future talks on Jakarta ee we start talking about distributed transactions between distributed applications again and show how Jakarta ee applications solve these problems.
What do you think? Greetings everyone
Angelo Rubini
Da: jakarta.ee-spec <jakarta.ee-spec-bounces@xxxxxxxxxxx> per conto di werner.keil--- via jakarta.ee-spec <jakarta.ee-spec@xxxxxxxxxxx>
Inviato: martedì 29 ottobre 2024 23:01
A: Jakarta specification discussions <jakarta.ee-spec@xxxxxxxxxxx>; jakartaee-platform developer discussions <jakartaee-platform-dev@xxxxxxxxxxx>
Cc: werner.keil@xxxxxxx <werner.keil@xxxxxxx>; Jakarta EE community discussions <jakarta.ee-community@xxxxxxxxxxx>
Oggetto: Re: [jakarta.ee-spec] Defining Jakarta EE 12 Scope in Program Plan
Lots of duplicate messages, mostly due to being subscribed to multiple lists I guess.
I agree, that an AI spec or some kind of "glue" is much more suitable for MicroProfile, where similar needs like OpenAPI, GraphQL, etc. found their home.
From: jakarta.ee-spec <jakarta.ee-spec-bounces@xxxxxxxxxxx> on behalf of Reza Rahman via jakarta.ee-spec <jakarta.ee-spec@xxxxxxxxxxx>
Sent: Tuesday, October 29, 2024 8:14 PM
To: Jakarta specification discussions <jakarta.ee-spec@xxxxxxxxxxx>; jakartaee-platform developer discussions <jakartaee-platform-dev@xxxxxxxxxxx>
Cc: Reza Rahman <reza_rahman@xxxxxxxx>; Luqman Saeed <sinaisix@xxxxxxxxx>; Jakarta EE community discussions <jakarta.ee-community@xxxxxxxxxxx>; JakartaEE Spec Project Leadership discussions <jakartaee-spec-project-leads@xxxxxxxxxxx>
Subject: Re: [jakarta.ee-spec] Defining Jakarta EE 12 Scope in Program Plan
These are the reasons Microsoft would vote -1 on a Jakarta AI/LLM specification at the current time:
* The entire area is still very much fast moving shifting sands. It's just not ready for any kind of "one specification to rule them all" effort. Any such effort is bound to get it wrong - perhaps completely wrong.
* This is an area that requires extremely deep domain expertise that most Jakarta EE vendors simply do not have. The people that have the correct domain expertise are really not ready to come together in any standards body.
* To the extent that "one API to rule them all" can even work in this space, LangChain and LangChain4j already have significant traction. By virtue of being just an open source project in an emerging space that can move fast, not worry about quality/stability
too much, etc it will always have a competitive advantage. Any competing Jakarta EE specification is unlikely to gain relative credibility or adoption against LangChain4j, so such an effort has a high probability of doing more harm than good.
What Microsoft believes to be a prudent move is for Jakarta EE vendors to collectively ensure that LangChain4j includes a robust CDI extension that can work with both Jakarta EE and MicroProfile. We should all promote this extension. This will also earn
Jakarta EE vendors some badly needed goodwill with open source projects. Indeed longer term, Jakarta EE should look for ways to officially promote open source projects that embrace CDI and Jakarta EE.
On 10/29/2024 5:55 AM, Luqman Saeed via jakarta.ee-community wrote:
I agree. I think we need to clarify the problem with EJB. Is it technical, as in there's a lot of baggage/fat that simply cannot be shed without completely killing the tech? Especially from an implementation perspective?
Or is it more a problem of perception, where a whole generation of developers have grown up hearing nothing but horror stories from the days of entity beans and thus, would want to steer clear of EJB and consequently, the platform itself?
Personally I lean towards "spring cleaning" the internals of EJBs if it's a problem of the former and leaving the technology alone.
Why? Because it just works. A single annotation does a lot of heavy lifting on my behalf. And that is cool. It's also easy to teach newcomers.
From a business perspective, I'd ask, which would add more weight to portraying the platform as modernising?
- A test spec/attempt to standardize consuming AI on the platform?
- Or killing EJBs?
If the goal is to portray the platform as alive and modernising, I think nothing is more a testament than an incubator spec that taps into arguably the most hyped tech of our time?
We may have different views of the whole AI stuff, but if Spring already has Spring AI, Quarkus has native integration with LangChaing4J, where's Jakarta?
So though EJB may be a polarising tech depending on who you speak with, I think if the goal of EE 12 is to show that it's still a technology that is evolving with the times, then our target lies elsewhere.
Not necessarily EJB. At least not this time.
I also think that until now, EJBs are not fully replacable with other Jakarta EE constructs. And thus we shouldn’t try to hide EJBs from developers learning Jakarta EE. In fact, teaching developers about EJBs simplifies things a lot. With just
a single @Stateless or @Songleton annotation they get transactions automatically, can easily define timers, concurrency is handled (no state should be in stateless, singletons are syncrhonized).
Yes, it’s possible to rewrite EJBs with other constructs but the resulting code is much more verbose and easy to get wrong - timers in Concurrency require to call a method to trigger them, running a method on startup is more verbose compared
to @Startup on a singleton EJB, ApplicationScoped CDI beans are not thread safe unlike Singleton EJBs, @RolesAllowed only works on EJBs and not CDI beans, etc.
Jakarta EE still needs improvements to fully replace EJB. And even then it would be good to have a single CDI annotation to enable all the features of EJB in a CDI bean. Until then, it’s better to teach EJBs and then explain how to use the
new concepts in Jakarta EE to avoid EJBs for advanced developers.
Ondro
Hi all,
I completely agree with that. EJBs are not bad per se and should not be abandoned.
Everyone is free to use them or not.
Best regards,
Bernd
Am 28.10.24 um 14:54 schrieb Ralph Soika via jakarta.ee-community:
> Hello,
>
> I became aware of this discussion through the topic "EJB -> CDI migration" and would like to briefly
> share my thoughts about it.
> My fear here is to "ban" EJBs as something outdated, complicated and unnecessary. But is that right?
> I myself run with imixs.org <https://www.imixs.org> a very large Jakarta EE project. And
my opinion
> is that you should always implement the DataAccessLayer as also complex ProcessingServices in a
> stateless EJB in order to make use of the transaction capability.
> I do know that you can also use CDI for data access. But is it the same?
>
> For example in my own project (a BPMN workflow engine) the DataAccess Service as also the Engine
> itself is implemented as a stateless EJB.
> A project that is using the library just need to inject the WorkflowEngine. The user does not have
> to think about transactions or EJBs at this moment. The app developer can now extend the engine
> behavior by implementing so called 'Plug-Ins' as simple CDI beans. Such a CDI bean is a kind of
> adapter class that can for example react on specific CDI Events in the processing life-cycle. And of
> course the developer can again inject the DataService form the Workflow Engine to create new data.
>
> The point is that if something goes totally wrong, the default transaction manager takes care about
> the rollback over all layers.
>
> And this all comes for free just because of using the stateless local EJB pattern. For the developer
> there is no need to think about EJBs at all.
>
> I may be wrong here, but I would always advise a developer to implement the data access layer via
> EJBs to keep the rest of the application as lean as possible.
> Therefore, in my opinion, EJBs play an important role. A tutorial should not hide its concepts.
>
> Best regards
>
> Ralph
>
> On 28.10.24 14:21, Reza Rahman via jakarta.ee-community wrote:
>> I think the Tutorial refactoring work could easily be tagged “good first issue” and “help wanted”.
>> We have a shockingly low number of those across EE4J projects.
>> ----------------------------------------------------------------------------------------------------
>> *From:* Kito Mann
<kito.mann@xxxxxxxxxxx>
>> *Sent:* Sunday, October 27, 2024 11:50 PM
>> *To:*
jakarta.ee-spec@xxxxxxxxxxx <jakarta.ee-spec@xxxxxxxxxxx>; Jakarta EE community discussions
>> <jakarta.ee-community@xxxxxxxxxxx>;
jakarta.ee-marketing@xxxxxxxxxxx <jakarta.ee-
>>
marketing@xxxxxxxxxxx>; Reza Rahman <reza_rahman@xxxxxxxx>
>> *Cc:* Jakarta EE Ambassadors <jakartaee-ambassadors@xxxxxxxxxxxxxxxx>;
juneau001@xxxxxxxxx
>> <juneau001@xxxxxxxxx>; Kito Mann <kito.mann@xxxxxxxxxx>
>> *Subject:* Re: EJB -> CDI migration (was Re: Defining Jakarta EE 12 Scope in Program Plan)
>> I love all three of these ideas:
>>
>> 1. EJB -> CDI Migration Guide
>> 2. New EJB -> CDI Migration talk
>> 3. Updating the Jakarta EE Tutorial to remove EJB when possible
>>
>> (3) is non-trivial since a lot of work needs to be done upgrading/rewriting the examples in
>> general, but that doesn’t mean I can’t at least break that work down into the issue tracker. Also,
>> the intro (which I rewrote) specifically does not mention EJB.
>>
>> I’d like to add another: Writing an OpenRewrite for migrating from EJB->CDI.
>>
>> ___
>>
>> Kito D. Mann <https://kitomann.com> | @kito99@mastodon.social <https://mastodon.social/@kito99>|
>> LinkedIn <https://www.linkedin.com/in/kitomann/>
>> Java Champion | Google Developer Expert Alumni
>> Expert consulting and training: Cloud architecture and modernization, Java/Jakarta EE, Web
>> Components, Angular, Mobile Web
>> Virtua, Inc. | virtua.tech <http://virtua.tech>
>> +1 203-998-0403
>>
>> * Enterprise development, front and back. Listen to Stackd Podcast <http://stackdpodcast.com/>.
>> * Speak at conferences? Check out SpeakerTrax <https://speakertrax.com>.
>> On Oct 27, 2024 at 2:46 PM -0400, Reza Rahman <reza_rahman@xxxxxxxx>, wrote:
>>
>> I am moving comments on my Jakarta EE 12 Google Doc
>> (https://docs.google.com/document/d/1U2qEqF9K969t5b3YuX4cwex5LJPvF3bt1w27cdKNpDM/edit?usp=sharing)
>> to Jakarta EE mailing lists when possible. The problem with Google Docs
>> comments is that they do not scale very well, aren't very readable on
>> smaller devices, and do not archive well. I will do so one email per
>> comment. The person commenting is copied.
>>
>> Context: Why does replacing EJB matter?
>>
>> Josh Juneau (Community): Are there any comprehensive tutorials on how to
>> utilize CDI rather than EJB for querying entities? It seems like these
>> tutorials need to be made front and center in an effort to help steer
>> people to CDI and to show that EJB is no longer needed in many cases.
>>
>> Reza Rahman (Microsoft): Good point. As of Jakarta EE 11, it is indeed
>> possible to just use CDI now for basic CRUD in a transactional and
>> thread safe manner with Jakarta Persistence. The same for EJB
>> @Asynchronous and @Schedule. At the bare minimum, this is worthy of an
>> Eclipse Foundation newsletter article and/or JakartaOne talk. The
>> material could cover where EJB is not needed any more and where it is
>> still needed. The title could be something attention grabbing like -
>> "EJB is Dead, Long-Live CDI and Jakarta EE". We could also ensure a
>> revised Jakarta EE 11 Tutorial can avoid using EJB when possible. Maybe
>> Kito could comment on this? Additionally, the Marketing Committee has
>> been sponsoring some guides. Could we consider already starting an EJB
>> migration guide?
>>
>> On 10/22/2024 5:30 AM, Reza Rahman wrote:
>>
>> Hi folks,
>>
>> I would like to see if we can define clear, compelling, and specific
>> scope for Jakarta EE 12 as part of the Steering Committee Program
>> Plan:
>> https://docs.google.com/presentation/d/1xUNDHMP_qTHH1wA3m0yCmWVf_sHp41Qd7Opq3FhgINs/edit?
>> usp=sharing.
>> I believe this is of critical importance at this juncture. If I did
>> not think so, I would not bother trying. I have detailed all the
>> rationale here:
>> https://docs.google.com/document/d/1U2qEqF9K969t5b3YuX4cwex5LJPvF3bt1w27cdKNpDM/edit?
>> usp=sharing.
>> For those that recall, something very similar was done for Jakarta EE
>> 11, so this isn't exactly without precedent.
>>
>> I would like to see if this can be done in the following couple of
>> weeks, when the Program Plan is due.
>>
>> Thanks,
>>
>> Reza
>>
>>
>> Reza Rahman
>>
>> Principal Program Manager
>>
>> Java on Azure at Microsoft
>>
>>
reza.rahman@xxxxxxxxxxxxx
>>
>> +1 717 329 8149
>>
>>
>> _______________________________________________
>> jakarta.ee-community mailing list
>>
jakarta.ee-community@xxxxxxxxxxx
>> To unsubscribe from this list, visithttps://www.eclipse.org/mailman/listinfo/jakarta.ee-community
> --
>
> *Imixs Software Solutions GmbH*
> *Web:* www.imixs.com <http://www.imixs.com> *Phone:* +49 (0)89-452136 16
> *Timezone:* Europe/Berlin - CET/CEST
> *Office:* Frei-Otto-Str. 4, 80797 München
> Registergericht: Amtsgericht München, HRB 136045
> Geschäftsführer: Gaby Heinle u. Ralph Soika
>
> *Imixs* is an open source company, read more:
www.imixs.org <http://www.imixs.org>
>
>
> _______________________________________________
> jakarta.ee-community mailing list
>
jakarta.ee-community@xxxxxxxxxxx
> To unsubscribe from this list, visit
https://www.eclipse.org/mailman/listinfo/jakarta.ee-community
--
Prof. Dr. Bernd Müller
Ostfalia
Hochschule für angewandte Wissenschaften
- Hochschule Braunschweig/Wolfenbüttel -
Fakultät Informatik
Salzdahlumer Straße 46/48
38302 Wolfenbüttel
Tel +49 5331 939 31160
Fax +49 5331 939 31004
Web www.ostfalia.de /
www.pdbm.de
_______________________________________________
jakarta.ee-community mailing list
jakarta.ee-community@xxxxxxxxxxx
To unsubscribe from this list, visit
https://www.eclipse.org/mailman/listinfo/jakarta.ee-community
_______________________________________________
jakarta.ee-community mailing list
jakarta.ee-community@xxxxxxxxxxx
To unsubscribe from this list, visit
https://www.eclipse.org/mailman/listinfo/jakarta.ee-community
_______________________________________________
jakarta.ee-community mailing list
jakarta.ee-community@xxxxxxxxxxx
To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/jakarta.ee-community
|