Step 6 - How to Embed into Other Software
As an extra advanced step, let's embed RINPn's processing engine into your own application!
You can integrate the scripting and calculation engine used in RINPn,
known as the "Vnano Engine,"
into your own Java™ applications. Let's get started!
Example Code
Here is an example code that calculates the value of the expression "1.2 + 3.4" using settings similar to those in RINPn:
import org.vcssl.nano.VnanoEngine;
import org.vcssl.nano.VnanoException;
import org.vcssl.nano.interconnect.ScriptLoader;
import org.vcssl.nano.interconnect.PluginLoader;
import java.util.Map;
import java.util.HashMap;
public class EmbedUseExample {
public static void main(String[] args) throws VnanoException {
////////// Preparation of Vnano Engine: Begin //////////
// Initialize the Vnano Engine
VnanoEngine engine = new VnanoEngine();
// Configure engine options (for details, see Settings.txt)
Map<String, Object> optionMap = new HashMap<String, Object>();
optionMap.put("EVAL_INT_LITERAL_AS_FLOAT", true);
optionMap.put("EVAL_ONLY_FLOAT", true);
optionMap.put("EVAL_ONLY_EXPRESSION", true);
optionMap.put("UI_MODE", "CUI"); // For CUI applications
// optionMap.put("UI_MODE", "GUI"); // For GUI applications
optionMap.put("ACCELERATOR_ENABLED", true);
optionMap.put("ACCELERATOR_OPTIMIZATION_LEVEL", 0);
engine.setOptionMap(optionMap);
// Set permissions for plugins that support permission features
Map<String, String> permissionMap = new HashMap<String, String>();
permissionMap.put("DEFAULT", "ASK"); // For asking to users by default
// permissionMap.put("DEFAULT", "DENY"); // For denying by default
// (Here add permission items you want to allow, as follows)
// permissionMap.put("FILE_READ", "ALLOW");
engine.setPermissionMap(permissionMap);
// Load plugins
PluginLoader pluginLoader = new PluginLoader("UTF-8");
pluginLoader.setPluginListPath("./plugin/VnanoPluginList.txt");
pluginLoader.load();
for (Object plugin: pluginLoader.getPluginInstances()) {
engine.connectPlugin("___VNANO_AUTO_KEY", plugin);
}
// Load library scripts
ScriptLoader scriptLoader = new ScriptLoader("UTF-8");
scriptLoader.setLibraryScriptListPath("./lib/VnanoLibraryList.txt");
scriptLoader.load();
String[] libPaths = scriptLoader.getLibraryScriptPaths(true);
String[] libScripts = scriptLoader.getLibraryScriptContents();
int libCount = libScripts.length;
for (int ilib=0; ilib<libCount; ilib++) {
engine.registerLibraryScript(libPaths[ilib], libScripts[ilib]);
}
////////// Preparation of Vnano Engine: End //////////
// Calculate and output the result
String input = "1.2 + 3.4";
double x = (double) engine.executeScript(input + ";");
System.out.println("Output of the Vnano Engine: " + x);
// Unload resources
engine.unregisterAllLibraryScripts();
engine.disconnectAllPlugins();
}
}
How to Compile and Execute
To compile the example code, add the Vnano Engine's JAR file, "Vnano.jar" (included in the RINPn package), to the classpath:
# For Microsoft Windows
javac -cp ".;Vnano.jar" -encoding UTF-8 EmbedUseExample.java
# For Linux and other systems
javac -cp ".:Vnano.jar" -encoding UTF-8 EmbedUseExample.java
Once compiled successfully, the "EmbedUseExample.class" file will be generated. Execute it with the following command:
# For Microsoft Windows
java -cp ".;Vnano.jar" EmbedUseExample
# For Linux and other systems
java -cp ".:Vnano.jar" EmbedUseExample
The result will display:
Output of the Vnano Engine: 4.6
This confirms the correct calculation of the expression "1.2 + 3.4", which results in "4.6".
Within the expression, you can utilize functions from libraries or plugins.
Additionally, instead of just an expression, you can pass Vnano script content to the "executeScript(...)" method of the script engine.
License and Detailed Information about the Vnano Engine
The Vnano Engine is open source software released under the MIT License,
allowing free use for both commercial and non-commercial purposes, similar to RINPn.
For more detailed information, including guides and specification documents, visit the official Vnano website:
- Vnano Official Website
- https://www.vcssl.org/en-us/vnano/
- Trademarks/Credits -
- Oracle and Java are registered trademarks of Oracle and/or its affiliates.
- Microsoft Windows is either a registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries.
- Linux is a trademark of linus torvalds in the United States and/or other countries.
- Other names may be either a registered trademarks or trademarks of their respective owners.