我们常用的地铁卡/银行卡,竟然运行着一个 Java 虚拟机

我们日常使用 NFC 卡可以用来刷地铁,进出门禁,但是你有没有想过,

当我们使用一个 NFC 的 IC 卡刷卡进入地铁的时候,此时系统是如何知道我这个卡上有多少充值余额的?

这个薄薄的 NFC 卡到底有什么魔力,除了可以刷卡进地铁,还可以去银行取钱,进出小区门禁。

今天我在看到一些物联网的知识时,在发现原来这中间的技术原理原来是这么回事

原理

目前我们常见的NFC智能IC卡上,实际是运行着 JavaCard 虚拟机,NFC智能 IC 卡上可以运行由精简后的 Java 语言编写的卡应用(简称 Applet)。

NFC智能 IC 卡的 Applet 不能自己启动,必须由外部终端(例如 POS 机,地铁刷卡终端等)向卡片发送 Select 命令,由此选中卡片中的 Applet,Applet 才能运行。

那么我们基于 Java API,实现了一套JavaCard applet小程序后,如何将该小程序运行在 NFC 上呢。

1、使用智能卡读卡器连接到计算机,并确保读卡器能够识别NFC智能卡。

2、通过个人化工具选择卡上的卡管理应用(通常是Global Platform卡管理应用)。

3、使用个人化工具将CAP文件安装到智能卡上。(我们 Applet 程序打包后是一个 CAP 文件)

此时这个 NFC 卡上就运行着一个小程序了。

但问题又来了。既然这个 NFC 上一直运行着 Java 虚拟机,难道这个 NFC 不需要耗费电源吗?

没有电源,这个 NFC 小程序如何运行?

答案是:还真不用外接电源,通常 NFC 会使用无线感应供电。

NFC智能卡通过无线感应方式从NFC读卡器或NFC设备获取电力。当NFC卡片靠近读卡器时,读卡器产生的交变磁场会在卡片内部的线圈中感应出电流,这个过程称为电磁感应。因此,NFC卡片不需要内置电池,它们通过这种方式获得所需的电力来运行。

真的是太6啦!