Dr. Dobb's is part of the Informa Tech Division of Informa PLC

This site is operated by a business or businesses owned by Informa PLC and all copyright resides with them. Informa PLC's registered office is 5 Howick Place, London SW1P 1WG. Registered in England and Wales. Number 8860726.

Channels ▼

Open Source

EGL Means Business

Will Smythe is a product line manager and EGL guru for IBM Rational

Dr. Dobb's: What is EGL?

Smythe: EGL is a higher-level programming language designed for simplifying development of modern business applications and services. EGL code compiles into COBOL, Java, and JavaScript, which means it can be deployed to a wide variety of environments. EGL frees developers to focus on the business problem rather than on the details of the target runtime platforms and associated middleware. EGL is ideal for business-oriented development teams that value ease of learning and need to quickly deliver modern applications and services.

Dr. Dobb's: By "business language" what do you mean?

Smythe: EGL is a programming language optimized for developing business-oriented applications (i.e. applications typically driven by a user via the Web, services invoked from other applications or third-parties, batch-style programs that perform some business function, like performing batch database updates overnight). The language is meant to be used by developers, not business analysts (it is a full programming language).

Dr. Dobb's: What current language does EGL resemble? COBOL, SQL, DSL?

Smythe: EGL is a statically typed language, like Java, C, etc. It has some similarities to Java (in terms of syntax), but also borrows concepts from COBOL (like the concept of using English verbs for common functions, like GET, ADD, DELETE, MOVE). EGL relies on the concept of abstraction and is declarative in some places. See the EGL wikipedia page for a few simple code examples.

Dr. Dobb's: EGL is designed for developing "portable, cross-platform apps". What kind of apps? What platforms?

Smythe: EGL code compiles into Java, COBOL, and JavaScript and then can be deployed to a number of environments (JEE, JSE, CICS, IMS, IBM i, Web Browsers). EGL is portable because it does not tie your code to a single runtime platform or architecture. For example, if you code a Web service in Java today, you are forever forced into running in a Java/JEE environment. Of course, Java runs in a lot of places, but not everywhere, and in 10 years there will be new runtime platforms that offer new benefits and capabilities (we are already starting to see new Java-based, non-JEE runtime platforms emerge). If you had coded the same service in EGL, you would have the ability to run it in a Java/JEE today, but then somewhere else (or both places) in the future without modification. Of course, this requires there to be a generator for the new platform (either a new code generator that supports the new platform or an extension to, say, the existing Java generator). This is one reason why IBM is opening the EGL technology: it gives others the ability to build generators to support new platforms and environments.

EGL is also significant because it provides a common, consistent programming language across all aspects of the application (from server to client). From a JavaScript perspective, EGL offers a number of advantages over JavaScript, including one big one: EGL is typed, whereas JavaScript is not. By giving developers a higher-level language to work in, EGL can handle/mask the complexities of the underlying target language and provide benefits not available to the target language. EGL also supports creating a layer around existing JavaScript libraries (like Dojo, ExtJs/Sencha, etc) and then utilizing these libraries from within EGL. This means an EGL developer can use existing JavaScript libraries, but remain coding in EGL. An additional benefit here is the ability to swap out the underlying widget library implementation without changing the EGL application (this avoids being tied to any one particular JavaScript library). Again -- EGL is about enabling flexibility, both now and in the future.

Dr. Dobb's: What role does the Eclipse Foundation play?

Smythe: Eclipse provides a great environment for evolving/building developer-oriented projects. IBM chose Eclipse as the destination for EGL because the EGL technology is already built on Eclipse, utilizes a number of Eclipse components (including BIRT), and because Eclipse still continues to be the #1 open source development site. The purpose of the project is to provide a base set of development tools for the EGL language. From here, other vendors can extend and create their own solutions while IBM continues to offer its own solutions. IBM will also develop/evolve the EGL language within the Eclipse project. This will ensure there is a common language, even if other vendors choose to build extensions and new generators on top.

Dr. Dobb's: What kind of open source plug-ins do you expect we'll be seeing?

Smythe: Having been in the EGL business for awhile, we have seen all kinds of requests for "complimentary" tools to the solutions already provided by IBM (in Rational Business Developer). For example, many large customers want to understand how changes to one EGL file will impact the rest of the system (i.e impact analysis). Others have asked for static source code analysis tools to help find potential performance issues or other problems that may result in some future runtime/production problems. We have also been asked about a JUnit-like unit test tools for EGL. IBM’s decision to open source EGL will help others better understand the technology and enable them to develop tools that compliment what's provided by the Eclipse project and by IBM.

Dr. Dobb's: Where do you see EGL eventually going?

Smythe: EGL has the potential to evolve into one of the major application development languages in the next 5 years. EGL has "staying power" because it can evolve as new languages and runtime platforms emerge (one major example of this is how IBM added JavaScript support in 2008, years after delivering Java and COBOL support). Also, there is something to be said for a language whose goal is to ease/simplify development. Not every developer should have to be exposed to the low-level complexities of the underlying language, but this is happening today because there aren't a lot of alternatives. EGL not only provides a simplified development experience, but also takes advantage of these time-tested, proven runtime platforms/languages.

Related Reading

More Insights

Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.