New AVR processors from Microchip/Atmel use a 1-wire UPDI interface for flash programming. You could use either AVR ICE or Pickit 4 as the “official” programmers (I did not test any of them). Both of these cost >50 EUR.
A good alternative, presented in this post, is to modify the ATtiny817 Xplained Mini board (costs ~10 EUR) and use it as the UPDI programmer:
ATtiny817 Xplained Mini is the official evaluation board for ATtiny817 processor. Besides the ATtiny817 processor, the board also has another MCU ATMEGA3204 acting as a USB-powered flash programmer. By connecting this board to a PC, you get a complete working platform with an UPDI programmer in ATMEGA, and the user-programmable ATtiny817.
Modification: remove the 0-ohm resistor R203 near the ATMEGA. It is marked UPDI disconnect in this picture:
I add two single-pin headers: first connected to the output of UPDI on ATMEGA, second to the input of UPDI on ATtiny. Using a jumper wire between these two the system works as usual. Or the UPDI output could be brought to another board for programming of a different target.
As the programming sw I use Atmel Studio 7. To program a different target than the default ATtiny817, you need to manualy write the device type in the Device drop-down list of the Device Programming window. Here I use it to program ATtiny402 on a breadboard: