I don't know Scheme and have been wanting to learn Clojure, Scala, etc, but came across Kawa and had some time to play with it last night. I haven't explored very much with it, and the above sketch is rather arbitrary and thrown together. I am looking into how it handles reflection and what could be done to assist live coding, as well as what sort of Lisp like structures can be derived.
I looked at Clojure based sketches, and it seems like this Kawa makes things more "clean" if there is such a thing, but was wanting the opinion of others on the topic, or if anyone knows more or has used Kawa at all.
The performance (well, mostly because of the new GLGraphics) is really great. Compiling to .class files works great as well.
Managed to get ToxicLibs working, and that can be found in the codebase. I think overall this is fun to play with, but may have the same challenges as the other such abstractions, namely that read-eval-loop interpreted code loops are a bit slow (although Kawa seems to have the ability to compile whole classes to bytecode from the command line, which is just as fast as regular java) but I have to keep playing with it. The style of the more popular Jython experiments, namely to have these ideas *within* processing vs. processing within this stuff is something I have yet to explore. Thank you for the great comments I've received elsewhere, and Processing is the best community I know of for sure.
Great project! So you can write a Processing sketch in any language supported by Kawa and it will run through the JVM?
It is also very nice you can load contributed libraries. BTW, there is a new stable release of GLGraphics (0.95) with some compatibility changes to make sure it works well with Processing 1.5. You should use this version of the library instead.
Oops! I saw the 0411 version some reason, will merge that in. Really there is nothing to this, you just include the jar basically, and then sort of learn the Kawa method of doing things. The XQuery stuff seems really curious and bizarre. I started this because I was googling around and was curious how it would play, and also something to learn, never been a big Emacs person either. I think you're ultimately at the mercy of what is possible in the bytecode, like all of these other sorts of JVM hackups. Thanks as always Andres for your work, hopefully you get told that more often than not.
[ERROR] Failed to execute goal on project prokawa: Could not resolve dependencies for project com.declarie.prokawa:prokawa:jar:1.0-SNAPSHOT: The following artifacts could not be resolved: org.gnu:kawa:jar:1.11, org.processing:processing-core:jar:1.5, net.sourceforge:GLGraphics:jar:0.95, org.processing:opengl:jar:1.5, org.processing:gluegen-rt:jar:1.5, org.processing:jogl:jar:1.5: Could not find artifact org.gnu:kawa:jar:1.11 in central (http://repo1.maven.org/maven2) -> [Help 1]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] For more information about the errors and possible solutions, please read the following articles:
I first installed the dependencies using the commands listed in maven_installs.txt, but I'm not very familiar with maven so maybe I'm missing some important step here... The output from core.jar installation seems to indicate that it does get installed (although with some warnings):
Ya know I don't understand Maven all that much either, but I'll list some things I do know that might help:
1. Maven2 is designed ideally that you would just make the pom.xml and maven goes out and automatically finds the all of your dependencies specified, and then puts those files in a .m2 folder in your profile. in my situation, i want to force a version, and even use libraries that maven can't find easily, so i wrote down those commands that i used.
2. I think what may be going on here is that the maven commands listed in that text file were executed in the root of the project directory. in my own project, i have all of the .jars used in the build in a lib/ folder, or even in their original install paths (as is the case for processing.core for me) ... so I executed the mvn install commands wherever those jar files were located.
What I think is happening for you is that you don't specify the full location path of the jar when you do the mvn install is that it tries to execute a built-in template of an "installing" procedure (or something??) and tries generating the application (since it found a pom file there) ... or at least this is my best guess.
look for hints as to how my evironment was going by looking at the .gitignore and the shell scripts provide, which between them, unfortunately or fortunately, use just about every method of including code in a java commandline or jar.
... Another option would be to skip maven altogether, and just build a classpath and library path options to java that specify each and every class and jar... and then Kawa is sort of like jython or something where by default it is just a command interpreter. Look at the last bit of the shell scripts for the class name you have to specify last thing as a part of the java executable startup of the vm.
If you figure out anything, or find that I'm off base, please let me know. I'll try to think about how to make this better documented, or some kind of way to make this all just work. I would hate to have to check in the whole binaries to github, but is that done often? Anyway... thanks for trying it out, and letting me know of your experience.
I have pushed changes to the codebase to make all the maven stuff just a separate process, as I was using it just to simplify the class path and making standalone jars of all dependencies.
Now, however, all environment paths and such are in a file called "manual_environment" and the various scripts only contain the bare essential structures to combine those environment definitions into a running vm.
I hope this helps you, or any others reading. The big problem is that a solution needs to be found for Kawa's process. It has its own class for the interpreter and compilation. I'm sure there's an ant or maven plugin somewhere to make this seamless, but as for now, I'm hoping this shows what all you need to fix to get an environment up and going. The other option is to just code something in java that reads a specific file or something, but then you're sort of in the same boat if you want to specify more files.