realMethods Open Sources Its J2EE Framework


News: realMethods Open Sources Its J2EE Framework

  1. realMethods announces it is now part of the Open Source Initiative (OSI), making its J2EE Framework available as open source under the GNU General Public License (GPL).

    The realMethods core services are:

    - Full Persistence Support: BMP, CMP/CMR 2.0, and Data Access Objects
    - JMX compliance ensures an executing realMethods-based application can be administered.
    - Logging: A simple to use and extendable mechanism for logging to multiple destinations including System out, Log4J Logger, JMS connection, and/or IBM/MQ
    - Resource Pooling: Pools database connections (direct and Data Sources), JMS, LDAP, and IBM/MQ resources.
    Security Management Assists in handling application authorization and authentication.
    - Hook/Event Infrastructure: Allows you to introduce logic into the run-time aspects of certain key Framework processing.
    - Notification/Subscription Infrastructure: Handles notification surrounding the creation, update, and deletion of a Value Object.
    - ValueObject Cache: Provides HttpSession and Application level Value Object caching.
    - JMS/MDB/Command/Task Architecture: Define simple Commands and aggregate them into Tasks, made available for execution via JMS. Provides a simple technique to wrap any Task as a MessageDrivenBean.

    Quote on the OS release:
    "realMethods is finally convinced that a well run open source project will promote better software reliability and quality by supporting independent peer review and more rapid evolution of the source code, providing greater design pattern and J2EE coverage. Unlike most open source projects in this space, the realMethods Framework project is backed by realMethods Professional Services.
    Being based on the core J2EE Design Patterns, realMethods seeks to provide full coverage across all tiers of the J2EE spectrum, yet remain open to the easy integration of other frameworks. Importantly, components and services that exist in realMethods are usable outside the larger framework."


    Go to the realMethods site:

    Why open source?

    realMethods is free

    realMethods 2.3 Quick Start Guide (PDF)

    Threaded Messages (18)

  2. This framework seems to be not very useful without AIB - Application Infrastructure Builder which could be used to convert UML Models into the framework components.

  3. Useful?[ Go to top ]

    And also only useful for Open Source projects due to the GPL licencing ;-) Normally, you use GPL for applications and not for libraries or frameworks. For libraries or frameworks you usually use LGPL, so they can be used for your commercial software.

  4. Transitioning to LGPL[ Go to top ]

    Your point is well taken.

    When starting with a commercial offering, and moving to an open source paradigm, it isn't the same as originally making the offering open source. I agree that LGPL on the surface seems appropriate for any library or framework, but our existing customers initially beg to differ. Also, those doing non-commercial work shouldn't have a problem. Those doing commercial work would certainly want to consider using something that is warranted, which makes either license scenario moot.

    We fully expect to transition to the LGPL shortly, and will continue to offer a commercial license to those looking for a warranty.
  5. GPL[ Go to top ]

    Licence GPL realMethods
    Any direct modifications to the realMethods Framework will become the property of realMethods.

    Can someone explain to me what this suppose to mean? So, if you change or extend the code of the framework itself, it will automatically become the property of realMethods? So, you will lose the copyright of your own code? I've never heard about this. Normally you keep the copyright of your code, independent of what kind of Open Source licensing you choose.

  6. Just to clarify...[ Go to top ]

    Just to be clear, changes to a framework source file do not become the property of realmethods. That is an error on the website. thanks...and sorry for the confusion.
  7. Using without the AIB[ Go to top ]

    We have customers that have build there applications without using our AIB code generator. Rather, they start with our Proof of Concept application and build from there. Also, the fact is that folks just aren't into UML diagrams. Typically, what we have seen is that a team of developers and architects, only a few would actually be responsibly for the model and code generation, while the remaining team members make use of the generated code.
  8. Flaky, flaky, worrisome[ Go to top ]

    This is really bizarre code. Anything purporting to be *THE* framework is very suspicious. Big bad non-modular kitchen sink that does not work out of the box.

    Throwing Exceptions is such a Java 101 error. A prime example of anti-patterns at their best. *Not* a single unit test anywhere should indicate the robustness of this code. And what are all those I* interfaces doing everywhere? There is no internal consistency, no external coherence.

    The code crashes everywhere. Try running it! The developers have done NO* error checking anywhere. See what happens if you don't set FRAMEWORK_HOME property at line 253 in com.framework.common.FrameworkNameSpace. NullException kaboom!

    More seriously, see what happens when you run exceed maxCapacity on your connection pool at line line 218 in!! NullException kaput! The Javadoc promises:
          An available connection object or waits until one is available.
    There is *NO* wait anywhere to be seen. Not to mention how this jibes with the EJB spec on threading!!!

    And what a WRONG backwards dependency: ConnectionPool depending on an MBeans implementation!!!
      public class ConnectionPool
        extends ConnectionPoolMBean implements IConnectionPool
    Huh? Just follow the call stack getMaxCapacity() to see why this product crawls. They should check out Jack Shirazi's site for basic 101 performance tips.

    Again, no unit tests? I wonder why... What gives Mr. RealMethods? What's the reason?
  9. code criticism[ Go to top ]

    as valid as some comments may be - the way the source code is being criticized here makes me wonder whether I would ever want to publish a formerly commercial product into OS.

  10. code criticism[ Go to top ]

    as valid as some comments may be - the way the source code is being criticized here makes me wonder whether I would ever want to publish a formerly commercial product into OS.

    The best way to fix framework/technology is to let users/developers to do it. I am sure problems will be fixed if this framework is used by developers.

    > Christian
  11. Flaky, flaky, worrisome[ Go to top ]

    With the product being in product for the past 2 years, don't think we would have come across a scenario that would have proven this implementation to be deficient. Months of profiling with one of the largest US government agencies certainly would have exposed something...don't you think? How you can make such bold face claims and challenges without actually having used and profiled the product is beyond me.
  12. Flaky, flaky, worrisome[ Go to top ]

    bold face claims and challenges without actually having used

    I have had to extensively use this product. :( You might want to address the specifics of my post, instead of a vague answer. Just one question: Do you have any unit tests? Do you ever run them on your code?
  13. This framework is using a lot of reflection. Does anyone have a true experience with realMethods?
  14. Reflection usage[ Go to top ]

    Other than a few helper methods in the base class for all value objects (FrameworkValueObject), and to obtain the constructor for a couple of classes that are dynamimcally loaded via a property file, if you could point me in the direction of the areas of concern, I will gladly respond. The runtime aspects of the framework do not use any reflection, and these helper methods are there as utility methods, but never used by the framework itself. There isn't much type safety with a reflection-based framework, so we don't rely on it as being core.

  15. Reflection usage[ Go to top ]

    Other than a few helper methods in the base class for all value objects (FrameworkValueObject), and to obtain the constructor for a couple of classes

    Value objects are the most important objects of any application.
    There might not be a solution besides reflection, but, in the scenario I have in mind, the application performance may slow down. Have you tried to use a profile tool to see if it causes performance problems ?

    Also, having some collaboration/sequence diagrams will help users to see how the framework works. In the end, the framework seems to be useful in some way, and I will find how. I'm just worried about the reflection
  16. Design choices[ Go to top ]

    I found source hard to read because of atypical naming convention and structure , m_ for variable names and sometimes hungarian notation !? ( yes , I know it is personal, but... ).
    On less personal note, design seems to be a little bit flaky , I don't like to see class properties to have protected access, set/get and private access gives you more flexibility. It is hard to refactor protected access at framework level if not impossible. Also having Exception in throws clause is useless IMHO , a lot of
    if ( xx == true ) constructs which also raises concern in my mind.
    I will take a good look before start using it.
  17. How does this work?[ Go to top ]

    Any use of J2EE components implies using 1) J2EE interfaces distributed by Sun or 2) creating a clean room J2EE compatible interfaces.

    #1 Does not work for an Open Source product since Sun's licensing terms for their J2EE interfaces is not compatible with OSS.

    #2 Implies the interfaces are under GPL meaning anything I build with these interfaces must be licensed under GPL as well (which is fine if you're ok GPL'ing your business applications but a lot of us are not).

    #3 Sell a commercial dual-license (which they do) but that sort of makes the whole 'free of charge' look more like a marketing trick...?


  18. No marketing gimmick...[ Go to top ]

    I fully understand the concern surrounding the seeming conflict that arises with a framework and the GPL. Unfortunately, for the past 2 years, we originally offered the framework as a commercial licensed product, so offering a dual license keeps us in the good graces of current customers. Since nothing is warranted under the GPL, commercial usages would tend to want a license to the product for the protection as well as the support.
  19. This referenced quote is incorrect, "Unlike most open source projects in this space, the realMethods Framework project is backed by realMethods Professional Services." - Expresso Fraemwork has always offered Professional Services! We are certainly not the only ones offering services either. (Expresso Framework dev started in 1996, released in 1999 & has the largest J2EE architectural framework user base by far)

    In reference to your comment that "realMethods is finally convinced that a well run open source project will promote better software reliability and quality..." - This is unrealistic because a GPL license is an inappropiate license for a framework and it will be difficult to attract developers. It takes more than OSS to generate a vibrant community that participates in the activities necessary to create better software.

    What happens when successful open source products become more mature than their commercial counterparts due to the fast evolution of the sofware with the open source community development process? I think this time has come and now many commercial architectural frameworks face a challenge.

    To be blunt I wonder if RealMethods is struggling and that is the real reason for this change to OSS? With a recession and many new comers to the framework arena - its a tough environment. Altoweb is out of business. Companies like wakesoft have a dozen customers only. So can commercial companies survive with more mature OSS J2EE architectural frameworks available? or can they differentiate themselves sufficiently?