Getting Started

Welcome to Reactor! This is a informal introduction to Reactor. To learn about Reactor thoroughly, you can read the Reactor User Guide. What follows is an overview of Reactor to get started if you don't have time to read the user guide.

Navigating Reactor. If you have ever used a web browser, you should have an easy time navigating Reactor. Think of Reactor as your personal web server, running on your own machine, and serving your browser with pages corresponding to your programs. You browse Reactor's contents with your favorite web browser. As far as your web browser is concerned, all Reactor elements are ordinary web pages.

However, Reactor is much more than an ordinary web server. Reactor is active--it doesn't just serve you real files or run CGI scripts. Instead, Reactor generates most of its pages dynamically from your sources. Reactor embeds a full development environment into a custom web server. For example, here are a reference to all the packages on your system (/package), a reference to the built-in string type (/type/TEXT), or a reference to the simple I/O interface (/interface/IO). As you may have noticed, everything in Reactor has an associated URL.

Team Development with Reactor. To manage large projects with Reactor you divide your code into packages. Packages can be built independently; you or others in your group can use the code from one package to build another. Reactor has a team-oriented model for development. Each one of the developers in your team has a private repository (/proj); all the developers share a public repository of packages (/public), which is available for everyone to browse. Reactor accelerates your team development tasks by:

Even if you are developing solo, you should find Reactor's package management useful for organizing your projects.

State-of-the-art Programming with Reactor. Using Reactor's advanced features such as garbage collection, distributed objects, exceptions, portable operating system interfaces, you can build robust programs and maintain old programs quickly and reliably. There are many interfaces available as part of the Reactor distribution for every development need (well, almost!) Some of the most important programming interfaces are summarized in Reactor Interface Index.

Non-nonsense Development Environment. Reactor covers all the needs of developers who would like to build robust applications, whether they are distributed or local. In the past ten years, Reactor's core has been used specifically for this purpose. Those who are not interested in using fancy development GUIs can use Reactor's builder (cm3) as a stand-alone compiler from the command-line shell. Using cm3 is very easy; its command arguments and makefile format is the same across all Unix and Windows platforms.

All the on-line help, reference, tutorial, and documents you need is at your fingertips. You can you can easily link in local and network web information into your projects, as well.

The best way to learn about Reactor is to work through examples while reading the Reactor User Manual. If you are reading this page, you are probably anxious to get some real work done, so the rest of this page attempts to describe the basics of operating Reactor quickly.

For a new user who is in a hurry, the rest of this document includes basic information on basic Reactor functions.

Quick, tell me:


Reactor Start Screen

 R E A C T O R

S Y S T E M  Packages shows you the available packages, including public and private packages. Click on any package name to visit the package. Configuration takes you to Reactor's configuration page. You can customize Reactor's behavior using this screen.
Libraries displays a list of available libraries. You may import libraries into other packages. To visit a library, click on its name in the library listings. Programs shows you a list of available programs. You may execute any program by clicking on its name.
 
L A N G U A G E   Interfaces lists all the available interfaces in your system. A typical Reactor installation may include more than a thousand interfaces. To read an overview of the interfaces, consult Reactor Interface Index. Modules lists all the module implementations available in your Reactor system. Modules contain executable sources of programs and libraries. You may only access a module through its interface.
 Generic Interfaces are parameterized interfaces. Generics can be used to constructs generic data types and algorithms.  Generic Modules are implementations of generic interfaces.
Types includes a full cross-reference of the types used in all built programs on your system. Object types may be viewed as part of the type hierarchy. You can also navigate to the interfaces and modules where the type was defined.
 
H E L P   Getting Started
You are here!
User Guide takes you to the user guide for Reactor and Reactor's builder, cm3.
Tutorial includes two tutorials, one on the Modula-3 programming language and another on Trestle, the multi-platform user interface toolkit. Reference is a link to the reference information about Reactor and Modula-3.
Examples outlines more than twenty hands-on examples. Once you click on any of the examples, they turn into your own private package, so you can build them. See also Hello World. Technical Notes includes more technical information about Reactor and Modula-3.

Quick Access Icons

On the top of each Reactor screen is a row of quick access icons, denoting your location within Reactor's name-space. You may click on any of these icons to navigate in the Reactor's name-spaces.

Navigating using these icons has the benefit that your browser will not erase your history, as it would if you used its "back" and "forward" buttons. You can then use your browser's history (usually under the "Go" menu) to go back to where you started from.

   Reactor   |    public   |    libm3   |    src   |    rw   |    Common   |    IO
   Reactor takes you to the start page.

   public takes you to /public, the public repository of shipped packages.

   libm3 takes you to /public/libm3, the standard libraries.

   src takes you to /public/libm3/src, the source directory of the libm3 package.

   rw takes you to /public/libm3/src/rw, rw subdirectory of the sources for libm3, which contains the sources for standard reader and writer streams.
   Common takes you to /public/libm3/src/rw/Common the subdirectory containing platform-independent sources of the rw portion of libm3.
   IO takes you to, /public/libm3/src/rw/Common/IO.i3 the IO interface. /interface/IO is a short-cut to the IO interface.

Making a query

To find a Reactor element, you may type in its URL in the Find Type-in available from any screen that presents a list of elements. You can also use Reactor's regular expression format for specifying expressions for the find type-in.
Try typing in any of the expressions below in the type-in field. Press return to find the interfaces specified in the type-in.

Hello World

Create a Hello World program instantly. The example program includes instructions on how to build and run it. There are many other examples in the Examples section of your Reactor environment.

Creating a new package

To create a new private package, enter the name of the package, whether you want it to be a program or a library, and click the "Create New Package" button.


Name of the package

What kind of a package
Program
Library
Or you can navigate to the Packages listing page, and click on the button.

Help and Information

Reactor User Guide: The user guide includes a thorough, 180-page description of Reactor.

Reactor Interface Index: If you would like to read an overview of the standard Modula-3 libraries, visit the Interface Index.

CM3 Operations Guide: Critical Mass Modula-3 (cm3) is a state-of-the-art compiler specifically designed for the creation of robust and distributed programs; cm3 is the core of Reactor's building facilities. You can find more information about cm3 by reading the CM3 Operations Guide.

Books and Articles: More than 50 books and articles are listed in a comprehensive, annotated bibliography. There is also a concise bibliography.

Reactor Examples: More than twenty ready-to-build, documented programs demonstrate the use of everything from portable operating system interfaces, to Reactor network objects, to the web-server toolkit. If you have learned the basics of the Reactor environment and would like to get some hands-on experience with it, review the Reactor Examples.

Modula-3 Tutorial: If you know the basics of Reactor, but you would like to learn more about Modula-3, or like to build Modula-3 programs from outside of the Reactor environment, read the Modula-3 Tutorial.

Trestle By Example: Trestle is a portable windowing system. GUI applications written using Trestle work transparently on top of Unix X Window System (X11) and Microsoft Windows (Win32). If you would like to learn more about Trestle and the available collection of Widgets, start by Trestle by Example.

For more information, visit the Critical Mass web site at http://www.cmass.com, or Critical Mass Reactor web page at http://www.cmass.com/reactor. You can also drop us a line at reactor@cmass.com.


Customizing Reactor

Much of Reactor's behavior can be customized. You know by now that you can embed Reactor web links, forms, etc., in your programs or HTML documents on your system. (This is how we created this page; you can easily make your own introductory pages for newcomers in your development group!)

Many of the Reactor settings can be changed from Reactor Configuration form. On-line help about your options is available from the configuration page.


That's all folks!

You may start on your own from the Reactor Start Page. Feel free to visit the Critical Mass Home Page at http://www.cmass.com or drop us a line at reactor@cmass.com. Good Luck!