<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:fh="http://purl.org/syndication/history/1.0"><channel><title>JavaCard Wiki | 博客</title><description>Java Card 开发资源与文档：环境搭建、APDU、CAP、GlobalPlatform 与工具链。</description><link>https://www.javacardwiki.com/</link><language>zh-CN</language><fh:complete/><atom:link rel="self" href="https://www.javacardwiki.com/blog/rss.xml"/><item><title>从一个最小的 Applet 开始</title><link>https://www.javacardwiki.com/blog/starting-minimal/</link><guid isPermaLink="true">https://www.javacardwiki.com/blog/starting-minimal/</guid><description>为什么这个站先只放一个 Hello World 级别的 Applet，而不是一套完整文档。</description><pubDate>Tue, 20 Oct 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Java Card 的资料不缺，但大多分散在 PDF 规范、论坛帖子和各个项目的 README 里。真正卡住第一次上手的问题往往特别具体：SDK 装哪个版本、CAP 怎么打包、装上去之后 &lt;code dir=&quot;auto&quot;&gt;gp -l&lt;/code&gt; 看不到应用、发一条 APDU 回来的是 &lt;code dir=&quot;auto&quot;&gt;6A82&lt;/code&gt; 而不是 &lt;code dir=&quot;auto&quot;&gt;9000&lt;/code&gt;。&lt;/p&gt;

&lt;p&gt;所以这个站没有先铺一套“完整文档”，而是先把最小闭环跑通：一个 Applet、一次安装、一条命令、一个响应。&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;最小闭环长什么样&quot;&gt;最小闭环长什么样&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;首页上那十几行 &lt;code dir=&quot;auto&quot;&gt;HelloWorldApplet&lt;/code&gt; 已经包含了 Java Card Applet 的全部骨架：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;install()&lt;/code&gt; —— 卡管理器加载 CAP 之后调用，负责把 Applet 实例注册进 JCRE；&lt;/li&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;register()&lt;/code&gt; —— 把实例和一个 AID 绑定起来，之后 SELECT 才有东西可选；&lt;/li&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;process()&lt;/code&gt; —— 每条 APDU 的入口，&lt;code dir=&quot;auto&quot;&gt;selectingApplet()&lt;/code&gt; 为真时是 SELECT 本身；&lt;/li&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;setOutgoingAndSend()&lt;/code&gt; —— 把响应写进 APDU 缓冲区并发回去。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;把这四件事看明白，剩下的都是在这副骨架上加东西：状态机、安全通道、持久化数据、密码学。&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;接下来会写什么&quot;&gt;接下来会写什么&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;先补的是能直接解决“跑不起来”的内容：环境与 SDK 选择、用 ant-javacard 打包 CAP、用 GlobalPlatformPro 安装与删除、状态字对照与排查顺序。之后才是概念性的部分，比如 APDU 的四种 case、T=0 下的 &lt;code dir=&quot;auto&quot;&gt;61xx&lt;/code&gt; 与 &lt;code dir=&quot;auto&quot;&gt;GET RESPONSE&lt;/code&gt;、CAP 文件结构、SCP02 与 SCP03 的区别。&lt;/p&gt;
&lt;p&gt;这些内容现在还没写，因为它们应该由实际操作中的问题驱动，而不是先摆一排空页面。&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;怎么读这个站&quot;&gt;怎么读这个站&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;站点只有一页文档，直接看&lt;a href=&quot;https://www.javacardwiki.com/&quot;&gt;首页&lt;/a&gt;就行，那是最小的可运行版本。博客这边用来记录更新、工具链变动和踩过的坑——比改文档更及时，也更容易写清楚“为什么这么做”。&lt;/p&gt;</content:encoded><category>开始</category><category>APDU</category></item></channel></rss>