子在川上曰

            逝者如斯夫不舍晝夜
          隨筆 - 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 陳剛 閱讀(1771) 評論(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
          主站蜘蛛池模板: 伊通| 尚义县| 连城县| 景谷| 大英县| 左权县| 郧西县| 泽普县| 广灵县| 宝丰县| 临沧市| 沙雅县| 镇安县| 包头市| 灌南县| 夏津县| 沾化县| 阿拉尔市| 萨嘎县| 延津县| 广灵县| 德阳市| 祁阳县| 嫩江县| 岐山县| 三明市| 罗平县| 阿城市| 溆浦县| 景泰县| 西畴县| 隆林| 肥东县| 舞阳县| 陆河县| 曲水县| 岑巩县| 印江| 商洛市| 榕江县| 巴南区|