Re: [tcljava-user] Some questions ( no HTML now )
Brought to you by:
mdejong
From: Mo D. <md...@cy...> - 2001-05-20 21:03:39
|
On Sun, 20 May 2001, Jesus M. Salvo Jr. wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > My apologies to everyone on the list ( and to Mo ). I was using the mail > gateway to my mailbox at work, and apparently there was no option to turn on > or off HTML formatting ... and all the while I thought things were being sent > as plain text. So I am sending the questions again using a new subscription > with my home e-mail address. > > I am a Java developer, with some basic knowledge of Tcl. I am intersted > mainly in Tcl calling Java methods. In the end, I want to use it with > Vignette's StoryServer. > > I have recently downloaded and tried TclBlend on both linux and Solaris, and > they worked as expected. > > However, I still have some few questions that I cannot find in the FAQ. > > 1) In the man page for "package require java", it said that "Tcl will create > a JVM in Tcl's process space". What does this exactly mean? In both linux and > solaris, when I call "package require java" in a Tcl shell, I cannot see a > java process runnning ( even with linux's "ps axf" command ). That is because the Tcl process loads the JVM shared libs into the Tcl process and creates a JVM in the same process. There would only be one process at that point. > To be honest, I > was expecting a Java process somehow as a child of the tcl process, but that > does not seem to be the case. What are the differences ( and implications ) > between what I was expecting and what tclblend actually does? Using two processes would mean that Tcl <-> Java communication would be slow since IPC would be required. Also, why would you want to do that when the JNI api is already a standard part of Java? > D.J.: You mentioned that they would show as child processes with linux's "ps" > command. However, I tried that several times .... within a tclsh just after > "package require java", after a "[java::new ]" .... and I do not see such > child processes. > > > 2) How many JVMs are created within the lifetime of the tcl process? For > example, if multiple tcl scripts have a "package require java" as the first > line of each of the script, will each call to "package require java" create a > new JVM? There is only 1 JVM. > 3) This last question maybe a bit offtopic ... but with StoryServer ( SS ), a > SS template can be called multiple times by different browsers at the same > time ( multi-threaded ). Within Vignette's installation page for TclBlend, > the TclBlend binary distribution does not seem to be any different ( e.g.: no > proprietary extension seems to be required or installed to make TclBlend work > with SS ). With this regard ( threading ), will each call to the templatec > reate a separate JVM? > > Probably a better way to ask question [3] is: If I was doing threading in > Tcl, will each thread run its own JVM? There is only 1 JVM, multiple threads can talk to the JVM in a thread safe way. If you are dealing with threads, the 1.3 dev version in the CVS is the only way to go. It includes a lot of threading changes that fix some of the more nasty problems in the 1.2 series. Of course, 1.3 is not yet ready for prime time. More testing of the thread changes is needed before it can be called "stable". If folks are interested in speeding up the "stable" release, by all means get involved in the 1.3 development process. Mo |