|
|||||||||||||
|
|
|
|
|
|
|
|
|
||||||
|
|
|||||||||||||
![]() ![]() ![]() ![]() ![]() ![]() |
Online Chat SessionsTranscript of jlinker chatMartin Mikelsons -- (9:58:40 PDT)Hello Everybody, Welcome to the jLinker chat. We will start officially in a few minutes. nichael -- (10:03:02 PDT) A quick question before we start. Will this session (or a transcript) be generally available later? Martin Mikelsons -- (10:04:04 PDT) What is jLinker? jLinker is A Dynamic Link between Lisp and Java With jLinker, Lisp may call any (public) Java method - the method may be called as-is, no modification, sub-classing, or wrapping is required. Java method does not need to know that Lisp is the caller. Similarly, Java may call unprepared, unsuspecting Lisp functions. Default transfer of arguments and data is by value for primitive types (char, int, float, String) and by reference for all other data. The transcript will be archived and available later. nichael -- (10:05:43 PDT) I notice in the download that there are a number of Java files in the system. Can you say something about what is in these? Martin Mikelsons -- (10:06:33 PDT) Let us call this the official start... hcchang -- (10:08:23 PDT) How do you compare jLinker to CORBA especially from performance point of view? Martin Mikelsons -- (10:11:20 PDT) jLinker vs CORBA... Martin Mikelsons -- (10:11:31 PDT) We see jLinker as a light-weight solution for situations where the full power (and weight) of Corba is not required. In jLinker we try to take advantage of the dynamic features in both Lisp and Java to create a more efficient connection. nichael -- (10:11:54 PDT) re: download On the demo page http://www.franz.com/ftp/pub/misc/jlinker/ there is a pointer to a zip file containing the demo. hcchang -- (10:12:03 PDT) Can we receive a transcript of this chat at the end? Lisa -- (10:13:10 PDT) Yes, a transcript will be available. I'll send the URL to everyone. You can also pull up the transcript from past sessions at: http://www.franz.com/services/online_events/ Martin Mikelsons -- (10:13:27 PDT) The initial implementation of jLinker was actual through a CORBA interface. In our experience the direct link is much faster. nichael -- (10:13:46 PDT) re: dowload specificialy there is a file jlinker.jar hcchang -- (10:14:30 PDT) what do you mean by "direct link"? Martin Mikelsons -- (10:14:38 PDT) The zip file in the demo directory is a bundle of all the files in the directory (for easier download). The Java fiels are Java code for the applet. Samir Sekkat -- (10:15:05 PDT) Can you give some numbers to the performance difference between jLinker and Corba communication Martin Mikelsons -- (10:15:22 PDT) The jlinker.jar file in the demo dir is the same jlinker.jar that we ship with ACL. Martin Mikelsons -- (10:16:19 PDT) By direct link we mean a private socket connection that does not use the CORBA protocol. nichael -- (10:16:37 PDT) re: jlinker.jar So, in short, these are files that need to be loaded into Java in order for jLinker to talk to it. hcchang -- (10:17:01 PDT) is there any way to have multiple "lisp connections" from within Java? rsf -- (10:17:41 PDT) also multiple java connection to a single lisp Martin Mikelsons -- (10:17:57 PDT) re: jlinker.jar Yes, there is a Java component to jLinker, There are several Java classes that supply necessary functions to implement the interface. dica -- (10:18:34 PDT) such as.. what? Martin Mikelsons -- (10:19:25 PDT) re: multiple "lisp connections" There can only be one connection to Java because the implementation makes heavy use of static class fields. The Lisp side can handle any number of connections from separate Java engines. ben -- (10:20:22 PDT) What types of values can be sent from lisp to java? What are the java analogs to atom and list? hcchang -- (10:20:24 PDT) It appears there is no way to create and pass an array of records as argument. Martin Mikelsons -- (10:20:36 PDT) The public classes and methods in jlinker.jar are described in the jLinker documentations. jLinker documentation: http://www.franz.com/support/documentation/6.0/doc/jlinker.htm http://www.franz.com/support/documentation/6.0/doc/faq/faq-entries/faq4-11.htm Martin Mikelsons -- (10:22:19 PDT) re: What types of values Primitive data types are passed by value to the corresponding Java types. Lisp integer -> Java int Lisp string -> Java String ... nichael -- (10:22:40 PDT) re: java-component of jLinker Can you say something about the design decision to use a specific, lisp-based (and proprietory) protocol? As opposed to, say, connecting through the Corba (as mentioned earlier) or the Java RMI or Object/DataStream protocols. Martin Mikelsons -- (10:23:21 PDT) All other data is passes as a remote reference. In Java this is an instance of the class TranStruct. There are methods to handle these instances. Martin Mikelsons -- (10:25:09 PDT) Two main reasons for not using CORBA: 1. To avoid dependency on third party software 2. To simplify the protocol for more efficient data transfer Mike Hinchey -- (10:25:43 PDT) Is there a way to serialize larger data structures to avoid multiple calls back and forth? Martin Mikelsons -- (10:27:43 PDT) The initial release may pass arrays of integers and of Strings from Java to Lisp by value. We will be releasing a patch to allow this in both directions soon. hcchang -- (10:28:01 PDT) The error recovery from java -> lisp calls that fail is poor: it appeared to hang the connection in some cases. Martin Mikelsons -- (10:30:06 PDT) re:error recovery from java -> lisp This may be a bug that should be fixed. We initially conceived of jLinker as a way for Lisp to call Java methods. The reverse direction came later and has not been used as heavily. hcchang -- (10:31:35 PDT) the interaction between java and lisp calls and the lisp debugger and emacs is not obvious. Martin Mikelsons -- (10:32:08 PDT) Near term plans for jLinker: A patch release should be ready in a few weeks - additional Java accessors for wrapped data - support for all primitive data types in transfer objects - full bi-directional support for vectors of integers, floats and strings - immediate references to Lisp symbols, symbol values, functions, and classes - handle "long" integers - more efficient transfer of methods and constructors - more documentation maree -- (10:32:27 PDT) if i have the choice about the langage, should i pass an array of floats from lisp to java with jlinker or should i use foreign C function mechanism ? i mean, which is more efficient ? Martin Mikelsons -- (10:33:16 PDT) There is no specific integration between jLinker and emacs. hcchang -- (10:34:39 PDT) How do you do interactive debugging of a lisp application from Java swing application? Martin Mikelsons -- (10:34:45 PDT) re array of floats... Passing an array of floats with jLinker (after the announced patch release) should be as efficient as any other method. nichael -- (10:35:49 PDT) re: not using Corba I see the advantage of not having third party software. How about using the native Java protocols (e.g. RMI, or the Object/DataStreams). This would have the advantages of 1] there would not need to be any extensions to Java; 2] the Lisp system could directrly read and write Java-data (e.g. data files) 3] The Lisp system could immediately communicate with any system that used the Java protocols 4] finally, many of the questions raised above (e.g. arrays of floats, etc) would be automatically available In short, the Java-protocols are well established. Mike Hinchey -- (10:36:49 PDT) Are there any javadocs for the Java API? Or just what's in the doc links you mentioned earlier? Martin Mikelsons -- (10:37:06 PDT) Debugging is difficult. At present, we have no specific debugging aids in jLinker. We could use suggestions in this area. hcchang -- (10:37:56 PDT) What are the implications of jLinker being single threaded in general and in the context of swing applications? Martin Mikelsons -- (10:38:59 PDT) My objections (or reservations) about RMI were that it leans too heavily in the by-value direction. There are many advantages to passing pointers if you can keep track of their validity effectively. nichael -- (10:40:14 PDT) re: pointers This would seem to imply that the Java-module and the Lisp-module need to be on the same machine. Is this correct? Martin Mikelsons -- (10:40:19 PDT) jLinker is not particularly single threaded - it only restricts each Java vm to one connection to one Lisp. This is a restriction that my be removed in the future. Martin Mikelsons -- (10:41:34 PDT) By pointers, I simply mean remote references, not shared memory. hcchang -- (10:41:46 PDT) How many real-world applications are using jLinker? Could we contact people who are using jLinker as reference? Martin Mikelsons -- (10:43:09 PDT) re javadocs... There is only the documentation in the links I mentioned. We did not comment the Java code with the javadoc conventions (sorry). Lisa -- (10:44:22 PDT) The product has only been out for about a month so we really don't have any good examples to share...please let me know if you have one and we'll write an application story about it! rsf -- (10:45:06 PDT) javadocs --- I would urge to add javadocs comments --- it is a very nice feature of java. hcchang -- (10:45:11 PDT) What are security considerations in jLinker? Martin Mikelsons -- (10:47:33 PDT) More on RMI... Certainly, there are advantages to plugging into an existing spec or technology. But there are alos problems - one is the difficulty in tracking a moving target. Another is the need to buy into the specific focus of the other technology. ben -- (10:48:03 PDT) Does the lisp code that java calls need to be compiled, or will it be interpreted on the fly? Mike Hinchey -- (10:48:30 PDT) javadocs -- I agree. I am doing primarily java-to-lisp, and the regular docs are difficult to navigate. I ended up relying on the reflection capabilities of my IDE to figure out the API. Martin Mikelsons -- (10:49:08 PDT) re security... jLinker has no security features at this time. We simply make a socket connection between Lisp and Java. With a small extra effort, we could convert to ssh. Actual authentication or encription issues are best left to the application. hcchang -- (10:50:06 PDT) How easy it would be to migrate the code for CORBA to jLinker and vice versa? Martin Mikelsons -- (10:50:08 PDT) There are no restrictions on the Lisp code that Java may call. When it happens it is simply a call to apply. Martin Mikelsons -- (10:51:33 PDT) We were quite surprised by the heavy interest in the Java-to-Lisp direction. As I said, initially it was a Lisp-to-Java too entirely. We will definitely focus more attention on the Java-to-Lisp direction. nichael -- (10:51:52 PDT) re: buying into other technologies. This is a bigger question than this discussion, so we shouldn't go down this road at the moment. But a feature that allowed a Lisp system to buy instantly into as well-established a "technology" as any existing java-system out there, would not necessarily be a bad thing. Mike Hinchey -- (10:52:06 PDT) Did I read somewhere about EJB support similar to the Servlet support? Mike Hinchey -- (10:54:18 PDT) I found it: http://www.franz.com/support/documentation/6.0/doc/jlinker.htm#applets-2 This is still a future feature? Martin Mikelsons -- (10:55:00 PDT) re: buying into other technologies I am usually a big support of this - in this particular situation it seemed more efficient to avoid the cumbersome baggage that Corba implies Martin Mikelsons -- (10:56:27 PDT) re migrate the code for CORBA to jLinker ... Initially, we migrated the jLinker implementation from Corba to our own protocol. There are still many Corba-like remnants in the design. Martin Mikelsons -- (10:57:25 PDT) The applet support is in the released product now. Some applet features are only in the Enterprise Edition. Martin Mikelsons -- (10:58:05 PDT) We are thinking about EJB issues but right now there is no specific EJB support. hcchang -- (10:58:33 PDT) re: CORBA migration: how easy would be for us to migrate our code from CORBA to jLinker? Martin Mikelsons -- (10:58:48 PDT) Some future directions we are considering: - more efficient access to fields (esp static final) - optimize transfer of data between Lisp and Java (avoid sending redundant information) - multi-dimensional arrays? - recursive callbacks? - more examples and documentation - YOU TELL US Mike Hinchey -- (11:00:08 PDT) Is there a specific e-mail for us to send jLinker questions and suggetions? Lisa -- (11:01:25 PDT) It's best to send jLinker questions/suggestions to support@franz.com -- just be sure to put jLinker in the subject line. nichael -- (11:01:26 PDT) Martin Thanks you very much. (I need to take off as well.) This has been most helpful (and useful). I look forward to learning more about jLinker and future discussions. the future. (One administrivia question: Do we need to do anything specific to log-out of the chat session?) Lisa -- (11:02:04 PDT) Just close the window to logout. Thanks for joining us! Martin Mikelsons -- (11:02:06 PDT) re: CORBA migration... it is hard to say in general how hard a particular migration might be. We could look at some examples of your Corba idl and maybe make an estimate from that. dica -- (11:02:15 PDT) tnks.. bye hcchang -- (11:02:36 PDT) How does jLinker scale up with increasing the volume of data being transferred? Martin Mikelsons -- (11:02:58 PDT) More futures... One area we have not explored very much is interaction between jLinker and JiL. JiL is a Lisp program that creates Java class files from an s-expression representation of Java programs). We were hoping to release JiL with 6.0 but just could not make it. We could use this to generate Java code on the fly - such as lumping common sequences to speed up internet applets. ben -- (11:05:17 PDT) Is it correct to assume that JLinker is cross-platform, both on the lisp and java side? Also, do the java class files JiL creates contain any windows specific code? Martin Mikelsons -- (11:05:30 PDT) re scale... As the volume of date increases, the speed of the connection becomes the main consideration. Large volumes of data should not cause non-linear performance problems in jLinker itself. Samir Sekkat -- (11:05:46 PDT) the jmeth macro ask us to specify the class of the arguments. what if the method on the java side is overriden? Is there any mechanism to get an automatic dispatching to the right method??? hcchang -- (11:05:48 PDT) it appears as if every jlinker call passes the full method name in a lisp->java call. This is a potential efficiency suggestion: "com.ktiworld.graphics.optview.VSolidNode.insertLoopData" is a pretty lengthy string to be sending every time I make a function call. Seems like some kind of "id" could be established once. Martin Mikelsons -- (11:09:23 PDT) The Lisp code and the Java code in jLinker were both written to be platform independent. We dont know of any Windows (or other platform) dependencies. The same should hold for JiL (but check with support@franz.com to make sure). Martin Mikelsons -- (11:11:56 PDT) re overridden... The current implementation invokes the most specific method starting at the class mentioned in jmeth. To be sure of getting overrides, one way is to make a dynamic call or to mention the class of the argument in jmeth Martin Mikelsons -- (11:12:54 PDT) re full method name ... You are absolutely right. There is no need to pass the method name at all once the method is resolved. Hope to patch this out very soon. rsf -- (11:13:09 PDT) I have to go. Is it ok to set messages to 100 and the update interval to 100 and leave it on so I can come back and read it later? Lisa -- (11:14:43 PDT) You can certainly do that. You might want to simply wait for the transcript, however. I think we're about to end the session anyway...questions seem to be winding down. thanks for joining us! Martin Mikelsons -- (11:14:49 PDT) I noticed a few of you were able to try the demo. Any reaction? Samir Sekkat -- (11:14:53 PDT) Is there any date for the first beta release of JiL? hcchang -- (11:15:23 PDT) It is conceivable to have Lisp use Java via lisp foreign-function interface. [i.e., load JVM shared library and run it from the "lisp program"]. The resulting Lisp/java connection speed would probably be more than 10x faster than the socket-based mechanism, since all data transfer would be within the same process and memory space. Does Franz have plans to create such a tight lisp/java connection product? Martin Mikelsons -- (11:15:37 PDT) I will keep the demo server running through the weekend, so that more people can try it. Lisa -- (11:16:27 PDT) JiL is in the works and should be release before 6.1. I'll make a note to send you an update email Samir Sekkat -- (11:17:02 PDT) About the demo, I had to download 8 MB for the Java Plug-In... Has jLinker been tested with the original vm's of Internet Explorer and Netscape? Martin Mikelsons -- (11:17:52 PDT) We considered a JNI interface but the jvm implementations we could look at seemed to cause serious memory allocation conflicts with Lisp. Making two dynamic memory allocation schemes working in the same address space is a big problem. Martin Mikelsons -- (11:18:50 PDT) I was not able to get the applet working in any built-in browser jvm. The socket implementation seemed to be unreliable or buggy. hcchang -- (11:20:14 PDT) Many thanks folks for this informative discussion, we have to go ... bye! Martin Mikelsons -- (11:20:19 PDT) Have I failed to answer any questions? It is easy to forget a question once it scrolls off the screen... Samir Sekkat -- (11:21:00 PDT) Are there future plans to support the built-in jvm's? For applications offered over the Internet? maree -- (11:21:41 PDT) When will the first patch of JLinker be available ? Samir Sekkat -- (11:22:07 PDT) I asked a question before about the difference of performance between jLinker and CORBA communication (some numbers please if available) Martin Mikelsons -- (11:22:34 PDT) re built-in jvm... At this point we have no plans. The builtin jvms seem to have fallen in disuse or would have been upgraded by now. Martin Mikelsons -- (11:23:28 PDT) re patch... cant give an exact date but hopefully in a couple of weeks. Martin Mikelsons -- (11:24:12 PDT) re numbers... Sorry, we dont have numbers, and usually dont give numbers as a matter of policy. maree -- (11:24:39 PDT) Will the JLinker source code be available ? Lisa -- (11:25:07 PDT) It's hard to get good benchmarks -- perhaps when I get an application story on jlinker we'll be able to give some benchmarks ben -- (11:26:22 PDT) I've got to run - could you give us the url where the transcript of this discussion will be? Martin Mikelsons -- (11:27:03 PDT) re source... It may be included in the source license agreement. Please check with your sales rep. Lisa -- (11:27:11 PDT) If there aren't any more questions, I think we'll close the chat session now. I'll send an email regarding a transcript as soon as it's available. Thanks for joining us! ben -- (11:27:37 PDT) Thanks for a great talk. See ya Samir Sekkat -- (11:28:20 PDT) Thank you for this very informative session... Bye... Time to stop working her in Germany! Martin Mikelsons -- (11:31:08 PDT) Thank you again for joining this discussion. It has been a pleasure to be moderator. Fair winds to all.
© 2008 Franz Inc - Privacy Statement |