FreshMarker 2.7.0 – New Release!

After two months of development, I’m pleased to announce the release of FreshMarker version 2.7.0. This time, the focus was on functional hash processing, more flexible formatting, and a major step toward a more consistent template syntax. Overall, it’s a well-rounded mix of new expression capabilities and impr

https://schegge.de/2026/06/freshmarker-2-7-0-new-release/

#Bibliotheken #FreshMarker #Java #FreshMarker #Release #Template #TemplateEngine

</Agile> FreshMarker 2.7.0 – New Release!

After two months of development, I’m pleased to announce the release of FreshMarker version 2.7.0. This time, the focus was on functional hash processing, more flexible formatting, and a major step…

</Agile>

The End of Loose Tag End

While designing a new feature, I once again stumbled upon a feature of the template language that I haven’t liked for a long time. The syntax of the directives is modeled after HTML elements, not XML elements. As long as you don’t want to change the syntax of the template language, this isn’t a problem. But if you

https://schegge.de/2026/05/the-end-of-loose-tag-end/

#Bibliotheken #FreshMarker #Java #CongoCC #FreeMarker #FreshMarker #Template #TemplateEngine

</Agile> The End of Loose Tag End

While designing a new feature, I once again stumbled upon a feature of the template language that I haven’t liked for a long time. The syntax of the directives is modeled after HTML elements, not X…

</Agile>

Partial Reduction of Range Lists

One of the most useful optimizations in FreshMarker is partial reduction: templates can be partially evaluated in advance if part of the model is already known. Until now, however, partial reduction had a blind spot—List directives with ranges (1..4, 4..1, 1..) were ignored during reduction and passed throug

https://schegge.de/2026/05/partial-reduction-of-range-lists/

#Bibliotheken #FreshMarker #Java #FreshMarker #Reduction #Template #TemplateEngine

</Agile> Partial Reduction of Range Lists

One of the most useful optimizations in FreshMarker is partial reduction: templates can be partially evaluated in advance if part of the model is already known. Until now, however, partial reductio…

</Agile>

Enum Hashes (2)

In the FreshMarker template engine, hashes are a central data structure. Hashes access data via a name. Up until version 2.6.0, FreshMarker only supported hashes that used strings as names. Hashes that allow enums as names now exist, but their integration is far from complete.

https://schegge.de/2026/05/enum-hashes-2/

#Bibliotheken #FreshMarker #Java #Enum #FreshMarker #hash #Template #TemplateEngine

</Agile> Enum Hashes (2)

In the FreshMarker template engine, hashes are a central data structure. Hashes access data via a name. Up until version 2.6.0, FreshMarker only supported hashes that used strings as names. Hashes …

</Agile>

Nested Directives with Parameters

When replicating the concepts of another template engine, there are always moments when you put off working on a particular concept. This rarely has anything to do with the complexity of the concept itself, but often stems from a personal aversion. For FreshMarker, this has meant tha

https://schegge.de/2026/05/nested-directives-with-parameters/

#AusDemLeben #Bibliotheken #FreshMarker #Java #CongoCC #FreeMarker #FreshMarker #Template #TemplateEngine

</Agile> Nested Directives with Parameters

When replicating the concepts of another template engine, there are always moments when you put off working on a particular concept. This rarely has anything to do with the complexity of the concep…

</Agile>

The General Concatenation Operator

The FreshMarker Template Language provides two operators for concatenating string values: the string concatenation operators + and ~. Both operators produce a string from their two operands. The difference between the two operators lies in the way the strings are joined together. The unique feature of the ~ operato

https://schegge.de/2026/04/the-general-concatenation-operator/

#Bibliotheken #FreshMarker #Java #FreshMarker #Template #TemplateEngine

</Agile> The General Concatenation Operator

The FreshMarker Template Language provides two operators for concatenating string values: the string concatenation operators + and ~. Both operators produce a string from their two operands. The di…

</Agile>

Enum Hashes

FreshMarker is based on the concepts of another template engine. This is evident from its directives, interpolations, and, of course, its name. Another detail also betrays its origins. The types in the FreshMarker Template Language for collections are sequences and hashes. Hashes represent mappings from strings to values. We now want to rel

https://schegge.de/2026/04/enum-hashes/

#Bibliotheken #FreshMarker #Java #Refactoring #Enum #FreshMarker #Template #TemplateEngine

</Agile> Enum Hashes

FreshMarker is based on the concepts of another template engine. This is evident from its directives, interpolations, and, of course, its name. Another detail also betrays its origins. The types in…

</Agile>

FreshMarker 2.6.0 Released

Just in time for Easter time there is a new FreshMarker release available. There are some more enhancements to the built-ins through the addition of an easy lambda support.

https://schegge.de/2026/04/freshmarker-2-6-0-released/

#Bibliotheken #FreshMarker #Java #BuiltIn #FreshMarker #Lambda #Release #Template #TemplateEngine

</Agile> FreshMarker 2.6.0 Released

Just in time for Easter time there is a new FreshMarker release available. There are some more enhancements to the built-ins through the addition of an easy lambda support.

</Agile>

Vier Jahre FreshMarker

Vor vier Jahren begann das Abenteuer FreshMarker mit dem Blog-Beitrag „FreshMarker, eine frische Template Engine für Java“. Was als akademisches Experiment startete, hat sich inzwischen zu einer vielseitigen und stabilen Template Engine entwickelt. Mit Version 2.5.0 und insgesamt 87 Blog-B

https://schegge.de/2026/03/vier-jahre-freshmarker/

#AgileAnekdoten #AusDemLeben #Bibliotheken #FreshMarker #Java #CongoCC #FreeMarker #FreshMarker #Template #TemplateEngine

</Agile> Vier Jahre FreshMarker

Vor vier Jahren begann das Abenteuer FreshMarker mit dem Blog-Beitrag „FreshMarker, eine frische Template Engine für Java“. Was als akademisches Experiment startete, hat sich inzwischen zu einer vi…

</Agile>

Checksums with FreshMarker File

Some time ago, I had the idea that a checksum calculation could be added to the FreshMarker File library. FreshMarker File is an extension for FreshMarker to support the Java types File and Path. A checksum support would allow the current checksum to be added to lists of files without any major det

https://schegge.de/2026/02/checksums-with-freshmarker-file/

#Algorithmen #Bibliotheken #FreshMarker #Java #FreshMarker #MD5 #SHA #Template #TemplateEngine