The Java Learning Machine (JLM) is a free platform to teach programming in general, and Java in particular. This is a Java program allowing to discover the concepts of programming through interactive exercises. It was developed in collaboration with Gérald Oster for our teaching at ESIAL. Further details are given within the program itself.
Screenshots
Download
You can download the program as jar archive from here: jlm-20120319.jar. Afterward, you can run it with
java -jar jlm-20120319.jar
On problem, give the older versions a try: jlm-111013.jar or even jlm-111006e.jar
Another possibility is to run it directly as JNLP from Gérald's page. Beware, getting it working under Linux seems ... challenging. Note that the jar and jnlp versions can differ a bit since they are not maintained by the same person. http://www.loria.fr/~oster/jlm/jlm.jnlp.
Publications
For now, only this Research report describing the motivation and design goals the environment is available. It was unsuccessfully submitted to SIGCSE'11. I hope you will find it useful anyway, but if you have any advice to improve it for the next SIGCSE conference, I'd be more than grateful.
FAQ
What should I install to use JLM?
You need Java 6. On debian/ubuntu, you need the package sun-java6-jdk.
Will it work on Windows? Mac? Linux?
We develop this program using Linux and Mac, so it works perfectly on these platforms. We also regularly use it on Windows, so it should work also.
How to import the work session done on another machine?
You need to retrieve the file ~/.jlm/jlm-save.zip from the machine where you worked so far, and copy it at the same location on the machine where you want to work now.
Where can I find the sources
On the GitHub project. Patches are always welcomed; we'd be glad to give write access if you need it.
Configuring JNLP under Linux
On ubuntu/debian, you need to edit the file /usr/lib/jvm/java-6-sun/jre/lib/security/java.policy to add the following lines to the rights granted to every site:
permission java.util.PropertyPermission "nonBatchMode", "read"; permission java.util.PropertyPermission "useJavaUtilZip", "read"; permission java.util.PropertyPermission "checkZipIndexTimestamp", "read"; permission java.util.PropertyPermission "java.endorsed.dirs", "read";
I have a problem. What should I do?
Please fill a bug on the dedicated github page so that your remark don't get lost. Alternatively, contact either Gérald or me.
I would like to add more exercises
You need to modify the source code for that, so see the above question.
I would like to use that tool in my institution
No problem. Please drop us a mail. The tool is distributed under the GPL license.
Related work
Here are some cool other projects that ressemble more or less to JLM. I'd love to find the time to steal some good ideas, or merge the efforts if possible. If you know other projects, please drop me an email so that I add it here.














