Luis Majano and Brad Wood talk about “BoxLang modern JVM language that runs CFML code (new CFML engine and much more)” in this episode of ColdFusion Alive Podcast with host Michaela Light.
“…BX is the acronym we use a lot like our file extensions are analogous to the cold fusion file extensions. So a CFM file, we call that bxm For box Lang markup, CMS, which Lucy six had his support for, which is cold fusion script”.
https://youtu.be/T59ElgfjuY8
Show notes
What is BoxLang?
A new language for the JVM that includes CFML
Inspired by cool CF, Groovy, Rust, Go, PHP etc
Compiles into Java byte code, just like CF
A new language for 2024 and beyond
Not just targeting web server - see below for all runtime targets
7 MB core
Tidy and lightweight core
Super fast start up time in 100-200ms
ACF core 120 to 300 MB
Lucee core 20 to 120 - 300 MB
Node 80 MB
Add on modules for different target runtimes
Similar in ideas to ACF and Lucee packages
Target runtimes
Web Server
Miniserver
Serverless
Jakarta
Android
Web assembly
Command line use
Modules are designed from the start vs separated out as in ACF or Lucee
Using tight Java libraries that are different from ACF or Lucee libraries
Drastic architecture differences
No OSGi copies
See below for what OSGi is
MVP for this language
Created to be extensive in the core from the start
Not a monolith
Super strict on 3rd party JARs added to the core due to features in the modern JDK
Oracle improvements in Java language and JVM
Java 21 or higher only
Other JVM that are based on Oracle JVM 21 or higher
Fixes old syntax and function naming inconsistencies from CFML backwards compatible
Has two parsers
Antler parser library for BoxLang code
100% legacy CFML code via transpiler
AST = Abstract Syntax Tree
This is what compiles to Java byte code
Linting and code quality metric tool and VS-code extension IntelliSense and semantics of the language.
Open source AST so easy to extend and hook into it.
In-line debugger is built in with scope introspection
Can innovate in BoxLang language without breaking legacy CFML
Transpiling
Dynamic and can continue to edit legacy CFML code
Or one-time translate to BoxLang language (BX)
Can you translate back from BoxLang to CMFL?
Not currently and technically it can be done - it is open source
The syntax is very close to CFML script and tags
Why bx vs cf script
Not tag first language - it is script first then adds components / class (aka tag)
What is it really?
JVM
100% interoperable with Java
No bridge like ACF or Lucee
Extend from Java classes
Import Java classes
Framework capabilities built into BoxLang
Event-driven programming
Event listeners and extension is built-in
Cache engine built-in
vs added on
Can talk to Redis and Couchbase
Async and parallel programming
Built into the core from Java
vs adding in Quartz Java library to do this
Easy unit testing of tasks
Keep the CFML productivities of RAD coding
BoxLang templating language
Like Groovy GSP
Most modern JVM language
More modern than ACF, Lucee OR all other JVM languages such as Groovy, Clojure, Kotlin, Rust etc
Super dynamic language with built-in dynamic concepts from the modern Java engine vs a 3rd party library
Comparison chart to other languages?
Coming in future
Why are most modern languages similar in appearance?
Common programming metaphors over time are used with similar syntax.
But under the hood, they are different engines
Tooling
IDE
Community
Is ACF or Lucee embedded in BoxLang?
No
ACF is closed source
Lucee - separate development. Chinese wall separation of BoxLang development.
Can see the full source code edit history in GitHub which shows it is not a fork from Lucee
What about QA on the language?
6000 automated tests in GitHub
Why did you create it?
A lot of work to make a new compiler etc
Alternatives not taken
Suggest features to ACF
Tried. Too radical a change
Have done for years. They have their own limitations.
Tickets exist for these feature requests
Pull requests to Lucee for a fork
Looked at this for several months
Lack of docs from the lead of the Lucee open-source project
Major architecture differences with a fresh start
Tickets exist for these features for years
New JVM language without the emotional baggage of taggy CF
Fast release cycles
Weekly release cycles
Lucee monthly releases
ACF annual release plus as needed hotfixes
CI process to immediate deployment
CommandBox can run different versions of BoxLang, just like it does for ACF and Lucee
What are you looking forward to at CF Summit?
Seeing other CFer
Teaching REST class
Ok to ask questions on the side and let’s respect Adobe CF conference is focused on ACF.
Addendum - What is OSGi
OSGi, or Open Service Gateway Initiative, is a Java framework that allows developers to create and deploy modular software programs and libraries. It's based on a set of specifications that define a component system for Java, and includes a standard for building modular components called bundles.
Here are some benefits of OSGi:
Loose coupling
OSGi focuses on loose coupling of functions, which allows for modular functionalities that can be easily moved between source codes.
Dynamic component model
OSGi implements a dynamic component model that allows applications to be remotely installed, started, stopped, updated, and uninstalled without requiring a restart.
Microkernel architecture
OSGi utilizes the concepts of a microkernel architecture, also known as a plug-in architecture.
Reusable components
OSGi allows developers to create applications from smaller, reusable, and collaborative components.
The OSGi Alliance was originally responsible for managing the OSGi framework, but in early 2021 the Eclipse Foundation took over the OSGi specification.
Mentioned in this episode
TeraTech’s BoxLang overview article
BoxLang Download - free download and paid options, plus lots of language info
BoxLang Full source code repo on GitHub plus docs and 1000s of test cases
Try BoxLang - similar to TryCF site to try out BoxLang code without having to install it first
BoxLang book - full docs and examples to get you going fast.
Listen to the Audio
Bio
Luis Majano
Luis Majano is a Computer Engineer who has been developing and designing software systems since 2000. During economic instability and civil war, he was born in San Salvador, El Salvador, in the late 70s. He lived in El Salvador until 1995 and then moved to Miami, Florida, where he completed his Bachelor of Science in Computer Engineering at Florida International University.
He is the CEO of Ortus Solutions, a consulting firm specializing in web development, BoxLang, Java development, and open-source professional services. He is the creator of ColdBox, ContentBox, CommandBox, WireBox, TestBox, LogBox, and anything "Box," and he contributes to over 250 open-source projects. He has a passion for learning and mentoring developers so they can succeed with sustainable software practices and the usage and development of open-source software. You can read his blog at www.luismajano.com
Luis is passionate about Jesus, tennis, golf, volleyball, and anything electronic. Random Author Facts:
He played volleyball in the Salvadorean National Team at the tender age of 17
His favorite books are The Lord of the Rings and The Hobbit (Geek!)
His first computer was a Texas Instruments TI-99 that his parents gave him in 1986. After some time digesting his very first BASIC book, he had written his own tic-tac-toe game at the age of 9. (Extra geek!)
He has a geek love for circuits, microcontrollers, and overall embedded systems.
He has, as of late, become a fan of organic gardening.
Links
Luis Majano | LinkedIn
Twitter
Ortus Solutions
Brad Wood
Brad grew up in southern Missouri and after high school majored in Computer Science with a music minor at MidAmerica Nazarene University (Olathe, KS). Today he lives in Kansas City with his wife and three girls. Brad enjoys all sorts of international food and the great outdoors. Brad has been programming ColdFusion since around 2002 and has used every version of CF since 4.5. He is a software engineer at Ortus Solutions, lead developer of CommandBox CLI, and open source contributor.
Links
CFML Slack Box Channel
Box Team Slack Channel
Brad's Website
Brad Wood | LinkedIn
Twitter
Ortus Community Forum
Techempower Nightly Builds
Interview transcript
Michaela Light 01:10
Hey, welcome back to the show. We're here on sea of life with two mega geniuses of cold fusion, Luis majano and Brad wood at water solutions. They're joining us actively Spain and from Kansas, so and I'm right now in Austin, Texas, so we're quite spread out here, but we're here today to talk about box Lang, the new cold fusion engine that is joins the stable of cold fusion engines, of Adobe cold fusion and Lucy, and it's now an alternative to that, which I think, and I'll tell you why I think it's really great thing to have for the Cold Fusion community later. But I'm going to let Luis and Brad talk about that. But before I do if you don't know who Luis is, he is the founder of all his solutions. He's behind a lot of those box products, cold box, you know, wire box, you name it. Box. It's got a box in it. He's probably had his hands in it, except for command box, which Brad.