GNU EDMA
GNU EDMA is the Entorno de Desarrollo Modular y Abierto,
or in English the
Modular and Open Development Environment (named MODE by Russel
Reed in the first GNU/EDMA documentation translations). The name is
in Spanish because GNU EDMA has been developed by GPI (Grupo de
Procesado de Imagen or Image Processing Group) at Vigo University,
Spain.
GNU EDMA provides an Object Oriented Component-Based
development
environment to build modular and evolving applications as well as
highly reusable components. To achieve this, GNU EDMA shares
features of OO programming languages and component based systems in a
loosely coupled environment.
News
- November 2005:: CVS Releaseses upto Beta 0.15.7 Rev 7.
The main changes are listed below:
- Misc.
Package available at alpha.gnu.org
Tutorial directory updated
More Bug Fixes and Code cleanup
- August 2004:: CVS Releases up to Beta 0.15.3.
The main changes are listed below:
- Multithread Support for Execution Stack.
- Added Thread related functions.
Including mutex, TSD and more.
- Misc.
Class RUNNABLE fixed
More Bug Fixes and Code cleanup
- March 2004:: CVS Releases up to Beta 0.15.2.
The main changes are listed below:
- Per-Process Component Version Selection.
- Misc.
More Bug Fixes and Code cleanup
- November 2003:: CVS Releases up to Beta 0.13.2.
The main changes are listed below:
- Misc.
More Bug Fixes and Code cleanup
- June/July 2003:: CVS Releases up to Beta 0.11.5.
The main features are listed below:
- Dynamic SIU Proxies.
Added Functions to dynamically attach/detach SIU Proxies to objects
- Low-Level Method Invocation.
Added function to allow direct access to class methods. This interface
will allow developers to improve performance in critical parts of their
applications.
- Dynamic Invocation Interface.
Added support to dynamically build object requests. This interface will
provide a standard and type-safe way to invoke methods at the same time
it provides a method invocation interface for strong-typing
environments (like Java).
- New Primitives for Type-Safe Property access.
The new API provides type-safe property access, so compilers can type
check GNU/EDMA code.
- Misc.
More examples and Documentation added.
More Bug Fixes and Code Cleanup.
- First Quarter 2003:: CVS Releases upto Beta 0.11.3.
The main changes are listed below:
- Cloning Primitives. Shallow/Deep cloning working.
- MULTI_SERIALIZER Class. This class serializes
compound objects.
- Internal Structures Changed. Object and Class
internal structures have changed.
- Unit Tests. First Unit tests added (work in
progress).
- Run-Time Class Definition. Added run-time class
definition functions.
- Many bug fixes.
- September, 2002:: CVS Release Beta 0.9.4. The main
changes are listed below:
- Multiversion Classes. Now you can install various
versions of the same component, even while applications are running.
- New SERIALIZER Class. A serialization class was
added.
- New Tools. New tool for rapid development of
multithreaded servers.
- Misc. Bug fixes and minor updates on system classes.
- May, 2002:: Released Beta 0.9.3. The main changes
are listed below:
- API Change. Now functions are named edma_XXX
following GNU code standards. New functions have been added.
- NameSpace. Added basic support for namespaces. Now
components can be installed in different directories.
- Exceptions. Added rudimentary exception support.
Still in early development stage.
- Misc. A lot of bug fixes, graphical tools updated,
heavy code clean up.
- May 2002 :: Web Pages at GNU finally updated.
GNU EDMA's main features
- OO Component-based Environment:
Seamlessly mixes component-based and Object Oriented
programming models. Components can be managed as classes (the same way
that in any OO programming languages), or on an interface basis, as
other component systems do.
- Dynamic OO features:
All common OO features (inheritance, virtual method
override,...) that you can find in any programming language can be done
dynamically. Object's inheritance hierarchy can be changed dynamically
making it easier to build dynamically reconfigurable and evolvable
applications.
- Classes or Objects:
You can choose between your preferred OO flavor for developing
your application.
- Destructive Subclassing as in C++ or Java where
superclass behaviors can be completely rewritten by subclasses
- Conservative Subclassing as in Beta/gBeta where
superclass behaviors can be only extended.
- Prototype-Based as in Self where parents are shared
classes and object prototypes are cloned.
- Loosely-Coupled Architecture:
GNU/EDMA OOP features are implemented on a loosely-coupled
basis which provides a clear separation between the analysis/design and
implementation stages.
This approach allows the implementation of OO models even using
non-OO programming languages and to use features not supported by the
underlying environment (e.g. you can use multiple implementation
inheritance in Java when working with GNU/EDMA components).
- Reflection:
Full reflection API. Dynamically extract any information about
your classes and objects.
The reflection API along with the string-based object access
interface makes Object Automation and the development of Visual
tools trivial.
- Fully Extendable:
Developed in C. Built-in sub-systems to extend internal
functionalities.
- SIU Subsystem allows to change the default behavior
of the GNU/EDMA primitives. Its main target is integration of external
systems.
- IngrIDF Subsystem allows custom interface definition
language parsers.
- EMI Subsystem allows handling of exceptional
situations in the system. At the moment it only can be used to build
custom component/class loaders.
Open Tasks and Help Wanted
- Beta Testing:
Deep testing of the system on different environments is required ...
- Foundation Classes:
Basic class hierarchy to deal with common tasks. OS interface,
data structs,...
- Programming Language Support and Scripting:
Classes to allow development of GNU/EDMA components and
applications using other languages than C.
Main target is Guile. Perl (in progress), Python
(in progress), Ruby and Java are other desired
targets.
These classes will also allow to access GNU/EDMA core from
those programming language as well as use them as scripting language on
any GNU/EDMA application.
- System Integration:
One of the most important objectives of GNU/EDMA is to provide
a common reuse framework, so integration of other technologies is one
of the pursued targets.
- CORBA integration. Requires a DII/DSI aware ORB in order to
exploit GNU/EDMA dynamic features
- Component Models. It would be interesting to make GNU/EDMA
work with current available component models (XPCOM, Bonobo, Qt
Component Model, UNO,...) so they can be easily reused in a common
fashion.
- GNU Project:
Integration with other GNU projects.
- GNUStep
- GNOME. Including Bonobo and ORBit
- Guile as scripting language for GNU/EDMA applications
- Documentation:
Project documentation requires review by native english
speakers.
- Propose your project
Download
Documentation
Documentation is available from CVS (gnuedma/corie/doc) and most of the
texts require review by native english speakers.
They will be added to this page when corrected.
- Tutorials:
- Building GNU/EDMA Applications. (.texi): Describes
how to build simple applications using GNU/EDMA.
- Building GNU/EDMA Components. (.texi): Describes how
to build GNU/EDMA components.
- GNU/EDMA for C/C++ Developers (.txt): Easy
introduction to GNU/EDMA for C/C++ Developers explaining the simplest
uses of the system
-
Other
- GNU/EDMA User Reference Manual (.txt): Still incomplete
- GNU/EDMA FAQ (.html)
Mailing Lists
Acknowledgements
Danny Yee helped me with the first version of this page.
Laura Rodríguez González made some other comments.
Richard Stallman for pointing me to Danny Yee
Russel Reed for the first translations of the GNU/EDMA documentation.
Bev Corwin, Randal Shepard, Sabrina Mix for translating the old Installation
Guide to English.
David Currie helped me with this current page.
Return to the GNU home page.
Please send FSF & GNU inquiries & questions to
gnu@gnu.org.
There are also other ways to
contact the FSF.
Please send comments on these web pages to
webmasters@www.gnu.org,
send other questions to
gnu@gnu.org.
Copyright (C) 1998, 2001,2002 Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111, USA
Verbatim copying and distribution of this entire article is
permitted in any medium, provided this notice is preserved.
Updated:
$Date: 2005/11/05 12:08:34 $ $Author: dmartin $