----------------------------------------------------------
JAPIC : Java Like API Framework for Cplusplus
Date : 12/03/03
Version : 1
Author : Irfan Bondre
-----------------------------------------------------------
Revisions:
Version1 : 12/03/03 [Irfan Bondre]
Created
Version1.1 : 12/04/03 [Irfan Bondre]
Added Reflection not supported.
-----------------------------------------------------------
Start of Description
-----------------------------------------------------------
Abstract:
JAPIC will provide an extensive set of core High-level,
Object-Oriented interfaces to simplify usage of complex C
API.
-----------------------------------------------------------
Introduction:
JAPIC will provide cross platform ( See Supported platform section for details )
C programming api for application development. The purpose here is to reduce
development time code by providing ready to use components for application
developement.
Why Java like, the answer is simple java api is simple to use and highly
extensively used. Secondly, people who have knowledge of using java will have
less problem understanding this api, furthermore people who use this api will
find it simpler to migrate to java.
The major obstacle during this development is going to be developing an
consistent interface across platforms, such that the application development can
be used in all the supported platforms with little or No change to the
application source code.
The following components will be implemented. A brief description is provided
below.
1. Standard C++ library module
2. Core library module
3. System library module
4. Specific Design pattern module
5. XML library module
6. Internationalization support module
Standard C++ library module:
is built from the current standard C++ implementation. It uses the STL for
template based algorithms and data structure support. Further it provides a new
set of algorithms and data structures based on inheritance and polymorphism. At
this point internalization support is not include. But in future
internationalization support will be provided through UNICODE. This module will
also provide wrapper classes for basic primitive types like int, char, long,
double and Boolean, so that theses classes can be collected in the collection
library and also to be used in some advanced serialization and other components.
Core library module:
What will go in this is still under investigation. Things like serialization,
some utils will be added in this. Helper utils like generic caching algortihms
will be implemented.
System library module:
Basically will provide the system services like network, I/O, threading,
synchronization, etc. Other
Specific Design pattern module:
This implements specific design patterns like server pool, producer-consumer,
IOUs, resource pool, etc. This will implement certain generic patterns.
XML library module:
This provides wrapper for apaches xerces library.
Internationalization support module:
Purpose of this module is provide internationalization support through UNICODE.
-----------------------------------------------------------
Whats Not There:
The following components are excluded at this point,
because firstly, we want to limit the scope of this project
and secondly because of lack of resources who are
experienced with this type of components.
1. We don't plan to provide any GUI interfaces at this
point or near future.
2. Regular Expression at this point is optional, and
might be added if need arises or rather other core
components need such facility.
3. At this reflection won't be part of the design. More research will
be required in that area before we decide if at all its possible.
-----------------------------------------------------------
Development Resources:
Programming Language:
The complete Development will be C++ based as the
name suggests. For the platforms we will be supporting (
Linux and Win32), We plan to use the following compilers.
Linux : gcc 2.96 or beyond.
Win32 : Visual Studio.Net Compiler.
External Libraries:
The following libraries 3rd party libraries will be
used to aid development of JAPIC, these libraries are
available on all supported platforms described below.
1. xerces library for xml processing.
2. Unicode library for internationalization support.
Supported Platforms:
At this point, we will start with only two
platforms, the major reason for this my access to resources
of this platforms.
1. Linux 7.3 and beyond
2. Microsoft Windows 2000, XP and 2003.
-----------------------------------------------------------
End of Description
-----------------------------------------------------------