JDriven Blog

Java 25: new features in latest LTS

Posted on by  
Thomas de Groot

Java 25 (the new Long Term Support version) was released on September 18th 2025, and with it, some new cool features have been released. Which features are available to help improve my code? In this blog, I will give you a brief introduction to the released features which you can use directly as a developer (previews, experimentals and incubators are not included).

Continue reading →

Nushell Niceties: Encoding And Decoding URL

Posted on by  
Hubert Klein Ikkink

Sometimes you want to transform a string value into a URL encoded value, so it can be used as part of a valid URL. For example a string with spaces or special characters can not be used in a URL as is, but needs to be URL encoded. Nushell has the url encode command to achieve this. You can simple run this command on a string value and the result is a URL encoded value. With the option --all or -a even more special characters like a dot (.) are encoded. The input of the command can be a string value or a list of string values. But it is also possible to use a record or table structure, but then you need to add as extra argument the name or names of the keys or columns of which the string values should be encoded.
Oppossed to URL encoding a value you can also decode a URL encoded value using the url decode command. This command doesn’t have a special option to run. Just like with the url encode command the url decode command works on strings, list of strings, records and tables. If the input is a record or table the name of key or column of which the values must be decoded must be passed as extra arguments.

Continue reading →

Groovy Goodness: Map Methods To Operators

Posted on by  
Hubert Klein Ikkink

Groovy supports operator overloading since the start. Operator overloading is implemented by an actual method signature that maps to an operator. For example an object with a plus method can be used with the + operator. There is a list of methods and operators available on the Groovy website.
As long as an object has a method with a name that Groovy understands the corresponding operator can be used in Groovy code. This is even true for Java objects. Since Groovy 5 you can use the groovy.transform.OperatorRename annotation on classes, methods or constructors to map other method names to the Groovy operator overloading method names. This is very useful for third-party classes that you cannot change, but still want to use simple operators in Groovy code. You can reassign a method name to the following methods so an operator can be used: plus, minus, multiply, div, remainder, power, leftShift, rightShift, rightShiftUnassigned, and, or, xor, compareTo. Suppose you use a class with an add method and want to use the + operator for this method. The following annotation can be used @OperatorRename(plus = 'add') for a method and inside the method you can use the + operator instead of the add method of the class.

Continue reading →

Vibe Coding: A Hype or a Vibe?

Posted on by  
Erik Pronk

You’re coding late at night. The lights are low. Your favorite playlist is playing, maybe something only you would call “focus music.” Your IDE is set to a theme that feels just right. You’re not rushing. You’re not distracted. You’re in the zone.

This is vibe coding.

Continue reading →

Groovy Goodness: Logical Implication Operator

Posted on by  
Hubert Klein Ikkink

Since Groovy 1.8.3 Groovy has an implies() method for Boolean types. Groovy 5 adds an operator ==> for this method so you have a shorter way to express a logical implication. A logical implication is a logical function that can be expressed as P ==> Q. You can read this as P implies Q or if P than Q. This expression is true in every case except when P is true, but Q is false. The following truth table shows the interpretaton of the logical implication operator:

P

Q

P ==> Q

false

true

true

false

false

true

true

true

true

true

false

false

Continue reading →

Groovy Goodness: For Loops With Index Variable

Posted on by  
Hubert Klein Ikkink

Groovy 5 adds support for using an index variable in a for-in loop. You must define an extra variable as first argument of the for loop. This variable will be used as index variable. For each iteration of the code in the for-in loop the value of this index variable is incremented by 1. You can use this value in the for loop.

Continue reading →

Groovy Goodness: Create Ascii Bar Charts

Posted on by  
Hubert Klein Ikkink

Groovy 5 adds a new utility method to create an ascii bar chart. You can use the bar method in the org.codehaus.groovy.util.StringUtil class. You can pass a value, a minimum and maximum value and optinally specify the width of the bar chart. The result is a String value consisting of a number of "blocks". A block could be whole, but also 1/8 eights of the block are used to get a nice looking bar chart. How many of these values are needed is based on the input arguments. With this method you have a nice way to format number values on a command-line.

Continue reading →

shadow-left