There's a new player in JVM-town and BoxLang has entered the scene.
It's easy to think that BoxLang is simply another Adobe ColdFusion clone, but it's so much more than that. While BoxLang for sure can run your CFML code, it contains a variety of architectural and language spec contstru...
There's a new player in JVM-town and BoxLang has entered the scene.
It's easy to think that BoxLang is simply another Adobe ColdFusion clone, but it's so much more than that. While BoxLang for sure can run your CFML code, it contains a variety of architectural and language spec contstructs that typical ColdFusion development hasn't seen before.
Let's spend some time and look at the language feature itself and how they compare against some of the more established players out there: JavaScript &TypeScript, Kotlin, Scala, Ruby and maybe even good, plain old Java. What's on offer from BoxLang when it comes to being more than a replacement or alternative for ACF or Lucee?
Join the battle of languages and find out!
Size: 1.19 MB
Language: en
Added: Jul 25, 2024
Slides: 48 pages
Slide Content
BoxLang vs the world
CFCamp 2024
Hello, my name is Kai
●Software Architect in the back end and mobile app space
●Work interests:
○CFML, JVM tech, Python, Ruby, AWS and Google Cloud and managing *nix-based infrastructure
platforms
○Android, Kotlin, Flutter and building SDKs
Agenda
“Let’s have a look at BoxLang vs
other languages and tech stacks”
BoxLang
●New language and runtime from Ortus
●Offers both tag and scripting language with a (very) high degree of
CFML-compatibility
●Dynamic language with optional type system
●Promoting modern Java interop and InvokeDynamic - no Java reflection
●Support for functional constructs like context-aware closures and lambdas
●Async/Futures/Tasks built-in
●Already in the alpha/beta releases much better tooling support than any other
CFML platform ever provided
●Small, lightweight and modular by design
●JSR-223 compliant
Why? Because these are popular, operate in a similar field of wider web
development and that’s what I use on a more or less day-to-day basis!
Java
●Published 1995/96
●Object-Oriented Programming language
●Statically-typed
●Platform-independent (“Write Once, Run Anywhere”)
●Robust memory management with automatic garbage collection
●Large ecosystem with many libraries and frameworks (e.g., Spring, Hibernate)
●Widely used for enterprise applications, Android app development, and
server-side programming
Kotlin
●Invented by JetBrains ~2010
●Statically-typed language that runs on the Java Virtual Machine (JVM)
●Fully interoperable with Java
●More concise syntax than Java, with features like null safety, extension
functions, and lambda expressions
●Officially supported by Google for Android app development since ~2018
●Growing ecosystem and adoption in server-side development
CFML/CFScript
●Scripting language primarily used for web back end development
●CFML is a tag-based language, while CFScript is its script-based syntax
●Integrates with various databases and provides built-in support for common
web development tasks
●Supports object-oriented programming (kind of)
●Existing ecosystem of libraries
●Primarily used in the ColdFusion/Lucee server environment
TypeScript
●Superset of JavaScript, adding optional static typing
●Mix of object-oriented and functional language paradigms
●Compiles down to plain JavaScript for execution in web browsers or Node- or
Bun-based runtimes
●Provides better tooling, code completion, and refactoring capabilities than
plain JavaScript
●Widely adopted in large-scale web application development, especially for
Angular and React projects
●Improves ability to catch errors during development rather than at runtime in
POJS.
Python
●Around since 1991
●High-level, interpreted programming language
●Object-oriented, but also supports procedural and functional programming
styles
●Dynamically-typed language with strong typing
●Emphasis on code readability with use of whitespace indentation
●Large standard library and a vast ecosystem of third-party packages/libraries
●Widely used for web development (Django, Flask), data analysis/science
(NumPy, Pandas), machine learning (TensorFlow, PyTorch), automation,
scripting, and more
●Suitable for rapid prototyping and development
Ruby
●Dynamic, interpreted, object-oriented scripting language since 1993
●Focused on simplicity and productivity with an “elegant” syntax
●Supports multiple programming paradigms: procedural, functional, and
object-oriented
●Popular web development framework: Ruby on Rails
●Used for scripting, automation, and various applications beyond web
development
Arrays
Java
Kotlin
CFML tags
TypeScript
Python
Ruby
Structs /
Hash maps
Java
Kotlin
CFML script
TypeScript
Python
Ruby
Class / Object
Java
Kotlin
CFML script
BoxLang
TypeScript
Python
Ruby
What did
you notice?
Modern programming languages are … similar
●On the fundamental constructs level all these languages share a lot of
similarities.
●Most exceptional: Ruby and Python (well, and CFML tags)
So, what’s the difference then?
●Ecosystems
●Personal preference
●Organisational preferences
○Ease of finding developers
○Ease of finding 3rd party libraries (see: ecosystems)
○Public perception
●Peripheral features like availability of modern or alt programming constructs
(FP, Monads, Closures etc)
●Performance
●Deployability
Huh?
Perception?
Where’s the
innovation in our
ecosystem currently
happening?
It’s almost solely coming from the Ortus team and *Box*
●ColdBox and its set of closely related libraries is by far and overall the most
professional and productive framework in CFML and can easily keep up with
products like Spring or Rails.
●CommandBox (and containers) have revolutionised the way how CFML
engineers can run servers from dev to prod.
●ForgeBox is the place to go to for modules and packages - and Ortus has even
been so nice to wrap-up and bundle JDKs, ACF and Lucee engines for users.
●BoxLang is the logical next step from Ortus.
Why is BoxLang worth a look?
●It’s tiny and can easily be setup across a plethora of environments.
●BoxLang supports a lot of existing CFML libraries.
●Tooling (IDE/Debugger) from day 0.
●Innovates on a language and platform level
○Java Interop
○Modules and Packages
○Getting rid of certain ancient deprecated ways to write code
○Async and Futures
○Use of modern JVM features and requires/supports modern Java
Syntactic sugar
Will it stick?
Will BoxLang be a success? (I)
●Why was Kotlin invented by JetBrains?
●Niche, conceptual language spec for a new JVM language because JetBrains
needed to be more productive when building their own products.
●The community adoption and the commercial success of Kotlin had nothing to
do with the intention of the inventors.
●So - whhhaaaaaat exactly happened?
Will BoxLang be a success? (II)
●We should all want that BoxLang becomes a success - we’re a small
community after all.
●Fragmentation vs. Collaboration - or both?
●For BoxLang to be more than a replacement of ACF or Lucee in the CFML
community, BoxLang needs to be highly visible and marketed to the wider
software engineering world.
●Required:
○Lots of work
○Lots of luck
Will BoxLang be a success? (III)
●BoxLang is more than a language:
○Runtime
○Services
○Tooling
○…
●BoxLang’s transpiling approach will allow for future extensions into other
ecosystems:
○Android
○iOS
○WebAssembly
●It’ll be exciting to see how this is going to look like.