Ideas on Enterprise Information Systems Development

This blog is devoted to ideas on Enterprise Information Systems (EIS) development. It focuses on Lean Thinking, Agile Methods, and Free/Open Source Software, as means of improving EIS development and evolution, under a more practical than academical view. You may find here a lot of "thinking aloud" material, sometimes without scientific treatment... don't worry, this is a blog!
Every post is marked with at least one of Product or Process labels, meaning that they are related to execution techniques (programming and testing) or management techniques (planning and monitoring), respectively.

Thursday, September 16, 2010

Is Java the better choice for developing Enterprise Information Systems?

EIS present a complex nature, and, by definition, need to accompany the dynamics of their underlying business processes. Developers have to apply from Design Patterns to Service Oriented Architecture (SOA) to make systems flexible enough to cope with an ever growing change rate. New research areas, such as Dynamic Business Process Integration/Management also came to help.

However, it seems that the very basic element of every system stack - the programming language - was forgotten: is a static language such as Java the better choice for making flexible systems? I don't think so. I really believe that dynamic languages such as Ruby and Python are the "future" of EIS development, only flexible languages can give real flexibility to systems. Although many of the techniques presented in this blog, such as Domain Specific Languages (DSL), can be implemented in Java and other static languages, it is much easier to implement them using dynamic languages.

Side note: my opinion regarding ERP5 can be biased - we've been contributing to this project since 2002, but given that SAP-supported folks openly refer to R3, I feel comfortable to do the same. Having said this, now I can go ahead.

Maybe one of the first EIS projects to take advantage of dynamic languages was ERP5. It is implemented in Python, and from this six year-old story, I copied some interesting parts:

"Two key factors led to the choice of Python. First, was the need to make extensive use of metaprogramming. Second, for simplicity's sake, ERP5 needed to be implemented in a single language from core architecture to scripting.
"

(...)

"Python supports efficient metaprogramming through powerful introspection features that allow programs to inspect and modify code at runtime. Java's introspection are by contrast quite poor and inflexible. Metaprogramming in Java requires writing preprocessors, which would have added prohibitively to the cost and complexity of implementing the ERP5 system.
"

(...)

"Another advantage that Python had over Java was that it could be used at all levels of the system, from core implementation to scripting. Most ERP systems, while written in one language, use another scripting language to allow flexible configuration at run time by ERP administrators. Python is equally well suited both for scripting and core development, reducing complexity and increasing the flexibility of the system.
"

This example shows some advantages of using dynamic languages for implementing EIS. Now you can ask me: "ok, but what about all that reliable Java code around?" The answer is threefold: (i) SOA is here to integrate different platforms, including legacy code, (ii) we have to pay a price for being innovative, and (iii) if we were think like that all the time, we would be programming in Cobol...

No comments:

Post a Comment