[erlang-questions] Use of Records in the Java API

Alexander Lamb alexander.lamb@REDACTED
Wed Jun 11 10:23:28 CEST 2008


Hello,

My Erlang modules are mainly a server to Java Web applications (for  
the time being).

This means that I am making a big use of the Erlang Java API which  
works fine.
Since my Erlang modules use Mnesia to store data coming from the Java  
side (and vice versa), I need to implement functions with many  
parameters for example to insert new data in a Mnesia table.
I also need to convert tuples into actual Java objects when reading  
data.

This would be simpler if the Java API had an OtpErlangRecord. It would  
make it possible to subclass it and could even be the prefered way of  
bridging the Erlang world with the Java world. It would also avoid  
breaking code each time a new attribute is needed for a Mnesia table  
(making it today necessary to add a parameter to the complete chain of  
function calls).

I didn't find any mention of OtpErlangRecord in the documentation. I  
suspect it is because the Java API was written before records were  
introduced in Erlang.

In a more general sense, is there any plan to enhance the  
functionalities of the Java API  to handle more gracefully the  
mismatch between the loosely typed functional world of Erlang and the  
object oriented world of Java?

I could very well imagine a Java class to handle marshalling and  
unmarshalling of terms at a high level using records. You would add a  
type description to the attributes and on the Java side you would  
immediately receive objects (subclasses of OtpErlangRecord for  
example). It could look somewhat like tools such as Cayenne or  
Hibernate in the SQL world.

Just some thoughts. And since in two weeks Dennis Byrne is making a  
presentation at Erlang Exchange on that subject, maybe if Dennis is  
reading this post, he could consider preparing a few words in that  
direction for his London speech:-)
That comment actually also applies if the client is in ActionScript  
for a Flash/Flex application or even JavaScript.

Alex



More information about the erlang-questions mailing list