
    The (highly unofficial) FIDONET OS2PROG C++ compiler pros and cons list
    

                        The SOMObjects Travel Guide
                        

    There have been two versions of SOM.  SOM 1.x was "ante CORBA", and
    SOMO 2.x is "post CORBA".  This means that the two are not strictly
    compatible.  Although IBM has done its best to allow SOM 1.x
    applications to continue to work on SOM 2.x, SOM 1.x is now a lame
    duck, as is OIDL, the language that it used.

    With the advent of SOM 2.x came several standard SOM class libraries,
    namely the Persistence, Distribution, Collection, and Replication
    frameworks ("framework" is a posey name for class library).  These
    allow SOM programmers to load and save objects, to use objects
    remotely, to make collections of objects, and to keep multiple copies
    of objects.  There are a couple of more specialised class libraries as
    well.

    Using the Distribution framework is often known colloquially as DSOM,
    Distributed SOM.  DSOM can either be Workstation Enabled, meaning that
    different processes on one machine can share DSOM classes and objects,
    or Workgroup Enabled, meaning that DSOM classes and objects can be
    shared across a LAN using TCP/IP, NETBIOS, or IPX/SPX.

    The SOM runtime itself ships as standard as part of OS/2, since
    Workplace Shell is a SOM application that requires it.  OS/2 version
    2.1x came with SOM 1.x, and none of the standard SOM class libraries.

    OS/2 WARP 3.0 comes with SOM version 2.1, and all of the standard SOM
    class libraries in DLL form (in the \OS2\DLL directory).  The
    Distribution framework supplied is only Workstation enabled.  The DSOM
    Workgroup enabler runtime is available separately as IBM part number
    59G5679.  Workplace Shell in OS/2 WARP 3.0 is in fact a DSOM server.

                        

    There are various tools available for writing SOM-capable programs.

    The OS/2 Developers' Toolkit version 2.1 includes a basic set of SOM
	tools for creating SOM 1.x programs.  It also contains SOM 1.x OIDL
	class definitions for the Workplace Shell classes in OS/2 2.10.

    The SOMObjects Developers' Toolkit version 2.1 for OS/2 provides a lot
    of SOM development tools for SOM 2.1, including the SOM compiler that
    is used to translate class definitions written in IDL into language
    bindings for use in programs, all of the class definitions for the
    various SOM standard class libraries, and several interface repository
    management tools.

                        

	The SOM support of the various C++ compilers currently breaks down as
	follows :

	The position of EMX C++ 0.9a respective to SOM is in some doubt.
	There are several compiler-specific parts of the SOM header files,
	which EMX C++ doesn't seem to have.  Certainly EMX C++ is not an
	"official" SOM platform.

	Borland C++ 2.0 does not ship with any SOM headers either (BC++OS2
	version 1.0 used to have them).  Confusion seems to reign over this,
	since Borland C++ is an official SOM platform.

	Watcom C++ 10.0b ships with version 2.0 of the SOMObjects Developers'
	Toolkit, which allows users of Watcom C++ to write SOM 2.0 programs
	using the C/C++ language bindings.

	( One warning about Watcom C++ 10.0b : Its installation program is
	badly broken, in that it doesn't check that it is actually upgrading
	your current level of SOM support.  It places its \WATCOM\DLL
	directory at the head of LIBPATH in CONFIG.SYS.  On OS/2 WARP 3.0
	systems, this replaces the SOM 2.1 runtime with the SOM 2.0 runtime,
	and Workplace Shell is then unable to start.  Editing CONFIG.SYS by
	hand to move the directory containing the SOM 2.0 runtime to the tail
	of LIBPATH cures the problem.  )

	IBM CSet++ 2.1 ships with version 2.1 of the OS/2 Developers' Toolkit,
	which only allows users of CSet++ to write SOM 1.x programs.  For SOM
	2.x programs, the SOMObjects Developers' Toolkit must be purchased
	separately.

	IBM CSet++ 3.0, when it is released, will be a DirectToSOM C++
	compiler, allowing people to implement and use SOM 2.1 classes as
	native C++ classes.

	MetaWare High C++ 3.31a is also a DirectToSOM C++ compiler, which has
	the added advantages of being on its second release, and available
	right now.  Again, it allows people to implement and use SOM 2.1
	classes as native C++ classes.

    JdeBP                 (c) Copyright 1995 All Rights Reserved. 
    JdeBP@donor2.demon.co.uk                      FIDONET 2:440/4.0 
