Based on the first implementation of Lucee 4.5, the complete version 5 has been written from the ground up including deep core functionality. This was by far the biggest effort in the whole release.
By utilising the Open Services Gateway initiative’s open specification for module systems in Java from Lucee 5 onwards the platform will be entirely modular meaning you will only need to install and load the components your project(s) require. This gives Lucee a much lower memory footprint and in turn improves performance.
Another benefit of OSGi is the ability to dynamically load and unload Java libraries, known as OSGi bundles, meaning they can be updated and/or changed without requiring a restart of the underlying application server, e.g. Tomcat. With OSGi you can also run different versions of the same library simultaneously, meaning that if you need a specific version of a library, be it newer or older than the version bundled with Lucee or another application running on the same server you can now do this.
One simple improvement is the fact that now you can drop an .lco (Lucee core file) or .lex (Lucee extension) into the deploy folder at runtime without having to restart the server. Even if the extensions contain necessary JAR files.
More information on OSGi can be found in the documentation.
Lucee 5 fully supports the Java Scripting (JSR-223) standard. This allows you to use Lucee in places that you would not previously have been able to, for example in an ANT build script to run testcases with the CFML code having access to the ANT environment.
Lucee 5 is now able to update existing classes without the need for a Java agent and this has a massive impact on memory consumption, particularly in environments where a lot of CFML templates are used. This has allowed for the overall memory footprint that is used to handle classes to be reduced significantly.
Whilst the main focus for Lucee 5 has been the architectural enhancements, Lucee 5 also brings some language enhancements with it as well, including:
- Abstract and Final modifiers for components and functions
- Static support for components
- Lambda Expressions (arrow functions)
- Handling unquoted arguments as variables
- Added “cached within” to cffile and cfhttp
Just the beginning
This is just the beginning for Lucee 5 and now that the solid foundations have been laid down by the team at Lucee, we will continue to build on this, moving more components out of the core and into extensions and further refining the Lucee platform, helping you do more with the CFML engine you love. We will be sharing more details on upcoming new features and improvements with the community in the near future.
Lucee is only possible due to the generous contributions from our member companies as well as our enterprise, corporate and individual supporters, as well as all the community members that have contributed a pull request or helped to answer questions in the Google Group.
If you are interested in supporting Lucee we are always looking for individuals or companies willing to donate to the project as well as people who can give up some of their time to help out, be it updating and enhancing the documentation to contributing bug fixes and features via pull requests.
For more details on how you can help out please email email@example.com and let us know how you think you can help and we can put you in touch with the right person at LAS.
Getting Lucee 5
Upgrade from Lucee 4.5
If you are upgrading from Lucee 4.5 then you can find instructions on how to do so in the Lucee documentation:
Please follow the instructions carefully and if you have any issues or require any assistance please ask in the Lucee Google Group.