Online Chat Sessions

Transcript of jlinker chat

Transcript of jlinker chat

Martin 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://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://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://franz.com/support/documentation/6.0/doc/jlinker.htm
http://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://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 [email protected] -- 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 [email protected] 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.

Copyright © Franz Inc., All Rights Reserved | Privacy Statement Twitter