I have a Java Card enabled smart card and a card reader that was given by my Lab-instructor. I am supposed to do a project using Java Card 2.1.1 API.
I don't like the Java Card API.
Is it possible to program my given smart card using any other language like C?
Best How To :
The general answer :
Unfortunately no, currently there is no other way than using Java Card API to program a Java Card compatible card.
The detailed answer:
Some kind of cards have a mechanism named "Secure Box". As mentioned in the JCOP v2.4.2 r3 card Security target :
The Secure Box is a construct which allows to run non certified third party native code and ensures that this code cannot harm, influence or manipulate the JCOP 2.4.2 R3 operating system or any of the applets executed by the operating system.The separation of the native code in the Secure Box from other code and/or data residing on the hardware is ensured by the Hardware MMU which has been certified in the hardware evaluation.
Here and here you can see some information about Secure Box. As far as I know, you can write applications in C or Assembly language and upload them on the Secure Box. But it is really really tricky and I think finally you will change your opinion about the Java Card API and you will make a decision to try to not only like it, but also love it! ;)
Note that, in comparison with Java Cards, there are some other kind of cards named "Native Cards". The operation system in this cards is not Java Card Runtime Environment/Virtual Machine. These cards have a proprietary/manufacturer-specific way and language (Normally C or Assembly) to develop applications. But it is not as easy as Java Card applet development. And you will make a decision to try to ....love it again :D
Update : (Thanks to dear Vojta)
Sorry, I was forgot that. As Vojta mentioned in his comment, one of most known native card types is MULTOS. You can write programs in C, Java, Assembly and some other language for these cards and after that you must convert them to MELL (MULTOS card's language) using SwiftCard tool (consist of SwiftC and SwiftJ and ...). Some good documents here and here.