Sono piuttosto arrugginito con le mie smart card, ma comunque mi darò una risposta.
Le smartcard sono piccoli computer integrati a se stanti e quindi utilizzano un sistema operativo molto semplificato. I 2 che menzioni sono quelli standard.
Tutti hanno alcune funzionalità standard che non sono particolarmente dipendenti dal sistema operativo. La possibilità di presentare un certificato, crittografare / decrittografare alcuni dati, richiedere un PIN, ecc. Fanno tutti parte delle specifiche delle smartcard. Queste caratteristiche sono accessibili da un computer host tramite una libreria di interfaccia standard, in genere PCSC.
Inoltre, la maggior parte, se non tutte, le smartcard dell'ultimo decennio sono in grado di comportarsi da semplici computer generici, ed è qui che vengono le differenze. Le smart card Java eseguono una versione integrata di Oracle Java come sistema operativo e utilizzano Java come linguaggio di programmazione, le schede .NET utilizzano una versione integrata di Microsoft .NET in modo simile. Originariamente, c'erano solo smart card "stupide" e smart card "intelligenti" basate su Java. Ora credo che quelli .NET siano molto più comuni.
Spero che questo aiuti.