2005/5/10

     
 

Introduction to ACDK Metainfo

artefaktur

| Introduction | How to use | ClassLoader | Serialization | Reflection | Attributes | Mechanism |



Introduction to ACDK Metainfo.


Content of this chapter:

   Introduction
     Matainfo == Reflection
     Complexity of a type system
     Programming languages with Reflection
     Object as the root of the type system
   Features of Metainfo



 Introduction


 Matainfo == Reflection

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.

 Complexity of a type system

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.

 Programming languages with Reflection

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.

 Object as the root of the type system


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.

 Features of Metainfo

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