[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
| Re: [jakartaee-platform-dev] Defining Jakarta EE 12 Scope in Program Plan | 
  
  
    No worries whatsoever. Even the domain experts have trouble
      getting this stuff.
    Part of the exercise here is educating why this isn't just the
      right thing to do in terms of marketability/adoption, but also
      even from an existing user standpoint. This way is far more
      modern, flexible, and powerful, without necessarily any real loss.
      Doubtless there is work to be done in EE 12 to actually make it
      happen.
    
    On 10/29/2024 5:38 PM, Ralph Soika
      wrote:
    
    
      
      Reza and Bauke: Yes, I have now taken a closer look at the
        concepts and understand it now much better. I fully agree now
        with this and I am sorry to have stopped the ongoing discussion.
        But at least I learned today a lot ;-) 
      
      On 29.10.24 21:00, Reza Rahman wrote:
      
      
        
        Ralph: The question for me is, is a Stateless EJB with its
          integrated transactional behavior really replaceable by a CDI
          bean.
        Reza: This is 100% possible using a much better named,
          modernized, built-in CDI Stereotype that vendors can even add
          more functionality to. It's in the write-up and here is the
          basic blueprint: https://speakerdeck.com/reza_rahman/contributors-guide-to-the-jakarta-ee-12-galaxy?slide=26.
          In my opinion, the approach the Spring developers tend to take
          is actually the better one: they explicitly opt in to the
          exact component life-cycle and services they need.
          Alternatively, one could define their own CDI Stereotype with
          the exact things that your application needs - even giving it
          a name you like best. As Bauke has already pointed out, this
          is largely possible even in Jakarta EE 11.
        
        On 10/29/2024 3:33 AM, Ralph Soika
          via jakarta.ee-community wrote:
        
        
          
          I agree with the points from Reza and I think we all know
            well these boring discussions about Spring vs. JakartaEE. As
            a Jakarta EE developer you develop against an API, as a
            Spring developer you develop against a big mud of libraries.
            For me, this is a question about one's own claim to clean
            architecture. We should not continue this discussion here. 
            
            For me, the question that I can't answer myself is, what do
            the EJB container teams actually say about all this? Are
            they frustrated because they see that all their
            functionality can be achieved just as well or even better
            with CDI containers?
            
            Let's sort out the Statefull and Remote EJBs here. The
            question for me is, is a Stateless EJB with its integrated
            transactional behavior really replaceable by a CDI bean?
          And if it's just the 3 letters of name, then let us just
            rename the whole thing to "Caribbean Beans". 
          
          
          
          ===
            Ralph
          
          
          On 28.10.24 23:25, Reza Rahman
            via jakarta.ee-community wrote:
          
          
            
            
              To be honest, I figured there was a high
                probability this debate would be inevitable. I kept it
                deliberately brief in the write up in the hopes that
                this is a subject pretty much all of the stakeholders
                are already well aligned on. Nonetheless, I will take
                this opportunity to more fully share my
                  perspective on this. Perhaps it helps, perhaps it does
                  not.
              
                
              I have tried very hard to convince
                  users and customers to use EJB for more than fifteen
                  years now. The outcome for me is now firmly
                  established. A small percentage (let's say 5-10%) get
                  convinced and inevitably become ardent advocates. The
                  rest immediately make the decision to choose
                  Spring/Spring Boot instead. For this vast majority,
                  EJB is well understood to be outdated, heavyweight,
                  and bloated. As a result, the practical reality is
                  that Jakarta EE as a whole consistently loses users
                  and customers. If we continue to insist on clutching
                  tightly to EJB, I have no doubt whatsoever that
                  Jakarta EE adoption will never grow enough to sustain
                  a critical mass of stakeholders that will be able to
                  keep investing in it. Continuing the irreparably
                  damaged EJB brand was a mistake in Java EE 5, 6, 7 and
                  8. It's a mistake I have personally paid a very high
                  price for.
              
                
              For me, the critical question in EE
                  12 is how much work can be done to convincingly
                    tell the market they can finally use Jakarta EE
                    without needing to use EJB. I understand the most
                    ardent advocates of Jakarta EE are likely EJB fans
                    (in fact count me in that crowd, I even wrote a book
                    on EJB). I also understand for these users we need a
                    graceful "off ramp" that will take some time and
                    effort including early signals that we need to move
                    on now, education on what the alternative approach
                    is (i.e. the model that has successfully worked for
                    Spring users/customers for years now), migration
                    paths, guides, and tools.
              
              
              
                
                
                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
          
          -- 
             Imixs
                Software Solutions GmbH 
              Web: 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
            
          
          
          _______________________________________________
jakarta.ee-community mailing list
jakarta.ee-community@xxxxxxxxxxx
To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/jakarta.ee-community
        
      
      -- 
         Imixs
            Software Solutions GmbH 
          Web: 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