gambas-source-code/app/other/MakeWebSite/gambas.sourceforge.net/architecture-detail.html
Benoît Minisini 53d08a1c34 [WEB SITE MAKER]
* NEW: Put it in the /app/other directory.


git-svn-id: svn://localhost/gambas/trunk@2777 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2010-03-09 05:22:36 +00:00

128 lines
4.9 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="$(LANG)" lang="$(LANG)" dir="$(LANGDIR)">
<head>
<link rel="stylesheet" href="$(STYLE)">
<meta http-equiv="content-type" content="text/html; charset=utf-8">
</head>
<body class="none">
<table class="none" cellpadding="0" cellspacing="0" width="100%">
<tr><td class="none" height=600 valign=top>
<p>A drawing is better than a long speech. And I'm fond of this kind
of diagram that make people think that program design is completly
clean and careful thought ;-).
You can click on the picture to get details about <i><b>Gambas</b></i>
architecture...</p>
<p>The <i>Development Environment</i> hides this machinery behind
a pretty graphical interface.</p>
</td></tr>
<tr><td class="none" height=600 valign=top>
<h3><a name="interpreter"></a>Interpreter</h3>
<p>The interpreter is a program named
<i>gbx</i>. It executes the byte code of the compiled file generated
by the compiler.</p>
</td></tr>
<tr><td class="none" height=600 valign=top>
<h3><a name="project"></a>Project</h3>
<p>A project is a set of files stored in one
directory. A project can contain source files (forms, classes, modules)
or any data files of any types. The project configuration is stored
in a file named <i>".project"</i>.</p>
</td></tr>
<tr><td class="none" height=600 valign=top>
<h3><a name="native"></a>Native Classes</h3>
<p>The native classes can be used without loading
any component. They are integrated in the interpreter, and can be looked
upon as a part of the <b><i>Gambas</i></b> language.</p>
</td></tr>
<tr><td class="none" height=600 valign=top>
<h3><a name="interface"></a>Component Interface</h3>
<p>The <i>Component Interface</i> is a set of
routines and services used by the components to communicate with the
interpreter. The interpreter's internals are hidden this way.</p>
</td></tr>
<tr><td class="none" height=600 valign=top>
<h3><a name="component"></a>Components</h3>
<p><i>Components</i> are shared libraries
that are loaded at run time by the interpreter. They can contain new
classes and hook routines such as event loop management, shell arguments
analyze, etc. They can publish a set of routines as an interface
to other components also.</p>
</td></tr>
<tr><td class="none" height=600 valign=top>
<h3><a name="execution"></a>Execution Unit</h3>
<p>The <i>execution unit</i> is the heart of
the interpreter. It dispatches and executes each byte-code instruction
generated by the compiler.</p>
</td></tr>
<tr><td class="none" height=600 valign=top>
<h3><a name="subr"></a>Subroutines</h3>
<p>The <i>subroutines</i> are the interpreter
functions associated to the corresponding <b><i>Gambas</i></b>
<i>Basic</i> functions like <i>Sin( )</i>, <i>Left$( )</i>, etc. or
operators like <i>+</i>, <i>&amp;</i>, etc.</p>
</td></tr>
<tr><td class="none" height=600 valign=top>
<h3><a name="loader"></a>Class Loader</h3>
<p>The <i>Class Loader</i> loads compiled forms,
classes and modules into the interpreter. If your project was compiled
as an executable, i.e. as an archive, the interpreter maps the file
into memory instead of loading it. It is worth doing&nbsp;!</p>
</td></tr>
<tr><td class="none" height=600 valign=top>
<h3><a name="archived"></a>Executable file</h3>
<p>A <b><i>Gambas</i></b> executable file is
just an uncompressed archive of your project, the compiled files included.
The archive file is marked as a script with the "<tt>#!/usr/bin/gbx</tt>"
magic header, so that <i>Linux</i> executes it by calling the interpreter.</p>
</td></tr>
<tr><td class="none" height=600 valign=top>
<h3><a name="compiled"></a>Compiled files</h3>
<p>A compiled file is a binary representation of
a class, that contains every information useful to the interpreter&nbsp;:
functions transformed to byte code, constants, variables definitions,
debugging information, etc.</p>
</td></tr>
<tr><td class="none" height=600 valign=top>
<h3><a name="archiver"></a>The Archiver</h3>
<p>The <i>archiver</i> is a program named <i>gba</i>.
It transforms your project, the compiled files included, in one sole
executable file.</p>
</td></tr>
<tr><td class="none" height=600 valign=top>
<h3><a name="compiler"></a>The Compiler</h3>
<p>The <i>compiler</i> is a program named <i>gbc</i>.
It transforms your project's forms, classes and modules files into binary
compiled files that can be understood by the interpreter.</p>
</td></tr>
<tr><td class="none" height=600 valign=top>
<h3><a name="comploader"></a>The Component Loader</h3>
<p>The <i>Component Loader</i> is the part of the
interpreter that loads components shared libraries, gives them access to the
<i>Component Interface</i>, and that publishes their interface to the other
components.</p>
</td></tr>
<tr><td class="none">
</td></tr>
<table>
</body>
</html>