Running BoxLang
BoxLang and the Multiverse!
Please check out our installation page to make sure you install the right runtime you want to deploy on. We are assuming you have it installed and boxlang
and boxlang-miniserver
are in your machine's path.
The script for *nix/Mac is boxlang
The script for Windows is boxlang.bat
BoxLang Home
By default, once you execute a boxlang
binary it will look for a BOXLANG_HOME
environment variable so it can be used as the home for the OS runtime. If you don't provide one, then by default, it will use the currently logged-in user's home folder + .boxlang
This is important because inside of the home folder, you can have several folders and files by convention that will be used for the runtime execution.
Please note that each runtime can have a different location for the BoxLang home. So make sure you read each of the runtime's docs to see where each goes.
Folder/FIle | Description |
---|---|
| Where all the compiled classes will be stored |
| Where configuration files are stored for the runtime |
| |
| Where global BoxLang classes and component templates can be stored for the entire runtime |
| You can place any *.jar files here, and they will be loaded into the runtime at startup. This is a great place to put third-party jars that will be available at runtime. |
| All log files will be stored here |
| Here is where the BoxLang modules are installed and will be available for the entire operating system binary. |
| The version information of the installed runtime. |
Start the REPL
The first thing you can do is start up the BoxLang REPL, make sure the insaller has added your installation directory to the PATH
system variable.
You can run one-off expressions from the REPL like so:
Press Ctrl-C to exit the REPL or type exit
or quit
Please note that the REPL remembers state, so you can use the variables you declare and build a mini-program with it.
Executing a File
You can also use the boxlang
binary to execute BoxLang or even CFML code. You can pass a second argument to the binary and it can be a relative (to the current directory you are on) or an absolute path to a file that you wish to execute.
Allowed files are:
*.bx -
A BoxLang class with amain( args=[] )
method*.bxs - A BoxLang script file
*.bxm - A Boxlang markup template file
If you are using the bx-compat-cfml
module for CFML Support:
*.cfs - A CFML script file
*.cfm - A CFML markup template file
Modify the same command you run above to execute the REPL but add a file path to the end. It can be absolute or relative to the current working directory.
Producing Output
As you navigate all the built-in functions and capabilities of BoxLang, let's learn how to produce output to the system console.
printLn()
- Print with a line breakprint()
- Print with no line breakwriteOUtput()
- Writes to the output buffer (Each runtime decides what it's buffer is. The CLI is the system output, the Web is the HTML response buffer, etc)
I get the output:
Hooray! You have executed your first script using BoxLang. Now let's build a class with a main( args=[] )
convention. This is simliar to Java or Groovy.
You can now call it with zero or more arguments!
One Off Code Execution
So, to give a quiet example of the --bx-code
flag here’s running some one-off code.
This assumes script, not templating tags.
Piping code
You can also pipe statements into the BoxLang binary for execution as well. This assumes script, not tags.
or
Command Line Arguments
If you interact with the boxlang
binary then you will be executing the BoxRunner
class in BoxLang. You can use several options and positional arguments to our runtime. Let's explore them.
Options
--bx-code "code here"
—This is used to pass ad-hoc code to execute. Provide code in the next argument, quoted.--bx-config
- Pass a path to a JSON file for BoxLang configuration. See Runtime Configuration for more information.--bx-debug
- Enable debug mode (more debug logs!)--bx-home
- Pass a path to a custom runtime home directory for storing modules, configuration, and more. See Runtime Home Directory for more information.--bx-printAST
- Prints out BoxLang AST in JSON format for code provided via the-c
flag (for debugging)--bx-transpile
- Prints out transpiled Java source that would be compiled to create the bytecode for the passed template path. (for debugging)--version
- Output the current runtime's version information
Positionals
script_path | class_path
- The template, class, or script to executeIf it's a class, it must have a
main( args )
method.
module:{name}
- The executable module to execute. This will execute a Modules'ModuleConfig.main( args )
method.{actionCommand: compile,featureAudit, cftranspile}
- If you send any of those action commands, we will execute those CLI tools
Using 3rd Party Jars
You can load custom third-party JARs at runtime by adding all your *.jar
to the BOXLANG_HOME/lib
folder. This will be loaded at runtime and available to use and integrate.
Environment Variables
The boxlang
binary will also scan for several environment variables as overrides to the execution process.
Env Variable | Purpose |
---|---|
| Override the |
| Enable or disable debug mode |
| Override the HOME directory |
| Print the AST |
| Tranpile the code |
At this point, you are done getting running with BoxLang. It's now your turn to write some code and get it running.
Last updated