AVR microcontrollers have many ways to be programmed. One type adapters are used only to
program AVR memory other are used to program and debug.
AVRISP
Most known and common programming adapter is AVRISP, which is the basic tool and can be used to program Flash, EEPROM memory, most of fuses, lock-bits for probably all 8bit AVR MCU’s.

Programmer connects to a computer via RS232 serial interface and is powered from target board with no need additional power supply. Programmer connects to target board via one of two headers – 6 or 10pin. AVRISP from Atmel corporation is designed to work from AVRStudio as front end software and is upgradable. However AVRISP is discontinued due to newer adapter appearance – AVRISP MKII. There are cheep third party clones available. But most of them aren’t compatible with AVRStudio, but works well with programs like PonyProg or AVRDUDE.
AVRISP MKII
AVRISP MKII is more advanced programmer which is fully supported by Atmel. Adapter connects to host PC via USB cable and is fully compatible with AVR Studio.

AVRISP MKII adapter allows to avoid connecting errors like reversed connector or short circuit. Adapter has indicators who indicates faulty connection. USB interface gives many benefits as RS232 standard is disappearing – especially for laptop users. USB also gives high speed programming ability comparing to RS232 that is in AVRISP.
JTAGICE
Jtag pushes developer to higher level of developing. JTAG primary purpose is not to program target device, but to debug it on-chip. We are not going to talk about debugging benefits as you can find in other articles but as key features I can mention: real time debugging with stop option at desired point, inspect and change memory contents during program flow, program stepping and so on.

JTAG adapter is interfaced using 4 wires to MCU test access port. This adapter has been discontinued due to newer adapter arrival(JTAG MKII). There are third party clones available ones you can build by yourself.
JTAG MKII
This is further evolution of JTAG adapter.

Adapter has larger device support because of debugwire protocol which allows to debug target through one pin(Reset). JTAG MKII adapter can be connected to host computer via USB or RS232 cable. Adapter also can program through ISP interface. In my opinion this is the most flexible tool compared to above, but price may not encourage to purchase one ~ 300$ – I wander is there any clones coming…