ITB2024 - Keynote Day 1 - Ortus Solutions.pdf

ortussolutions 55 views 66 slides May 16, 2024
Slide 1
Slide 1 of 66
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
Slide 49
49
Slide 50
50
Slide 51
51
Slide 52
52
Slide 53
53
Slide 54
54
Slide 55
55
Slide 56
56
Slide 57
57
Slide 58
58
Slide 59
59
Slide 60
60
Slide 61
61
Slide 62
62
Slide 63
63
Slide 64
64
Slide 65
65
Slide 66
66

About This Presentation

Live from Washington, D.C. the latest announcements from Into the Box 2024vand Ortus Solutions.


Slide Content

Pre-Release Intro
LED BY
Ortus Team
Codename: Jericho

Keynote Day 1
Starting 9:00am Central
LED BY
Luis F. Majano

WELCOME
#ITB2024
Day 1
@GOINTOTHEBOX @ORTUSSOLUTIONS

LUIS F. MAJANO
Your Host
•CEO Ortus Solutions
•Computer Engineer
•Creator of all things box!
•Documentation Weirdo!
@lmajano @ortussolutions

Two most important
Facts to know…
Wifi
@MarriotBonvoy_Conference
Bathrooms

Thank Our Sponsors

Thank Our Speakers

Eric Peterson
USA
Gavin Pickin
USA
Esme Acevedo
USA
Brad Wood
USA
Cristobal Escobar
Spain
Thank ITB Committee
Maria Jose Herrera
El Salvador
Jorge Reyes
Switzerland
Edgardo Cabezas
El Salvador

Recordings
•Free access to all attendees
•2-3 Weeks after ITB
•www.cfcasts.com

HAPPY BOX
6:30PM

•Tomorrow after the last session!
•Must be present to win!
•RaffleBox!
Don’t miss out!

•My name is Jericho, what’s yours?
The Social Minute

Today Is No Ordinary Day!
We have been keeping a secret!

Trailer Here

BoxLang is a modular dynamic language for the JVM, aiming to make your
development more productive, expressive, functional, and available
everywhere. 
DYNAMIC : MODULAR : PRODUCTIVE
BETA

Goals & Vision
•A new evolution
•Be dynamic, modular, lightweight, and fast
•Be 100% interoperable with Java
•Be modern, functional, and fluent
(Think mixing CFML, Node, Kotlin, Java, and
Clojure)
•Modularity at its core
•Take advantage of the modern JVM
•TDD: Fully tested source code
•Be able to support multiple runtimes
•Have multiple transpilers
CFML -> BoxLang,
Groovy -> BoxLang
X -> BoxLang
•IDE and Tools
•All of our libraries needed to run
•Compete in today’s language environments

Key Features

Multi-Runtime Architecture

Multi-Runtime Architecture

Strict Dependency Graph

Strict Dependency Graph
•Core to be small and focused
•Only add a third party if extremely necessary
•Rely on the JDK as much as possible
•Lower surface attack area
•Extremely small distribution
•Extend via Modules with their own dependencies
commons-io
Antlr
javaparser/asm
commons-lang
jackson-jr
slf4j
logback
Hikari

BoxLang Framework

BoxLang Framework
RUNTIME
Application
Service
Async
Service
Cache
Service
Component
Service
Datasource
Service
Function
Service
Interceptor
Service
Module
Service
Scheduler
Service

Enterprise Caching Engine & Aggregator

Enterprise Caching Engine & Aggregator
•Inspired by CacheBox
•Enterprise Caching Engine
•Extensible
•Custom providers
•Custom object stores
•Listeners
•Stats
•Powers all internal caching

Scheduling & Task Framework

Scheduling & Task Framework
•Inspired by ColdBox
•Schedulers are portable, fluent, and human
•Task & Completable Futures framework from the
JDK
•Access to any executor in Java
•Run schedules as cron jobs; no server is needed
•Write them in BoxLang or Java

Professional Open Source + Subscriptions

•BoxLang Community (Free & Open Source)
•Apache 2
•Two Commercial Subscriptions
•BoxLang +
•Support
•Enterprise Modules & Features
•BoxLang + +
•Increased Support
•Custom Builds
•Dedicated Engineer
Professional Open Source

ARCHITECTURE
With Brad Wood

Modern Dynamic Language

Modern Dynamic Language
•Dynamically typed just like CFML, but we go further…
•JDK21+ Minimum
•JSR-223 Compliant
•No reflection, we use InvokeDynamic for everything
•DynamicObject: Any Object can be Dynamic!
•Type inference, auto-casting, type promotions
•Interface and superclass default method promotions
•Use all new JDK features and types
•Collection of Dynamic Casters and Helpers

Java Interop

Java Interop
•Interact with Java with no bridges
•It’s just part of the language; no more separation
•You can import, extend, implement, annotate, etc
•Execute BoxLang within Java and Java within BoxLang
•Concept of object resolvers: java, bx, custom
•New BoxLang Scripting: MyScript.bxs
•Components become Classes: MyClass.bx
•All bx/bxm/bxs are runnable via the OS
•Classes can have a main() convention
Java Interop

Pure Functions + Immutable Classes
•Support not only closures (=>) but pure functions (->)
•No side effects, no carry-over contexts, pure speed
•Especially for asynchronous programming
•New Immutable classes:
•Arrays, Structs, and Queries
•Great for async safety, read-only snapshots, speed and
more.

Multi-Parsers

Multi-Parsers : BoxLang + CFML + ???
•Our way to split with the old and bring in the new
•Transpile CFML into BoxLang
•BoxLang is a NEW clean slate
•Compat module for Adobe/Lucee
•Future > Groovy to BoxLang, ??? To BoxLang
•CFTranspiler CLI Tooling
•Feature Audit Tool
•Multi-Step Compiler
•BX -> Java -> ByteCode (DebugMode)
•Bx -> Bytecode (Almost done)
Choose your path wisely!
.cfc, .cfm
.bx, bxs, bxm

