Upgrade to Pro — share decks privately, control downloads, hide ads and more …

BoxLang vs the world

BoxLang vs the world

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!

This version of the talk was given at CFCamp Germany 2024 on June 13, 2024.

Kai Koenig

June 16, 2024
Tweet

More Decks by Kai Koenig

Other Decks in Technology

Transcript

  1. 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
  2. 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
  3. 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!
  4. 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
  5. 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
  6. 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
  7. 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.
  8. 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
  9. 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
  10. 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)
  11. 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
  12. 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.
  13. 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
  14. 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?
  15. 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
  16. 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.