BoxLang Dynamic JVM Language v1.9.0 Released

Ortus Solutions, a leading innovator in professional open-source development, today announced the release of BoxLang 1.9.0, a major stability and compatibility release focused on production-readiness. This release resolves over 50 critical bugs and introduces significant enhancements to datasource management, context lifecycle handling, and web form processing for mission-critical enterprise applications.

Production-Ready Enhancements

BoxLang 1.9.0 delivers critical improvements based on real-world client migrations and production deployments:

  • Robust Connection Updates: Complete datasource lifecycle management eliminates connection pool exhaustion across application restarts
  • Memory Leak Prevention: Enhanced context cleanup with proper thread tracking and resource disposal
  • Modern Web Standards: Automatic array-based form field parsing using contemporary naming conventions
  • Enterprise Database Support: Comprehensive Oracle, MySQL, and PostgreSQL improvements including named parameters, ref cursors, and query-of-queries enhancements
  • Fluent SOAP Integration: Enhanced SOAP client with automatic WSDL discovery and intelligent type conversion

Array-Based Form Field Parsing

BoxLang now automatically parses query parameters and form fields as arrays using modern naming conventions:

// HTML form with multiple selections
<form method="POST">
    <input type="checkbox" name="colors[]" value="red" />
    <input type="checkbox" name="colors[]" value="blue" />
    <input type="checkbox" name="colors[]" value="green" />
    <button type="submit">Submit</button>
</form>

// BoxLang automatically parses as array
selectedColors = form.colors;
// Result: ["red", "blue", "green"]

// Works with query parameters too
// URL: /page?tags[]=boxlang&tags[]=java&tags[]=modern
tags = url.tags;
// Result: ["boxlang", "java", "modern"]

Datasource Lifecycle Management

Critical fixes prevent connection pool leaks and resource exhaustion:

class {
    this.name = "MyApp";

    this.datasources = {
        "mydb" : {
            driver : "mysql",
            host : "localhost",
            database : "appdb",
            username : "user",
            password : "pass"
        }
    };

    function onApplicationEnd() {
        // Datasources properly shutdown automatically
        // No more connection pool leaks!
        writeLog( "Datasources cleaned up automatically" );
    }
}

Oracle Database Improvements

Named parameters and ref cursors now work correctly:

// Named parameters work correctly
queryExecute(
    "SELECT * FROM users WHERE id = :userId AND status = :status",
    {
        userId : { value : 123, type : "integer" },
        status : { value : "active", type : "varchar" }
    },
    { datasource : "oracle_ds" }
);

// Ref cursor parameters work regardless of position
bx:storedproc procedure="getUserData" datasource="oracle_ds" {
    bx:procparam type="in" value=123 type="integer";
    bx:procparam type="out" variable="result" type="refcursor";
}

Enhanced SOAP Client with Fluent API

BoxLang 1.9.0 includes major enhancements to the SOAP client introduced in 1.8.0, now with full class capabilities and improved reliability:

// Create SOAP client with fluent configuration
ws = soap( "http://api.example.com/service.wsdl" )
    .timeout( 60 )
    .withBasicAuth( "apiuser", "apipass" )
    .header( "X-API-Key", "your-key" );

// Invoke operations with automatic type conversion
result = ws.invoke( "GetCustomer", { customerId: 123 } );

// SOAP client now has full class structure
ws.setTimeout( 30 );
ws.setHeader( "Authorization", "Bearer token123" );

// Inspect available operations programmatically
operations = ws.getOperationNames();
if ( ws.hasOperation( "ProcessOrder" ) ) {
    order = ws.invoke( "ProcessOrder", orderData );
}

Key SOAP Improvements:

  • Automatic WSDL Discovery: Parses operations, parameters, and types automatically
  • Intelligent Type Conversion: SOAP XML types automatically become BoxLang types
  • Full Class Capabilities: Access underlying HTTP methods and configuration
  • Operation Inspection: Programmatically discover and validate operations
  • Enhanced Reliability: Improved error handling and connection management

Technical Specifications

50+ Critical Bug Fixes including:

  • 15+ CFML compatibility fixes for CFML applications migrating to BoxLang (ListDeleteAt, ListAppend, Boolean strings, Session IDs)
  • Enhanced file operations and upload handling
  • Date/time parsing improvements
  • Session and cookie management fixes
  • Core runtime optimizations
  • Database and ORM enhancements
  • Memory and threading improvements
  • Number handling and JSON serialization enhancements

The complete engineering release notes are available at: https://boxlang.ortusbooks.com/readme/release-history/1.9.0

Availability and Licensing

BoxLang 1.9.0 is available immediately for download at https://www.boxlang.io/download with installation guides at https://boxlang.ortusbooks.com/getting-started/installation

BoxLang operates under a transparent three-tier licensing model:

  • BoxLang (Apache 2.0): Free, open-source core
  • BoxLang+: Enterprise features with basic support
  • BoxLang++: Enterprise features and support

All tiers feature straightforward pricing with no hidden fees or complex calculation models.

About BoxLang

BoxLang is a modern, dynamic, multi-runtime JVM language and framework. Backed by Ortus Solutions’ 20 years of professional open-source expertise, BoxLang delivers enterprise-grade reliability for mission-critical applications while maintaining full compatibility with existing CFML codebases.

About Ortus Solutions

Ortus Solutions is a leading provider of professional open-source software with two decades of experience in enterprise application development. The company specializes in JVM languages, web frameworks, and modern development tooling for Fortune 500 companies and government agencies.


https://www.boxlang.io
https://www.ortussolutions.com

Learn More:


Total
0
Shares
Previous Post

Elasticsearch Java SDK: No Magic, Just Solid Design Choices

Next Post

Sarcasm-as-a-Service: Five Years Later

Related Posts