BoxLang vs the world Koi Koenig CFCamp 2024

ortussolutions 32 views 48 slides Jul 25, 2024
Slide 1
Slide 1 of 48
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34
Slide 35
35
Slide 36
36
Slide 37
37
Slide 38
38
Slide 39
39
Slide 40
40
Slide 41
41
Slide 42
42
Slide 43
43
Slide 44
44
Slide 45
45
Slide 46
46
Slide 47
47
Slide 48
48

About This Presentation

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...


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

Contenders
●Java
●Kotlin
●CFML/CFScript
●TypeScript
●Ruby
●Python

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.

Get in touch
Kai Koenig
Email: [email protected]
CFML Slack: @Agentk
Boxteam Slack: @Kai Koenig
X: @AgentK
Mastodon: @[email protected]