boxlang-java-integrationlisted
Install: claude install-skill ortus-boxlang/skills
# BoxLang Java Integration
## Overview
BoxLang compiles to Java bytecode and runs on JRE 21+. It has 100% Java
interoperability — any Java library, class, or framework can be used directly
from BoxLang code. Type conversion between BoxLang and Java types is automatic
in most cases.
## Creating Java Objects
Prefer `new java:fully.qualified.ClassName()` over `createObject()`. Both work,
but the `new java:` syntax is more concise and idiomatic BoxLang.
```boxlang
// PREFERRED — new java: syntax
var list = new java:java.util.ArrayList()
var map = new java:java.util.HashMap()
var sb = new java:java.lang.StringBuilder()
// Also valid — createObject (verbose, legacy style)
var list = createObject( "java", "java.util.ArrayList" ).init()
var map = createObject( "java", "java.util.HashMap" ).init()
// With constructor args
var list = new java:java.util.ArrayList( 100 ) // initialCapacity
var sb = new java:java.lang.StringBuilder( "Hello" )
```
> **Tip:** When you need a class frequently in a file, use `import java:` at the
> top (see below) so you can refer to it by short name.
## Static Methods and Fields
**Best practice: import the class, then call statics directly.**
Avoid repeating `createObject()` on every call — it creates a new wrapper each time.
```boxlang
// PREFERRED — import once, call freely
import java:java.util.UUID
import java:java.lang.Math
import java:java.lang.System
var id = UUID.randomUUID().toString()
var pi = Math.PI
var sqrt2 = M