One way that sometimes works is to run the computation on computers
you own, and giving the clients a thin wrapper that sends data on the
internet or something like that.  Of course, there are many cases when
you can't do this because of some requirements, like very large data,
fast response time needed, or secret input data.

Another way you can try is to choose a suitable other programming
language runtime implementation (interpreter or compiler) and fake
that your program is written in that.  Give a binary that has the J
dll statically compiled in it, but all other dlls dynamically loaded:
then take any given runtime environment, check what dynamic libraries
programs compiled with it use, and load all those libraries (even if
you don't use any code from them), but not many other libraries.  When
the program gives an error or warning message, make that message
formatted like those that programs with that environment usually give.
 You can even choose an interpreter that uses a stop-the-world garbage
collector and prints a message after every garbage collection: fake
the messages and the pauses too if they're noticeable.  For best
results, you could even use that environment to actually write some of
the program in, but in that case, still make sure to catch J errors
and transform them to error messages of that environment, and link the
J dll statically.  Choose an environment with gui with a noticeable
look and feel (but not java because J has a java gui) and write the
gui in that instead of in J.  Invent other ways to fake that other
environment that look convincing but don't actually make the program
quality worse: for example, if you choose perl and have a string input
field that can be either empty or an alphabetic string, make it treat
"0" as if the field was empty (I have seen such behaiviour on some
webpage).

Hope that helps,

Ambrus
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to