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

Reply via email to