Event Driven Language

Event Driven Language
•Interceptors for the language, application, and request
•The best way to scale the language
•Listen to the entire or specific language life-cycles
•Modules can listen/collaborate events
Event Channels
Event Producers
Event
Event
Event
Event Consumers
Event
Event
Event

Tested & Documented

Tested & Documented
•TDD/BDD at the core of the language
•3000+ Tests Already
•Test not only Java but BoxLang inline
•Native BoxLang Assert constructs built-in
•Fully Documented
•Generated API Docs
•boxlang.ortusbooks.com

TOOLING
With Jacob Beers

Tooling Overview
•BoxLang IDE
•Language Debugger & LSP
•Executable scripts within the IDE
•Run Scripts and Servers
•Converters
•Visualizers
•CLI Tools
•REPL
•BoxLang Unix Scripting
•Script, Module, and Schedule Runners
•Convert CFML to BoxLang
•BoxLang to Bytecode
•Package BoxLang apps & modules

Tooling - IDE
•Modern development flow
•Inline documentation
•Inline web server with debugging
•Run BL/CF code directly within VSCode
•Debugger
•Language Server
•Committed to ongoing support and development - new
features are on the way!

Tooling - Debugger
•Purpose built
•Integrates with VSCode via Microsoft’s DAP
•Can debug both the CLI runtime and web
server
•You’ll never use  writeDump()  again!

Tooling - Language Server
•Already powering the extension!
•The BoxLang runtime was built with the LSP in mind
•Full access to the BoxLang syntax parser/compiler
•Access to all BoxLang configuration, datasources,
mappings, etc…
•Extensible via BoxLang modules
•Foundational for modern language tools
•Intellisense
•static analysis
•More coming soon…

Demo Time
!
Tooling

Tooling - Roadmap
•Near future
•Communication between the debugger and language server
•Static code analysis/type hinting
•Extension based CommandBox + BoxLang Server management
•Community engagement!
•+,++ version of debugger
•Language server plugins

MODULES
With Jon Clausen

Modular Needs
Modern Runtimes Have Various Needs!

( and CFML paradigms are outdated )
•Web Applications - HTTP Request/Response Data
•Tasks and Queues - Watchers, Event Handling, Async
•Lambda and CLI - fast start and blazing speeds!
•iOS/Android - Low resource footprint, event handling
•Web Assembly – Transpilation and Sandboxing

BoxLang Modules
•Inspired by ColdBox modules, NOT OSGI
•Core Runtime with lightest possible footprint
•Taps into the language life-cycle
•Write them in Java or BoxLang or Both!
•Executable as CLI packages
•Integrates with Maven/Gradle

BoxLang Modular By Design!
•Modular ecosystem, delivered by FORGEBOX
•Core modules for DBMS’, Alternate Runtimes ( e.g. Lambda ),
Mail, Encryption, CFML compatibility and more!
•Write your own functions, components ( tags ), schedulers, JDBC
Drivers, interceptions and more!
•Boundless potential for community contribution and
engagement!
•Foment third-party vendors
•FORGEBOX eCommerce Marketplace later this year

BoxLang Extends BoxLang
Influence core runtime behavior with BIFs, 

Member Functions, Tags, Interceptors, and More!

BoxLang Modules
Take control of your own runtime,
in your own language!

Demo Time
!
Modules

TRY
With Gavin Pickin

Wanna play?
•try.boxlang.io
•Internet playground for BoxLang
•First Production BoxLang application
•Powered by our AWS Lambda Runtime
•Skinnable
•Embeddable on any Site
•+/++ More Features Coming Soon

How did we build Try BoxLang in under 48 Hours?
•I will be presenting a Secret Session looking at how Try BoxLang
was built… final session on Day 2
•Quick Rundown
•Monaco Editor (VSCode) Web Component
•But we had several architectural design decisions to make
•Should we spin up a docker container per request?
•Should we have 5, 10, 20 replicas on Docker Swarm?
•Do we pass the code to a Docker Image with the CLI running?
•Should we make an image with an API and return code from
the API?

AWS Lambda Runtime
•Every Try.BoxLang.io request can fire up its very own Lamba request
•That means:
•We never have to worry about how many instances we have
•We never have to worry about queueing
•We never have to worry about bad actors accessing other people’s files
•We can easily update our Lambda runtime and all instances will be
running new code
•Scale up as big or as small as we want

What can you try?
•You can Try BoxLang code
•You can Try CF Code running in BoxLang
•You can see the evaluated results
•You can see the buffer output
•Copy Paste URLs to load code

Coming Soon!
•You will be able to see the Abstract Syntax Tree (AST) for your code
•You will be able to see the console/system output
•Ability to load code from GIST links
•+/++ Features
•Ability to Save to ForgeBox
•Create Projects like repli.it
•Install Modules

TryBoxLang in the BoxLang IDE
•We want to make trying BoxLang even more accessible, so we’re working
on integrating it into the VSCode BoxLang IDE as a Window.
•Select code sections and use the command palette or shortcuts to open it
in Try.BoxLang.io instead of copying and pasting.
•Select code sections and save to ForgeBox
•The adventure has just started…

THE FUTURE IS
DYNAMIC
With Luis Majano

Key Features

•Open Beta Today!
•Final Release Fall 2024
•Need you to test and run!
•Limited Visionary Licenses
•One Price = Unlimited Licenses & Updates Forever
•For visionary companies/individuals that believe and
want to support the project
[email protected]
•We are committed to the future
•It’s time for a revolution!
What’s Next!

THANK YOU