技术开发 频道

汪永松:浅谈《J2ME手机高级编程》的写作经历

  【IT168 专稿】拙著《J2ME手机高级编程》终于出版了!欣慰之余,笔者总觉得是不是该把这段经历进行一下简单地总结,好歹是自己的第一次尝试。恰好遇到it168的编辑聊到移动开发,所以趁此机会,借it168的空间把这段时间进行一下梳理。

  汪永松的专家专栏:http://tech.it168.com/jd/2007-12-28/200712281605350.shtml

 

  笔者真正开始在J2ME平台上写第一个Java小程序“MyFirst”并移植到的自己的那部N5310已经是在08年8月初的时候,而书稿目录确定下来是在12月末(笔者戏称为“08年的圣诞节礼物”,“07年的圣诞节礼物”是IT168的专栏开栏)。其间,白天还要干好本职工作,所以手机相关的开发和写作只有在工作之余,利用休息时间来进行。在这些自行的开发工作中,实机调试和写作是最花费时间的地方,记得有好几天都忙到凌晨1、2点。

  在前后不到半年的时候能够总结出这么多的开发经历并积累到这么多的开发经验,笔者觉得除了实用的效果驱使出强烈的开发兴趣之外,恐怕和自己平时的学习方法和经验积累不无关系。下面,笔者将会就自己在这段时间里的一些行为方式和读者朋友们进行探讨。

  1.快速学习——举一反三

  古语有云:“察已则可以知人,察今则可以知古”,以自己所学过的来启发没有学过的,这就是笔者经常使用的一种学习方式。在学习J2ME平台的MIDlet、Xlet以及Android平台的Activity的时候,笔者通过联想到J2SE平台的Applet,这些无非都是平台定义的框架,没有必要在初学之初钻牛角尖儿;学习蓝牙通信的时候,笔者联想到Java RMI(远程方法调用),服务端为了客户端能够找到它,必须暴露出它的一些设置,两端必须共享一些公共的定义;学习Java AWT的事件处理时借鉴对Windows消息队列的理解,一切疑云也是一扫而光。这样的例子举不胜举。

  笔者大学里最先接触到的是Turbo C,脑子里整天的都是指针、文件、图形库。最深的就是DOS中断,什么21号(常规)、10号(显示器)、13号(磁盘)、16号(键盘)、33号(鼠标)中断等。因为太多没有别的内容可以联想,所以学得比较辛苦,相信读者朋友们是否有同感。

  幸运的是,笔者对于OO的起步并不是从C++,也不是Java,而是从JavaScript,通过在IE上写JavaScript小程序,笔者就顺利地理解到了什么是window对象、什么是document对象。等到再学C++,就完全不用在黑灯瞎火(Borland C++似乎也是一个黑乎乎的屏幕)中绞尽脑汁地想什么是对象了。

  俗话说:“万事开头难”,开头之难难的在于没有借鉴、没有启发。但是一旦等读者掌握一门语言、一种技术、一块领域,就请您给它装上联想的翅膀,让它更好地用于引导您穿越那些您还没有接触到的语言、技术和领域。

  2.提升学习的效果——学以致用

  从C到HTML、JavaScript,再到Win32、C++、Java,笔者的技术方向似乎并不是很明确。但是其中有一条贯穿的主线就是:应用。如果说学C还是在半主动半被动的状态下,但是当笔者接触到JavaScript后就开始对编程产生了浓厚的兴趣,因为JavaScript可以在网页上很直接地看到效果:事件响应、UI提示、表单检查……相比用C在DOS下写黑咕隆咚的小程序,感觉应用的视野一下子被打开了。再到后面的Win32、Java,从应用程序的层面到操作系统、从实体平台到虚拟化平台……就像跳伞的时候,“嘭”的一声,整个计算机应用的视野无限的呈现在笔者眼前。

  至今还令笔者引以为豪的一个开发案例是自行开发了一款支持JSP的HTTP服务器()。其包含了HTTP、MIME、套接字通信、多线程、进程间通信、CGI、ClassLoader、字符编码/解码等知识点。汇集了笔者在Win32、HTML、CSS、JavaScript、Java等领域的应用经验,也是第一次让笔者感受到了应用不分语言、不分平台。通过这种综合性的应用,能够让读者的知识层次跟深、知识的关联性更紧密,从而更容易形成解决方案。

  3.建立自己的知识库——积累

  现身说法,笔者有4个封皮是透明的纸质笔记本,封面上写着这本笔记的主题内容,例如:Win32、Java、数据库等。其中的内容包括:某函数的用法和注意点、解决特定问题的思路和技巧、实际案例的开发步骤和要点等。等到笔者再次遇到相同或类似的应用环境或问题时,只需要简要参考一下笔记本即可迅速找到解决该问题的思路。而且如果想到更好的思路或解决方案,笔者还会将这些更好的实践添加到原来的笔记之中,从而形成更加成熟和完备的提案。

  通过这些积累,笔者在组织《J2ME手机高级编程》一书的内容的时候,基本上感觉是左右逢源,一气呵成。从网友读者的反馈看来,书中的那些实践心得和技巧要点,确实让该书增加了不少可圈可点之处。

  4.坚持应该坚持的

  开发的驱动力很大程度上来自于个人兴趣或目的性。就笔者自己而言,有时就会因一时的兴趣或灵感就可以废寝忘食、锲而不舍地进行编码、调试,直到自己的想法得到验证或者解决了悬而未决的难题。在开发过程中,笔者可以收获到新的结论、经验和成果。

  与之不同的是,写作的目的更多的是为了总结、与读者分享经验。作者往往为了说清楚一个案例,不得不要把整个开发过程的始末都要梳理一遍,并根据目标读者的层次来调整解说的详细程度。这个梳理的过程对于大多数开发人员来说是可能是枯燥至极的,所以需要更多的耐心和坚持。实际上,总结或者分享自己的经验,不仅可以帮助读者少走弯路,解决实际问题,而且也可以通过读者的反馈来发现自己的思维瓶颈,提升自己的思维能力。

  结束语

  就像大学毕业刚参加工作那阵,笔者经历了从学生到职业人的角色转变,这次笔者又经历了一次从开发人员到作者的角色转变。笔者相信,只要读者朋友们能够掌握有效的学习方法,勤于在实践中积累经验,一定能够快速地丰富自己,适应各种各样的角色转变。

0
相关文章