I'm looking for an alternative to Django/Python. I...
# cfml-general
r
I'm looking for an alternative to Django/Python. I like how quickly I can produce a crud app in Django but as a Java developer I dislike how slow Python is and the deployment/dependency management. I stumbled across Lucee and it seems like it may be a good option for rapid app development. I'd be interested in any thoughts you may have. Thanks!
a
Have a look at BoxLang https://boxlang.io/ It has good interop with Java, step-debugging etc.
It has the benefits of Lucee but with extras
There's a whole of modules you can use as well with it (and lucee) https://forgebox.io/
@Richard Lawson ^
e
You are in the right area, I would stick with Coldfusion in general. Boxlang is still in beta and has few examples or documentation on all its nuts and bolts. When it's "Stable," it will be a force to behold. I strongly suggest you stick with core Coldfusion technology for stability and simplicity. Adobe released an extension for Visual Studio Code / Studio, which, even if you choose to go the open-source route, you would do well to familiarise yourself with Adobe's Coldfusion platform as well as Lucee, an open-source alternate.
p
Yea boxlang is very new, still in beta. But ColdFusion/Lucee is a great fit for a language with some great mvc like Coldbox.
a
So just to clarify. Lucee/BoxLang/ColdFusion is like Python and ColdBox is like Django. ColdFusion is commercial, Lucee and BoxLang are free-to-use
r
Great! What about niceties like built in user management and authentication or an admin interface? One nice thing we get with Django is it is a great out of the box solution that only needs a db connection and you can start creating user accounts and use the admin interface for backoffice type stuff.
a
That where ColdBox comes in (which runs on ColdFusion / Lucee / BoxLang). It's essentially an MVC framework, but it has an eco-system of modules to add things like authentication (cbsecurity) / orm (quick) etc etc
šŸ‘ 1
I don't think there is a drop in user management module UI though (I might be wrong)
p
Yea there is no drop in starting interface/ui ready to run in line with Django; but lots of modules ready for use to assist in implementation. www.forgebox.io you can find a lot of CF based modules
šŸ‘ 1
r
ok and I think performance should be roughly on par with Java based frameworks? Like SpringMVC?
Because let me tell you - Django is slow! That's our biggest complaint with it is the amount of cpu you have to throw at it
a
For Lucee specifically?
r
Lucee + MVC framework
SpringBoot with SpringMVC backend is very fast but of course not super quick to write
a
Lucee is pretty quick. It does use some java reflection which is an overhead (on things like member functions) I don't know enough about SpringMVC to comment
The reason I suggested BoxLang to you is because you said you were a Java developer so it'll give you a bit more freedom to drop down into Java when you want. You can integrate with Java in Lucee and ColdFusion but there is some friction. Lucee uses OSGi which I know caused some issues with people integrating with clojure.
r
ah ok, I did a quick check on techempower benchmarks and for the multiple query scenario lucee-cfml is only slightly slower than spring but 10x faster than Django
ok so good, I have the modern coldfusion book arriving soon and I'll do some prototypes to get a better idea of things
a
If so that is written by the team behind ColdBox and BoxLang and ForgeBox šŸ™‚
šŸ‘ 2
Be really interested to know how you get on - and of course plenty of people here to answer questions
r
yep that one
will do! thanks for all the help
p
@Richard Lawson you might also want to consider the "Preside Platform" which is an open source framework based off ColdBox that has the admin functions you talk of with user management and many other niceties built in such as mail integration, form building etc. https://www.preside.org/
šŸ‘ 2
b
Hey Richard, You are definitely in the right place if you are considering CFML as an alternative. There are a lot of great minds here willing to share. In regards to speed, yes, Lucee is very fast especially without a framework such as ColdBox. Personally, I would focus on Lucee for now.
šŸ‘ 1
šŸ‘šŸ¼ 1
j
Hey Richard, Other projects are a great way to learn what is happening and possible. I usually like to see how close it could be possible in CF for all the unmatched advantages it still seems to provide. • For python, you might want to check out FastHTML.. it came out recently and has been quite popular in the python world. Some of it, much like the javascript frameworks share similarities to how things work in CF. • I've recently been playing with Laravel on a project, and the derivative TALL stack is also quite (built by the creators of Tailwind, Alpine.js, Laravel and Livewire). Alpine and Livewire are two really neat and elegant techs. ā—¦ I haven't played with cbwire in a while which is livewire inspired., but Coldbox has some nice things around this kind of an approach as well. Laravel has a ton in their ecosystem that's well built and well explained for anyone to start using it. If anyone ever wanted to do this for a CF library I'd be willing to be a part of that volunteer group lol. I do have devops, training and documentation experience to setup turnkey environments, There's a lot of SaaS boilerplates • Another project I learned from is serversideup.net .. they have prebuilt images that help move things between environments, quite elegantly... the orchestration that docker swarm is missing. Specifically they have a project called spin. It really pushes getting an entire app environment up super quick. But.. why I'm in this slack šŸ™‚ • CF still has way too much out of the box ready to go instantly compared to most anything. Most other languages must extend to the web with some sort of framework which can help and also complicate things.. and CF is one of the few (maybe like PHP) that is web native and meant for the web. • There are a few CFML SaaS boilerplates I saw, I can see if I can find a link for you in case that might help. • Other frameworks like coldbox, CFwheels have user management built in from what I remember. • I recently started using appwrite.com, self hosted, and it's pretty amazing and trivial to implement. ā—¦ It turns everything into an API call around account, session management, etc. ā—¦ It has taken away a lot of work that doesn't add a lot of value. And the self-hosted docker image installed flawlessly, which was shocking. ā—¦ It's been pretty simple to put together a simple build file to start a project in bash, have it check out a repo, spin up a docker environment, and within one fire up command box. I did recently have to make a pass through docker and it's been pretty solid for the most part. ā—¦ If anyone might be interested in putting some time in together on creating a reasonable cf wrapper for this I'd put in some time. In the meantime I just building in the few features I need so far, it would be nice to have it way more complete. CF still is one of the fastest one person way or small teams to build things because everything is simply already there and ready to access, and includes and building things up is not as much of a consideration. it's still fun spinning up a tailwind template, bringing it to life about as fast as a wireframe can be built. Between coldbox, using a framework like fw/1, wheels, or coldbox, it can be really fast and comparatively very stable at load where in other techs you have to go stabilize so much and keep libraries updated. Boxlang is super interesting as well, I haven't had a chance to play and until then very appreciative to have lucee available. in my life.
ā¤ļø 2
šŸ‘ 2
r
Thank you all! This is great info
j
One more thing, with accessing Python functionality, if you do want to wrap something up for consuming via CF, FastAPI has been great. It self generates documentation as well and has a decent handle on authentication and rate limiting. I was pretty surprised by it, considering how much work Python can be to get an environment running and working between different environments. (Probably just me) Can even ask AI to wrap up any existing python library and make it available in minutes if it's not ready in CF. I'm finding myself drawn back to just writing bash scripts to call things in some cases because it's universal lol.
r
I will check out fastapi, mainly I have used DRF and Django Ninja since I was already using Django.
j
Right, I did a bit with Django as well for API and another one, FastAPI was the only thing I made it through and wanted to keep using it in the future for other things.
r
But my main gig is Java so I'd like to stick with JVM based tech. It's just Django is so dang fast to spin something up. But then it's slow and I hate dealing with python dependencies
s
@Richard Lawson why not Spring Boot?
r
Yep I use SpringBoot/SpringMVC a ton at work and it's fine. But I'm looking for that all-in-one experience that Django gives you but on the JVM. Mainly for my personal projects or internal work - the SpringBoot/MVC/Angular stack is a little heavy
s
Checkout Javalin not much lighter than that.
šŸ‘ 1
b
Just to add to the pile here, I like Lucee/CFML, being relatively new to it, and wouldn't hesitate to develop a new app with it. That being said, Python is a swiss army knife and can be fun to work with. You might consider checking out Python Flask which is like a light weight version of Django for developing Python web backends. It was quick to pick up and learn if you're already familiar with python. Sorry if it was already recommended, I skimmed through the thread.
šŸ‘ 1
e
Just to further add to the fun, you can always use Py4j and mix the two but for an alternative coldfusion is far better than pure java or python.
šŸ‘ 1