Linux or Windows?

I always use Windows because I know it the best. I simply like it, and I feel safe running it, because I ran CF on Windows for over 20 years. But I suppose it is up to every ones choice!!! I don’t blame any other OS. I always believed that every web developer / user / corporation should simply choose what he / she / it finds to suit best. Just do what you feel most confortable with.


I’ve only ever run Lucee on CentOS servers in production but develop with it on Windows environments often. I’ve had a positive experience both ways. Personally, when setting up a typical production environment to run a Lucee app (Java, Tomcat, Nginx/Apache etc.), I find Linux to be a smoother process and easier to maintain. This is mostly because I am better at working from a terminal interface for Linux.

I say if you prefer Linux, use Linux.


I work with both but here is my experience after years of supporting Windows & Linux

Windows has higher downtime, more security issues and consumes more resources than Linux running the same services, in this case Lucee

Linux depending on distro is relatively easier to maintain and overall lest costly and has fewer security issues and lower downtime than Windows.

It all comes down to preference, if you are looking at the bottom line, Linux hands down wins.


All of my Lucee sites run on Ubuntu, Alpine (docker), or Raspbian Linux. Mostly for convenience, VM size, and licensing.

Is Lucee optimized for either OS?

No, not really. Lucee mruns on the JVM so it runs just fine wherever there is a JVM and that abstracts it from pretty much all the underlying details. The only significant difference if you’re moving a site is your static web assets and direct file system access for non-CF files will become case sensitive, though that doesn’t really apply to Lucee directly, it’s just how the underlying file system works.

Thanks for the clarification.

I suspected that was the answer, though some software does run better on Windows or Linux because it was originally developed platform specific and ported.


I really dislike Windows UAC model. It’s causing lots of pain. However, that is an opinion or preference.
I do prefer the security models of most Linux Os.


I would recommend Linux if possible. If you get into many Cloud based setups, they will use Linux.

I actually use Ubuntu Hyper-V VM and have a backup server on Windows. Docker is nice and i have had our site running in DEV on that.

1 Like

I’m using the same Express installation to run on both and without no extra effort. When developing I use Windows and deploy to Linux server but basically it is the same Express runtime.

1 Like

I didn’t want to open a new thread and just add my question to @Darths, hoping for some additional advice.

If you are totally new to Linux and coming from a long term windows use like me (standard use of a simple web services with iis+tomcat+mariaDB) and planing to switch: what Linux distribution would you guys suggest in terms of learning curve, security, flexibility and license?

To answer the first question: If you are familiar with IIS and you want to use it: Use Windows. If you would use Apache oder Nginx anyway, use Linux.

To answer the second question from andreas: I have very good experiences with Ubuntu LTS - the long term support means less hassle with upgrade, which run smooth anyway. I have no experiences with Arch oder Mint, maybe they are better.

1 Like

I’m an equal opportunity OS user - I use Windows, MacOS and Linux daily. Ultimately the entire conversation usually comes down to “use what you know and are most comfortable with”.

That said… I’ve always enjoyed working with Linux… I’ve been using it since Slackware 3.1 and since then I’ve used Redhat, Mandriva, CentOS, Fedora, Debian, and Ubuntu at one point or another. I’ve used Windows, Ubuntu and MacOS as desktop OS’s. Today, my primary OS of choice for Desktop is MacOS and for Servers is a combination of CoreOS + Ubuntu or Alpine containers, and/or Ubuntu LTS, with some CentOS interspersed.

Desktop reasoning - using Ubuntu as a desktop was … fine… There are apps you won’t be able to get for Linux, and some things are harder to configure than other OS’s. Windows and MacOS are more polished when it comes to system setup, from detecting your video card to GUI customization. Windows always had more broad app support, but now that Mac is intel they’re catching up, plus the widespread deployment of web based applications means you can use the same stuff from all OS’s… The one thing I use that I couldn’t get a decent Mac version of was the full version of Quicken. But I like MacOS mainly because I can have my cake and eat it to - it’s a good, stable OS with polished features, built in applications, support for Office apps and primary apps that work cross platform, plus I can get to the terminal, which is based on BASH, which gets me to a “linux-like” experience on the desktop, where I can leverage XQuartz to run remote linux apps, and run command line development and apps and programs just like I could on linux.

Windows has gotten better… Now that WSL is a thing, you can install a full Ubuntu install on your Windows machine and do very similar things. This drive my point home about the differences between OS’s not being as important today as they once were.

So let’s talk longevity of skills - while you can run Windows Core/Nano containers, for the most part containers are all based on Linux. It’s a small subset of Linux knowledge necessary to do containers… but if you believe containers are the future (I believe they’re here to stay) knowing some amount of Linux is a good thing. You can run those containers on Windows, MacOS, or Linux - under the hood, it’s either running natively (on linux) or running a lightweight VM, or using some emulation technology to run linux-on-something-else.

For servers, I was going Redhat for many years, then Mandriva (because there were intel optimizations), then Debian (for security and stability), and then Ubuntu (for widespread PPA support, plus Debian’s stability in some situations). If you were going to pick up a Linux distribution, I’d use Ubuntu LTS today. (Skip the 6mo releases, so you want 18.04 Bionic)

In my opinion, deploying a linux server today is going to end up on one of two OS’s - CentOS (or RHEL if you can afford it and want Ent. support), or Ubuntu LTS. They both offer long term support. CentOS has older software for longer - it’s a more Enterprise approach of “let’s run what’s working for as long as possible and not worry about new versions of things”. It’s very stable. And because it’s a frontrunner in the Linux arena, if you’re looking for vendor support for just about anything (i.e. drivers, dell tools, hardware support, etc) the vendor will likely have something that supports CentOS.

Ubuntu is backed by Canonical and has paid options as well, but most server ops would say it’s more of a Desktop OS… Largely because Canonical has done work over the years to try to pitch Linux as a viable desktop option. But you don’t have to install a GUI at all, and under the covers Ubuntu starts from Debian… so it can be run properly, and minimally, and have as much or as little surface area as you want. But you also have the ecosystem of Ubuntu wrapped around it, and things like PPA’s mean that if there’s something Canonical doesn’t supply, the community can and you can add it to your distro with minimal support. Most vendors will also support the Debian ecosystem (which also includes Ubuntu).

When you get containers in the mix it blends lines - many of the docker containers at there use CI and are built from vendor source directly. When you use a distribution like REHL/Centos/Ubuntu, they have a philosophy that brings order to file structure and the types of software included. (Debian goes out of their way to only include FREE software - not just 0 cost, but software unencumbered by patents and onerous licensing) So every package has some amount of massaging to fit into the distro’s method of configuration, tooling, and frequently the distribution will provide backported bugfixes.

This has happened to me in the past with things like Tomcat and ProFTPd - I don’t have specific versions but it goes like this - Distro packages version A. Life moves on, vendor releases versions B,C,D… which have new features but also bugfixes. Major security issue happens and vendor releases version E, which may have new features but also has a major bugfix. Distro decides instead of introducing more features (and risk), they’ll just take the security fix and backport it to version A, and release a version A.1 for their distro. CentOS does this a lot, as does Debian/Ubuntu based ecosystems.

The “docker way” for using the community tomcat container for instance, is you get the vendor’s latest and greatest all the time and skip the individual distro based maintenance.

As with most things, one isn’t better than the other, they’re just different. So as a container maintainer you get to make the choice - build on ubuntu or centos and use the distro’s packaging, with the distro’s team for backports… or build on alpine because you care the most about drive space and small containers, or build on whatever base OS you want and automate downloading the source from the vendor and building from scratch with the container.

Basically, it’s a bunch of design decisions you have to make as to what direction you go in and none are “right”, they’re just different. And the world is converging - even Microsoft will admit containers are here to stay, that’s primarily why SQL Server can now run on Linux.

I’ve probably rambled long enough. So your ACTUAL question…

When it comes to resource utilization, Linux does more with less. That has always been my experience.

When it comes to Lucee, your key performance tuning is going to come from Java and the JVM, not the OS.

When it comes to the webserver, Apache can run on both OS’s. (you don’t HAVE to use IIS on windows) You can also use Tomcat on both OS’s and forgo a frontend webserver. Things like nginx and lighttpd are going to be Linux-only. (And are based on doing more with less! So they’re built around Linux’s model specifically)

All OS’s give you the opportunity to do things right, or do things wrong. You could run Tomcat as the SYSTEM account on Windows. That’s less secure than a service account. You could run Tomcat as “root” on Linux. That’s also less secure than a service account. I will say that distros out of the box will default to Tomcat running as a service account. Frequently Windows defaults are in the opposite direction.

If you’re looking to pick up Linux to learn something, I’d recommend Ubuntu LTS for the reasons I listed above… Ubuntu provides almost anything you’d need, it’s going to be easier to pick up, there’s PLENTY of resources online for how to do just about anything when you run into problems, resources online are targeted towards people like you (people learning, people who are windows people primarily, people who are trying linux for the first time), and if you want to go advanced eventually, you can do that too.

You then also have the option of - do you deploy Ubuntu on bare metal, or do you do a VM, or what? If you’re planning to run everything on your desktop, consider WSL

You can install ubuntu side by side with windows, so that’ll be easiest to get your feet wet.

And you can also run docker containers on windows (or any OS), so that’s a good thing to learn as well.


Thanks for everyone’s response. I prefer Linux, but I am using Windows on this particular project because that is my client’s preference.

I’m new to this group, and I appreciate all the advice and professionalism!


Thanks for the detailed answer. It sounds as if you and I may have similar experience. I took a 7 year haitus from programming and things have changed a little. Mainly with containers and VMs. I have limited experience with VMWare and Hyper V.

I’ve been in IT for 30 years, I’ve worked with many Linux distros and started with the first version of Red Hat that I picked up in a Comp USA back in the late 1990’s. I have also worked with every version on Windows OS, since Windows 2.0, which was basically a DOS shell menu. It was unusable, but Windows 3.1 changed that.

Then when IBM “gave” Microsoft the code for OS/2 Lan Manager a funny thing happened in the MS Server world. NT 4.0 actually became “usable” and Microsoft products started showing up in corporate data centers, then Microsoft found a reason to no longer partner with IBM. A little history for you, and I know there are a number of different opinions on what happened, but I was working with IBM at the time this all happened.

MS wasn’t the only corporate pirate of the time, I think most of the big companies of that time probably did similar things.

I just don’t care for MS Operating Systems because I have been bitten too many times. Yes, if you dedicate your efforts to follow Microsoft’s models you can run a secure and stable environment. I just find Linux more organized (most distros) and easier to configure.

The fact that MS has finally embraced Linux after fighting it for 25 years isn’t something I want to invest any time in either. I really don’t see a reason to run Linux inside Windows, especially on the server side unless you work for company or client that insists on running Windows OS.

I advise my clients to find the right Software Solution, then purchase whatever OS/DB it requires, even if it is Windows.


I have been running ColdFusion on Windows for 10 years and recently switched to Lucee on Linux. I found that the Linux OS outperforms the Windows systems dramatically. If speed is an issue for your application or site, you should seriously consider Linux, I can recommend a great Linux/Lucee hosting company as well if you are not hosting it yourself, find a company that provides good responsive support is critical.

1 Like

Lucee doesn’t care! Period! (or exclamation point).

But the only reason to use Windows on servers in 2019 and moving forward is if you are not comfortable running and administering Linux. Other parts of your system will likely perform much better on Linux (e.g. file systems, database systems, web servers).

And then there is of course the cost involved with a Windows license. It’s hard to justify it when you get something better for free.


Hi - first I apologize for not answering everyone before now. I have been under some tough deadlines and working too many hours.

Speed is a minor issue. Licensing cost and cloud costs are the bigger issues. My client is penny wise. They would rather have me work 60 hours a week than spend anything on software/hardware. I’m modernizing an IBM System/36 application that is running on a iSeries 720 (AS/400).

I programmed in CF for years, many years ago. A colleague recommended Lucee because it’s open source.

Personally, I don’t care for Microsoft operating systems. I’ve been working with them from the beginning, as well as Unix and Linux.

Being a Industry veteran, I worked with all these platforms from their inception until now. I prefer the stability and the ability to load only the parts of the OS I want and need. Therefore, I use Linux when possible. It’s really not about cost with me. It’s about stability and uptime.

I’m wrapping up this project, so yes I would like to know what hosting you recommend.

Currently I am using the client’s AWS account. I may move it to Linux, but that’s their call. For future projects I will use Linux when possible.

Thanks for your insight!



So the move from Windoze to Linux is pretty straightforward?

The setup for Windows IIS was pretty simple.

I had one weird glitch and the awesome community here helped me resolve it quickly.


Straightforward, yes.

If you want to front Tomcat with a web server you can use nginx or Apache httpd.

You may also consider database / data source setup in different OS environments.
More common if not popular relational database management systems run on Windows OS, so, we may find that many more applications use these types of databases with Windows OS while setting up database system on Unix flavored OS such as Ubuntu may not be that easy, in addition, Lucee data source setup for such database on a Ubuntu type of OS might not be easy neither.
But if most of your applications do not use some back-end database(s), then that would not be factor to consider.