Sun Tech Days 2007 -- Day 2
Sun Tech Days 2007(北京站)已经结束了,趁热打铁,在此把本次会议中我的所见、所闻、所思与所得记录下来。本文是关于我在Sun Tech Days第二天中的相关见闻思得以及总结。(2007.11.10最后更新)
第二天的流程与第一天的基本相同,只是在上午多了一个赢取Java茄克的活动。走上舞台,以自己的才艺(编程不算才艺 :D)表演打动台下的观众,谁得到的掌声最热烈,谁就能得到那两件(分成了两个组,每个组有一件)茄克。这个表演算是当天上午最有趣的活动了。十分佩服那些勇于走上台的朋友,嘿嘿,就算Jonathan请我上台,我也"懒"得去(Oh, oh, oh ... come on, please show yourself!)。
关于当天的Sun技术演示就不描述了,想说说当天的主题演讲,是由Oracle Fusion Middleware的一位副总裁做的,题目是"SCA/SOA Service Component Architecture"。哦哦哦,这个题目真够高深的,我可不想对它品头论足,只想提一下JDeveloper。相信很多朋友都知道甚至用过JDeveloper,我早前也下载过JDeveloper10,但并没有真正地使用过,主要是由于当时自己的机器只有512M内存,运行JDeveloper有些勉强。每年的STD,Oracle都会有相关主题展示使用JDeveloper开发Web/JSF应用。从Oracle的演示来看,使用JDeveloper+ADF(Application Development Framework,Oracle的Java EE开发框架)进行Web开发确实不错。依稀记得在2005年的JavaPolis,比利时Java用户会议(规模很大,并不仅限于比利时),大会中有一个RAD(Rapid Application Development)编程比赛,结果排在前三名的团队竟然全部都是使用JDeveloper。看来JDeveloper在RAD方面确有自己的独到之处。但必须注意的是,使用JDeveloper是完全免费的,但使用ADF需要支付费用。这可能也影响到了JDeveloper的普及,毕竟免费的工具/框架足够多了。至于Fusion,我应该是第一次听到它,有兴趣的朋友可以去看看。相比较第一天而言,第二天中我所关注的主题较少,下面将介绍当天我所参加的各个技术专题。
Java DB:多个层次的数据库。
Java DB是我最为关注的主题之一,今年仍然是由Sun的数据库产品经理Manyi Lu主讲。相信很多人都已经认识了Java DB,可能更多的人在更早的时候就知道了Apache Derby,而又可能有更更多的人在更更早的时候就知晓了Cloudscape。那么现在肯定也已经有不少朋友知道Java DB,Apache Derby和Cloudscape就是同一个数据库。实际上,Sun和IBM都各自出一部分开发员一同在Apache社区中进行Java DB/Apache Derby/Cloudspace的开发。而Sun/IBM又会为它们的产品Java DB/Cloudscape提供商业的技术服务。
作为一款关系型数据库,对于已经习惯于RDBMS的开发者而言,使用起来肯定不是难事(当然,凡事想做好,也不是易事)。完备的SQL引擎--视图,存储过程(Java存储过程),函数,触发器,外键约束;ACID性;支持标准的SQL;...这些基本的RDBMS特性似乎都不需要特别地提及。我想大家最关心的肯定是它的性能(是的,我们都关心数据库的性能,更何况它是用Java写的#_#)。Manyi每次都特别地强调,与同等层次的数据库(MySQL,PostgreSQL)相比,Java DB的性能毫不逊色,在某些情况下甚至更高。一般地只能认为Java DB,MySQL和PostgreSQL各有所长。Java DB长于磁盘I/O;MySQL优在单表查询;PostgreSQL擅长多表查询(用它作数据分析比较好)。另外,Manyi还介绍了一些提高Java DB性能简便方法。这些方法确实既简单又实用,任何人都可以掌握它们。这些小技巧以及Manyi想但没时间为大家演示的例子,大家都可以在Java One 2007的主题" Java DB Performance"和"Enabling Offline Web Applications with Java DB"中找到出处。
不得不说,今年的Java DB Session新意不多,当然这只是针对那些听过去年的这个Session的朋友而言。不过更正了我记忆错误的一个数据:听了去年的Java DB,我一直以为Sun内部测试时使用的数据量已经达到了300T;但今年再看,那个数据量应该是300G,目前已经达到了700G,他们的目标是1T。失之毫厘,谬以千里。不过,去年是听的,幻灯片中没有写,而T与G的读音相近,所以弄错了。而今年是在幻灯片中写着的,才得以纠正这个错误。
动手实验室:Java SE 故障诊断工具大全。
要动手,才能把知识学牢固。每届的JavaOne和STD中都有不少的动手实验室,这对大家的帮助肯定很大。在2005年的STD中,我参加了一个使用NetBeans的Matisse构建Swing GUI的动手实验室。虽然在那之前,以及在那儿之后的很长一段时间内,我都没有经常地使用NetBeans。但一直认为Matisse构建GUI确实很方便,将困难的部局管理器参数的设置几乎完全可视化。不说Matisse了,还是谈谈JDK 6中带的一些工具吧。这个动手实验室介绍了jconsole,jinfo,jmap,jhat,jstat,jps,jstack,...,这些工具看起来虽小,但功能却很实用。用它们可以查看当前系统中的Java进程,查找对象,分析内存泄漏,找到可能的线程缺陷(如死锁),...虽然分析应用程序的工具很多,如NetBeans的Profiler也可以做相同的工作,而且能够做得更多更好,但有时候手边一时没有那些大玩意儿,或者只能使用命令行界面,那么这些小玩意儿就能派上大用场了。
关于这个动手实验室,大家还可以参见JavaOne 2007中的一个动手实验室"Monitoring and Troubleshooting using JMX and JConsole Lab"。
通过这个动手实验室,我的收获确实不少。这时也想到,要把一件事情做好需要做很多的工作,也就需要花很多的时间。在开发的过程可能需要做单元测试、静态分析、代码检查、性能测试与优化、...,但在实际的工作中恐怕没有那么多的时间与精力去做这么多的事情,而且这里的每件事情都需要细心与耐心。这样到了项目的结束时,我想很多人心中都会有很多遗憾。为什么我们不认认真真地做完一件事情呢?至少让自己少遗憾一次吧。
开放的Sun SPOTs,Ericsson技术专题,In-Time Java。
这是我当天听的另外三个Session。说实话,我对它们都没什么兴趣,也没认真听,所以就放在一起混说吧。前两个主题都是关于Java ME的。正如前面我所说的,Java ME不是我关心的领域,但看着讲师们在那儿玩弄着各种器件(机器人,掌中设备,...),像变魔术似,也不禁有些心动。纯Java似乎虚了些,Java+粗笨的服务器也不好玩,Java+手机之类的器件才有趣嘛。对Java ME有兴趣的朋友可以参考Java One中关于ME的Session。
再谈谈In-Time Java,No,no,no,我可不懂什么In-Time Java,但我知道讲师提到的Mars Pathfinder(火星探路者)飞行器。著名的JPL(美国喷气动力推进实验室,诞生过多位诺贝尔奖获得者)的著名的火星探路者当然是飞到了火星上,还在火星上工作了很长的时间。但这与Java有什么关系吗?当然有关系了,而且关系大着呢。这个飞行器的软件系统就是用Java写的!Oh,a cup of Java, cheers!哈哈,Java在火星上都能运行良好,更何况在地球上呢。Mars Pathfinder是Java发展历程中的一件大事,我想每位Java人都应该知道它。
随便提一句,我本人也"有幸"与JPL"沾"上点儿关系。在猴年马月的寅时卯分,我这个超级无敌菜鸟级兼职系统管理员手下的两台公网服务器不知被哪位贪吃的黑客相中,成为他/她/它盘中的"肉鸡",然后被利用去攻击JPL的服务器,还因此收到了FBI的警告信!吾在中国,岂能受你山姆大叔的恐吓!!!但从中美两国人民友谊的大局出发,我还是请来了一位高手,问题很快就解决了。现今吾已经专责于Java程序开发,恐日后再难遇到类似事件了 @_@
小结
上周四、周五开完会之后,确实有些累,每天奔波于南五环外与北四环之间,算是体会到了公司里很多同仁们每天都要遭受的煎熬(本人的住所与公司离得很近)。不过,心情很愉悦。趁着这股兴奋劲儿,利用上周末的两天,以及最近三天的晚上(每天都是凌晨1点左右才睡觉)完成了这两篇关于STD的随笔,相信看到本篇随笔的朋友已经看过我的上一篇随笔了。
今年参会人数(约1500人)比去年多,为此会务组特意安排了两个主会场。熟话说,人上一百,形形色色。参加STD的朋友们各自的"特性"肯定不尽相同,甚至相差很大。但我想说,只要大家怀着学习的心态就都会认为在STD中定有所收获。不论,你的Java技术水平高或低,喜欢/从事Java Web或桌面或嵌入式应用开发,我想大家都会各有所需,各有所得。毫无疑问,STD的讲师们(基本上都是Sun的Technology Evangelist)不可能在如此短的时间内把一个主题完全讲清楚。比如Concurrency,这就是一个十分复杂的主题,恐怕与会的朋友们中的大多数都不能清晰地描述它(反正我是不太懂,但我正在研究并发编程)。因此,就算讲师是Brian Goetz/Doug Lea/Joshua Bloch,也不可能讲得很深。但我们不能因此而说,参加此类技术活动还不如自己在家里看书。记得在上小学时,教师就告诫过我们:你听老师讲,比你自己看书效率要高很多。
但同样要说,如果只是听别人讲,也是远远不够的。STD不是技术培训班,这本来就是大家的一个交流与沟通的平台。与会者和讲师之间,与会者和与会者之间都应该有交流和互动。很惭愧,我在这一点上做的很不好。不过,我会改进的。实际上我已经有改进了,这回我就多次"举手",只是运气不好,讲师没有点到我(当然,这些也只是小的进步罢了)。
说到交流,就不能不说到英语。相信这是很多技术朋友们的一块心病,me too!虽然自己平时看英文技术文章比较多,也翻译过若干篇文章,但听/说仍然是一大难题。不过,长期的努力还是会有一些进步的。记得今年4月26日在北京第一次参加db4o的用户会议时,db4o的CEO Christof很热情地与每一位参会者进行一对一的交谈。可惜我的英语听/说都很差,结果基本上都是Christof在说,而我只说了不到十句话,并且我也听不懂他所说的大部分内容(How shame I am!!!)。不过,到了9月30日去武汉第二次参加db4o用户会议时,我就能和Christof聊上一会儿了。当然,这种进步并不算大,但一次小小的进步就是一次大大的鼓励。
最后祝我自己每天都有新的进步,每年都有大的进步!
最最后祝大家都有大大地进步!!!
同是Java爱好者,相逢何必曾相识! -- 江莎
a cup of Java, cheers!-- Sha Jiang
jiangshachina