子在川上曰

  逝者如斯夫不舍昼夜
随笔 - 71, 文章 - 0, 评论 - 915, 引用 - 0
数据加载中……

程序员杂志上的书评

王婆卖瓜自卖自夸,呵呵,不过自夸的地方不多,更多的是写一些对近来技术发展的看法
-----------------------------------------------

  想起国内JAVA开发界两年多前,那时还是JBuilder的天下,Eclipse还很阳春白雪。如今,Eclipse已经进入高速期发展,而当年的霸主JBuilder却开始衰退,Borland公司被迫卖掉了产品线,转向利润更高的服务业。IT界向来是以十倍速在变化着发展着,Eclipse的前进速度同样惊人。写书的时候Eclipse还半紫不红,现在却已经光芒万丈了,使用者众多,连那个月蚀的logo都跟以前微微不同了。Eclipse的插件工具的数量增长很快,对于WEB开发比较重量级的有WTP,各种开源项目(如Struts、Tomca、Hibernate等)都有相应的Eclipse插件工具来辅助开发。
 
  平台开发方面,Eclispe的RCP开始突显,国内一些大公司已经在应用。在《Eclipse从入门到精通》(后面简称《E书》)中讲插件开发时曾提到:对于开发应用类软件的插件,开发者一般都不希望客户能从软件看到任何Eclipse的影子,所以希望能屏蔽掉Eclipse原有的菜单和工具栏。但在RCP出现之前,这样的需求是无法实现的。RCP全称Rich Client Platform(胖客户端平台),它实际上是将Eclipse的插件机制完全的剥离出来,而形成的一个独立的平台。在这样的平台上来开发,既拥有了插件开发的优点,又具有了完全定制的特性。在笔者的实战体验后认为,这种基于插件平台的开发方式,将会是JAVA桌面应用开发的一次革命。
 
  在5年内,JAVA的开发方面将向哪里发展呢?很多人都各自有不同的预测。我认为在构架方面,SOA(面向服务的开发)将成为主流。而界面开发方面将会把注意力再次集中到界面的友好性上面(现在AJAX大热即是这趋势的体现),并将形成三足鼎立的局面:Flash的flex、微软的XAML、Eclipse的RCP。前两种是脚本+解释器的新方式,也俗称第三代WEB技术。这里没有提到XUL,是因为XUL被绑定在Firefox浏览器上,它必然会被后来者XAML替代,谁叫微软的IE浏览器占领着大部份市场呢。RCP则是传统胖客端方式的回归和升华,借助于SUN很久就有的Java Web Start技术,它一样可以实现WEB方式无需现场安装维护的优点。
 
  Eclispe的发展是令人欣喜的,每一次重印《E书》时,我都想加入一些新内容进去。但书的再版不可能这么频繁,所以最后只能在不影响版面的情况下做一些小修改,在后面附加一些和读者的往来Email。不过《E书》依然有着很强的生命力,书中的知识并不陈旧,因为Eclipse的发展是渐近式的累积式的,所以书中的内容仍是必学的基础(谁会只学J2EE,而不学最基本的J2SE呢)。比如,SWT是Eclipse桌面开发的基础;JFace是在SWT之上编写的;插件开发需要大量用到SWT/JFace;RCP则基于插件开发的再提升。新内容的添加只能寄希望在本书的下一版了,希望那一天早点到来。
 
  从2005年6月始,《E书》已经出版快一年了,其间重印了三次,读者评价也很不错。看到自己的劳动能得到了读者的肯定和厚爱,心里很高兴,并在此表示衷心的感谢。为了读者更快的追踪新技术的发展,及为下一版做准备,笔者将开始在www.ChenGang.com.cn发表RCP的一系列文章,希望读者到时能多提宝贵意见。
 
                                                                           2006-3-20 陈刚 于北京稻香园

posted on 2006-03-20 18:41 陈刚 阅读(1762) 评论(4)  编辑  收藏 所属分类: Eclipse从入门到精通

评论

# re: 程序员杂志上的书评  回复  更多评论   

这本书的确写得还可以,就是出版社用的纸张不好:)希望作者能够结合自己的经验,多写一些Eclipse高级编程的书,比如Struts+Jboss+Hibernate完整的网站应用实例,RCP编程详细一步步介绍等。
2006-03-25 10:59 | AlexZhang1980

# re: 程序员杂志上的书评  回复  更多评论   

呵呵,楼上的干脆给你做2包...得了

很弱的建议
2006-03-28 17:04 | gehrb

# re: 程序员杂志上的书评  回复  更多评论   

看你的书遇到问题,给treeviewer表格单元加编辑功能时有个问题,代码如下
final String[] typename = new String[] { "合同清单", "增补清单", "专项定金" };
treeViewer .setColumnProperties(new String[] { "0", "1", "2", "3" });
CellEditor[] cellEditor = new CellEditor[5];
cellEditor[0] = new TextCellEditor(tree);
cellEditor[1] = new TextCellEditor(tree);
cellEditor[2] = new TextCellEditor(tree);
cellEditor[3] = new ComboBoxCellEditor(tree, typename, SWT.READ_ONLY);
treeViewer.setCellEditors(cellEditor);
treeViewer.setCellModifier(new ICellModifier() {
public boolean canModify(Object element, String property) {
return true;
}

public Object getValue(Object element, String property) {
TableTreeParent node = (TableTreeParent) element;
switch (Integer.parseInt(property)) {
case 0:
return "" + node.getCode();
case 1:
return "" + node.getName();
case 2:
return "" + node.getUnit();
case 3:
for (int i = 0; i < typename.length; i++) {
if (node.getType().equals(typename[i])){
return new Integer(i);
} }
default:
return "";
}
}

public void modify(Object element, String property, Object value) {

System.out.println("property.modify===="+property); //从此发现问题
TreeItem item = (TreeItem) element;
TableTreeParent o = (TableTreeParent) item.getData();
switch (Integer.parseInt(property)) {
case 0:
o.setCode((String) value + "");
break;
case 1:
o.setName((String) value + "");
break;
case 2:
o.setUnit((String) value + "");
break;
case 3:
Integer typeValue = (Integer) value;
String type = typename[typeValue.intValue()];
o.setType(type + "");
break;
default:
break;
}
treeViewer.refresh();
}
}
);
获取0、1、2单元编辑的值都正常,只有ComboBoxCellEditor的3单元有问题,编辑它时并不马上触发执行modify,而是在3单元操作后再点击其它单元比如2单元后才会连同执行modity打印property.getValue=3 property.getValue=2,才能获取3单元编辑的值。
2006-04-14 14:27 | aq_say

# re: 程序员杂志上的书评  回复  更多评论   

抱歉敲错了是
property.modify===3
property.modify===2
2006-04-14 14:37 | aq_say

只有注册用户登录后才能发表评论。


网站导航: