Elements provides several great options for developing server-side technology, whether it's network services, web servers (covered in more detail here) or just tools that run as part of a larger server infrastructure.
One of our preferred ways to build cross-platform server tools is the .NET platform. With .NET, you can build servers and get a single binary that can be deployed on different platforms. You can easily develop and test on your Windows PC or Mac, and then ship the same executable to your Linux server.
It is very easy to write platform-agnostic code, and Elements comes with additional helper APIs that make it even easier. And you have access to a vast ecosystem of existing commercial and open source libraries to extend your application.
.NET is great for creating network services, data access, web sites (using ASP.NET or ASP.NET Core or general server tools and infrastructure. In fact, all of our own technical infrastructure – from user facing things such as this website to internal tools such as our build systems – are based on .NET code written with Elements.
Elements also works great with Remoting SDK and Data Abstract, our two independent framework products for creating robust network servers and multi-tier data access. Check those out for more information.
Another great option for server-side technologies is to develop WebAssembly modules that can be hosted in Node.js – the server technology centered around JavaScript.
You can use any of the six Elements languages to write modules that can seamlessly interact with your Node.js stack.
You can read more about Node.js development, debugging and deployment in the WebAssembly section of our Documentation Site.
Another great option for server-side development is the Java runtime, including JavaSE, JavaEE and the OpenJDK.
Elements lets you use any of the six languages – not just Java – to build projects that can integrate with any of the existing Java-based server technologies, such as JSP or ESP or Amazon AWS Lambdas.
You can read more about Java development in the Java Platform section of our Documentation Site.
Finally, Elements also lets you build truly CPU-native server executables for Linux, Windows and macOS, to tease out the last bit if performance and stay as close to the metal as you can. Native executables have direct access to the underlying APIs of the platform, such as Win32 API on Windows, libc on Linux or the Core* (and really all) System frameworks on macOS.
But worry not, even for native executables, Elements provides the same multi-platform APIs available elsewhere, so that you can easily write code that can be shared across all three native server platforms (and beyond), while still running natively and without runtime dependencies on .NET, Mono, Node or the JVM.
What's more, since our Gold project brings in not just the Go language but also the Go Base Library (no matter which of the six Elements languages you use), you have access to a wide range of first class, high-performance libraries that come in handy for server development – from a native HTTP(S) and TLS stack, over sophisticated math and encryption libraries to database access, and much more.
Develop on Windows or Mac
Elements also comes with its own lightweight yet powerful IDEs, Water (for Windows) and Fire (for Mac). Fire and Water are very similar, following the same basic design philosophy, while still fitting in natively on Mac and Windows, respectively. On Windows, you can also choose to work in Visual Studio.
With all three IDEs, you can develop and test your server applications, no matter which of the above technologies you choose, on Mac or Windows. You can also remote-debug native Linux and Windows projects right on your server, as needed.