| Introduction | How to use | ClassLoader | Serialization | Reflection | Attributes | Mechanism |
Introduction to ACDK Metainfo.
Metainfo in Programming languages means, that inside the programming
language there is information about the internal construction of the
languages types at runtime.
Many interpreted languages rely on this metainfo to build complex types,
like Lisp and Perl. An important aspect is Metainfo - or reflection - also
in Java and C#.
Many compiled languages has only limited build in meta info, like C++ with
its Runtime Type Information (RTTI).
You can find out if there is a 'is a' relationship between two classes
with a dynamic_cast and you can figure out a class name with the typeinfo
functionallity, but there is no further information about functions,
member, parameters, and so on.
One reason there is no build reflection feature in C++ is probably
the complexity of the type system. In C++ are several ortogonal
language construction apects:
- basic types (like int, char)
- arrays
- constness of values
- Pointer to values
- References to values
- functions, function pointer, calling conventions
- classe, struct, enum, union
- typedefs
- and last but not least the template mechanism.
-
- and probably I forgot something here.
In such a complex type system it fairly difficult to
build a reflection feature on top on it.
The most important programming languages introduced
in the last years is Java from Sun and Microsofts
're-invented' C#.
Both languages has a less complex type system, and
in both languages a class 'object' resp. 'Object' is
the major base of the type.
ACDK followed in the design the Java type modell.
There are following major elements which are known by the
ACDK type system:
In the implementaion part of ACDK are also
'foreign'
types allowed, but there is not metainfo and reflection available for for these
types.
Following features depends on Metainfo
- Core functionality
- Information about Types
- Registry / Nameserver functionality
- Information about members and function parameters
- Serialization
- Persistence
- Object to Relational Mappings
- Dynamic Method Invocation
- Bridge to distributed systems
- Steer ACDK Object through scripting language
- Information about lifing Object
- Gargabe Collecting Memory Management
- Online degugging
- Tracing