- direct access to printer: the user wanted to print on a specific tray of the printer, without selecting it every time. JS only implements window.print() with no fine grained printer control.
- serial/parallel/usb access: access to a POS for card processing, and we needed to write some data on a smartcard.
- plain TCP connections
- read/write files on the local filesystem.
I understand that all these features require more control of the underlying hardware and need to be somehow secured, but we did not want to write a desktop app just for these features, and applets gave us the means to implement what the user needed. Once JS can do that, applets can die a quick dead.