DB= me, RM = Raul Miller
DB> (A) one that does NOT show the J session manager window
RM> Anyways, the session manager window is not brought up
RM> if a false parameter is passed to the constructor.
I didn't try the code (don't have a .Net development system
here), but scanned the code and noted that the calls
_jObject.Log(1);
_jObject.Show(1);
are constant (independent of the boolean parameter).
DB> (B) one that invokes JDLLServer instead of JEXEServer
RM> I'm not sure that the difference in footprint is all that significant.
>From http://www.jsoftware.com/help/user/j_ole_auto_server.htm
A DLL is part of the client application and uses the same
memory space, i.e. is an in-process server. A client accesses
DLL services almost as efficiently as it accesses its own
native services. The JDLLServer is not as convenient as
JEXEServer for development purposes, but it is very efficient
and is ideal for runtime applications.
That is: JEXEServer is an entirely separate process, with all the overhead the
requires; including the memory marshalling involved in IPC (which is
notoriously inefficient). But I'm no COM expert; you should gather empirical
data on your specific use case. Don't optimize prematurely. Using JDLLServer
is only worth it if you notice, in real life, that JEXEServer is too slow.
For one thing, you'll be using JES to develop and debug, and confidently
converting to JDS is not trivial. The JFE provides a lot of non-obvious
services. For example, you can't do asynchronous sockets in JDS. For another,
the standard library is not loaded by default, so utilities you might expect to
be defined (such as each_z_=:&.> ) are not.
DB> (C) A debugging constructor that invokes the JEXEServer
DB> shows the window, logs, and sets debug (with
DB> dbr 1[load'debug' and possibly sets latent debug
DB> expression with 13!:15 )
DB>
RM> The current constructor does all this
The current constructor does not use 13!:15 .
RM> except possibly "logs".
By log, I meant call _jObject.Log(1) which echoes every line executed via
Do() to the IJX window (which also will display its [non-assigned] result).
Nothing is written to file.
A final caveat: If you install a new version of J it will register itself as
the JES and JDS. Applications that depend on JDS or JES will break if the new
version is not backward-compatible, and those applications need not even be
recompiled. I made this mistake once when I was beta-testing J5, where my
existing apps depended on J4.
Keep this in mind when you install a new version of J. You can re-register the
old version to handle JES and JDS by running jreg.bat from that version's root
directory.
-Dan
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm