JSoar is a pure Java implementation of the Soar kernel. Soar is a general cognitive architecture for developing systems that exhibit intelligent behavior.
Here is Soar running in a Java applet.
... [More]
Here is a screenshot of the debugger in action.
Benefits:
Something to do "Free" multi-language support (JRuby, Jython, Rhino, Groovy, Scala, etc) A codebase and tools more friendly to rapid research prototyping Cleaner integration with "enterprisey" systems 64-bit support
Possible Drawbacks:
Soar community too small to support two implementations
DocumentationFrequently Anticipated Questions JSoarDevelopersGuide - Start here if you want to check out and compile the source code JSoarUsersGuide - Start here if you want to use jsoar in a project Javadoc StatusChangeLog
The port of the base 9.0.1 kernel (i.e., the code in SoarSuite/Core/SoarKernel) is complete. See the links below for more details.
JSoarPerformance JSoarDebugger System Requirementsjsoar requires Java 1.6. It uses several features of Java 1.6 that are not available in earlier versions of Java. Please let me know (see contact info in right-hand panel) if you're interested in a supporting older versions of Java and I'll see what I can do. See also Java16FeaturesUsedByJSoar and RunningJSoarOnMac.
About the codeFor the most part, I'm currently concentrating on a direct port of CSoar with minimal refactoring along the way. This means that most members are public (or package private) just like the structs the classes are based upon. It will be easier to refactor once the whole thing is ported. You never know what horror lurks around the next corner. As an additional precaution, whenever possible I am marking members final and initializing in a constructor.
One convention I'm following is to include a string like this in the Javadoc for each method:
rete.cpp:1011:find_goal_for_match_set_change_assertionAlthough the filename and line number aren't that interesting, the method name is important. Once the port is complete, I'm going to go back through and rename methods to make them more Java-y. Preserving the original names in the comments allows us to go back later and keep track of where code went when moved from C to Java.
LinksSoar Home Page Soar Kernel Code Guide [Less]
Created
about 1 year
ago.