Home  

Random  

Nearby  



Log in  



Settings  



Donate  



About Wikipedia  

Disclaimers  



Wikipedia





Draft:BoxLang





Draft  

Talk  



Language  

Watch  

Edit  





BoxLang
BoxLang Logo
BoxLang Logo
ParadigmMulti-paradigm: object-oriented, imperative, functional, aspect-oriented, scripting
Designed byOrtus Solutions, Corp
DevelopersLuis Majano

Brad Wood
Jon Clausen
Jacob Beers
Gavin Pickin
Alan Quinlan
Dan Card
Daniel Garcia
Eric Peterson
Esmeralda Acevedo
Grant Copley
Javier Quintero
Michael Born

Jaime Ramirez
First appeared16 May 2024 (2024-05-16)
Preview release

Beta 1.0/16 May 2024 (2024-05-16)

Typing disciplineDynamic, static, strong, duck
PlatformAndroid,

JVM,
JavaScript,
macOS,
iOS,
Linux,
Windows,
WebAssembly,

LLVM
OSCross-platform
LicenseApache License 2.0
Filename extensions .bx, .bxm, .bxs
Websiteboxlang.io
Influenced by
Java, Python, Ruby, Smalltalk, Groovy, Php

BoxLang is a modern, dynamic, and loosely typed scripting language for multiple runtimes, Java Virtual Machine (JVM) provides Object-Oriented (OO) and Functional Programming (FP) constructs, as well as dynamic Metadata Programming (MP). It is a professional open-source project based on the Apache 2 license. There are two subscription options for a professional license for the language and its runtime (web, IOS, android, web assembly, etc.), each offering different support levels, customizable SLAs (Service Level Agreements), custom patches, security notifications, enhanced features, and modules.

Overview

edit

BoxLang was created by Ortus Solutions Corp.[1] It is maintained by the company and a growing number of contributors.

It integrates key features from programming languages, including Java, ColdFusion, Python, Ruby, Go, and PHP, to equip developers with a modern, fluent, and expressive syntax.

Key features

edit

BoxLang is dynamically typed, which means there´s no need to declare types. It can perform type inference, auto-casting, and promotions between different types. The language adjusts to its deployed runtime and can add, remove, or modify methods and properties at runtime, making it highly flexible and adaptable.

BoxLang can be used to write adaptive code for any operating system, JVM, servlet container web server, cloud lambda functions, iOS, Android, or even the browser using our web assembly package. BoxLang is built on a versatile language core, making it deployable on almost any current or future platform.

BoxLang has a well-established ecosystem. Every Java and ColdFusion/CFML library is compatible with BoxLang. It comes with CommandBox, which serves as its package manager, server manager, task manager, and REPL tool.

BoxLang offers 100% interoperability with Java. It can extend and implement Java objects, use annotations, declare classes, imports, and more. Thanks to InvokeDynamic and the BoxLang Dynamic Object core, everything in BoxLang is fully interoperable with Java.

It is highly functional, fluent, and human-readable. It is highly expressive and has low ceremony.

BoxLang comes with an internal event bus that can be used to enhance the language's capabilities or those of any application. It´s able to listen to almost every aspect of the language, parser, and even the runtime, or collaborate using the user own events.

The system has internal caching capabilities, which can be customized with providers, object stores, listeners, and statistics.

It comes with various tools to assist developers in their work. It includes a Visual Studio Code extension for the language, providing features such as syntax highlighting, code debugging, code insight, code documentation, formatting, LSP integration, and more. Subscribers to the premium version receive additional tools, including enhanced debuggers, ColdFusion/CFML transformers.

It provides a centralized and portable way to define and manage scheduled tasks for user servers and applications.

It enables users to explore functional concepts such as immutability and higher-order functions to write robust code. BoxLang promotes code that is easier to maintain and less error-prone, thanks to its support for functional programming principles.

It's possible to add new built-in functions, template components, or modify existing functions on classes. This language also supports a Runtime Debugger, AOP aspects, and event listening within the language itself.

BoxLang supports a dual parser and transpiler for executing ColdFusion/CFML code natively. It is possible to run all ColdFusion applications within BoxLang natively. Additionally, it provides tooling that automatically transpiles ColdFusion code to BoxLang for Subscription users.

Professional open source project based on the Apache 2 license. Core features and Community Support.

Allows developers to write code in functions that trigger based on events and leave server management to the cloud provider.

Allows developers to modify the behavior of BoxLang classes and objects at runtime. It involves manipulating the way classes and objects respond to method calls, property access.

Examples

edit

Tag Syntax

edit
//myprogram.bxm
<bx:set s = new Sample()>
<bx:output>#s.hello()#</bx:output>

Script Syntax

edit
//myprogram.bxm
<bx:script>
s = new Sample();
writeOutput( s.hello() );
</bx:script>

To write in script in a tag-based file, the developer must use an opening and closing <bx:script> tag.

//Sample.bx
class{

function hello(){
return "Hello, World!";
    }

}

No types or visibility scopes are present. BoxLang can also infer variable types on more distinct variables like dates, booleans, or numbers. However, types can be used for this:

//Sample.bx
class{

public string function hello(){
return "Hello, World!";
    }

}

By default, the return type of every function and/or argument is any. Thus, it can be determined at runtime as a dynamic variable.

Semi-Colons

edit

Semi-colons are used to demarcate line endings in BoxLang ;. They can be optional, however. Also, the CommandBox REPL does not require semi-colons.

Tags In Script

edit

BoxLang allows tags to be written in script syntax. The developer basically eliminates the starting < and ending > enclosures and create a block by using the { and } mustaches.

Note: BoxLang uses Lucee's generic tag-in-script syntax

http method="GET" charset="utf-8" url="https://www.google.com/" result="result" {
httpparam name="q" type="formfield" value="test";
}

Playground

edit

Boxlang offers an interactive playground at Try Boxlang, where users can experiment with the language directly in their web browser.

References

edit
  1. ^ "BoxLang: A revolution led by rebels - An interview with Luis Majano, CEO of Ortus Solutions". S. D. Times. May 30, 2024.
edit
Categories:


Retrieved from "https://en.wikipedia.org/w/index.php?title=Draft:BoxLang&oldid=1232421306"
 



Last edited on 3 July 2024, at 17:08  


Languages

 



This page is not available in other languages.
 

Wikipedia


This page was last edited on 3 July 2024, at 17:08 (UTC).

Content is available under CC BY-SA 4.0 unless otherwise noted.



Privacy policy

About Wikipedia

Disclaimers

Contact Wikipedia

Code of Conduct

Developers

Statistics

Cookie statement

Terms of Use

Desktop