`
yinchunjian
  • 浏览: 284302 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

升级到Eclipse Galileo

阅读更多

使用Eclipse Galileo 已经半个多月了,对Galileo 的这次升级感到很满意!从Europa Ganymede 再到Galileo , Eclipse 在每年6 月底发布一个新版本,每年为用户带来创新成果、每年为用户带来新的喜悦。我的工作是从事电子政务软件开发,开发的项目和产品,有的采用C/S 结构、有的采用B/S 结构、或者是采用C/S B/S 的混合结构。对我来说,Eclipse 是值得信赖的,我的工作和生活已经离不开她。下面谈谈我是如何利用Eclipse 解决工作中面临的问题,以及我比较喜欢Galileo 的一些特性。  

1 RCP 软件开发

    我们的产品基本上都包括数据采集、数据传输、综合应用和数据仓库几个部分。鉴于政府窗口办公实时性和可靠性的要求,我们的数据采集部分大多采用C/S 结构模式,采用本地数据库,开发语言大多采用Visual Basic Pasic(Delphi) Visual C++ ;数据综合应用部分采用B/S 结构模式,基于J2EE 体系结构。原来系统存在的主要问题是维护工作量大,如果新增加一个需求,则可能需要变更前端、通信及台后三个部分的代码,编码与测试都是一件很痛苦的事情。

    经过多方面的比较选型后,我们决定基于C/S 结构的项目,采用Eclipse 富客户端平台(Eclipse RCP), 前端是RCP 、后端是JavaEE 应用服务器和数据库,数据持久化采用EclipseLink Eclipse RCP 解决了富客户端软件开发的大部分问题,让开发人员将关注重点转移到客户的业务需求,简化了应用软件的开发。另外,Eclipse RCP 基于插件的体系结构,解决了软件复用问题。

2 Web 应用开发

    Web 应用开发我们主要使用JBoss Seam 框架,JBoss Seam 将标准的JavaEE 技术和几个非标准但很有趣的技术集成为一个具有统一规范的编程模型,这些技术包括JSF EJB3 JPA Hibernate JBPM Drools Ajax4jsf Facelets RichFaces GWT Wicket 等,Seam 切实简化了Web 应用软件开发。

    随着Galileo 版本的发布,JBoss 紧跟着也发布了基于Galileo JBoss Seam tools 插件,为Galileo 版本提供了Seam 开发工具。JBoss Seam tools 可以通过更新管理器,从更新站点http://download.jboss.org/jbosstools/updates/development 升级。也可以下载压缩包,解压到Galileo 相应目录。下载Seam 开发工具后,需要配置Seam Window”—>“Preferences” 打开属性编辑窗口,找到“Jboss Tools”-->“Web”-->“Seam” 项。运行时。单击“

    单击“Add” 按钮,出现编辑Seam 运行时窗口:

    设置Seam 运行时所在文件夹( 如“/opt/jboss-seam-2.1.2”) 后,即可在Eclipse 环境进行Seam 开发了。利用Seam-gen 可以从数据库生成我们需要的Java 类和Facelets 页面文件;可以可视化编辑Facelets 文件、页面流及Drools 规则等;还可以自定义FreeMarker 文件,生成我们想要的任何文件。

    在ubuntu 9.0.4 下使用Jboss Tools HTML 编辑器打开xhtml 文件时如果出现错误:

Could not open the Visual Page Editor: /opt/eclipse/plugins/org.mozilla.xulrunner.gtk.linux.x86_1.8.1.3-20070904/xulrunner/libjavaxpcomglue.so: libstdc++.so.5: cannot open shared object file: 没有该文件或目录

    则需要安装libstdc++5 库:

yawolf@yawolf:-$ sudo apt-get install libstdc++5

     Web2.0 应用开发离不开CSS JavaScript AJAX ,本次发布的Galileo 版本提供了JavaScript 编辑器 ,为JavaScript 的编辑和校验提供很大的便利。

3 C/C++ 开发工具

    很希望我们的应用全部基于JavaEE 平台,但目前这只能是一个奢望,我们的软件需要跟硬件设备打交道:驱动图像扫描仪、驱动第二代居民身份证读取机具、调用其他一些DLL 动态库或OLE/COM 组件等等,所有这些都需要C C++ 编辑器,封装JNI 以便实现Java 调用。还好,Eclipse 为我们提供了C/C++ 开发工具,可以让我们方便地进行C/C++ 开发。

4 、我喜欢Galileo 的一些特性

    ( 1)Java 对比编辑器(compare editor)

    在进行版本控制时,我们需要比较前后究竟做了哪些修改?Galileo Java 对比编辑器(compare editor) 的增强,使得版本变化比较直观、方便。

    (2) 增强的JavaScript

    现在SWT 浏览器控件不但可以从java 调用JavaScript 代码,也可以从JavaScript 调用Java 代码。这可以使我们的RCP 应用可以紧密地与Web 浏览器结合起来。例如,在我们的RCP 应用中,可以调用Google 地图,通过Google 地图返回的地理位置信息,在RCP 中显示相关该地理位置的建筑物名称、使用单位、居住人员等信息。

    在下图中,左边是通过SWT 浏览器调用Google 地图,显示温州市区地图,当在地图上单击某点时,左边通过JavaScript 显示地理位置信息,右边通过Java 显示地理位置信息。如果,我们在数据库中存储地名与地理信息的关联,就不难实现通过地理位置信息查询其他与应用相关的信息。

    下面是Java 类:

  1. /*******************************************************************************  
  2.  * Copyright (c) 2000, 2004 IBM Corporation and others.  
  3.  * All rights reserved. This program and the accompanying materials  
  4.  * are made available under the terms of the Eclipse Public License v1.0  
  5.  * which accompanies this distribution, and is available at  
  6.  * http://www.eclipse.org/legal/epl-v10.html  
  7.  *  
  8.  * Contributors:  
  9.  *     IBM Corporation - initial API and implementation  
  10.  *******************************************************************************/   
  11. package  org.eclipse.swt.snippets;  
  12. import  java.io.File;  
  13. import  java.io.IOException;  
  14. import  org.eclipse.swt.SWT;  
  15. import  org.eclipse.swt.SWTError;  
  16. import  org.eclipse.swt.browser.Browser;  
  17. import  org.eclipse.swt.browser.BrowserFunction;  
  18. import  org.eclipse.swt.custom.SashForm;  
  19. import  org.eclipse.swt.events.ControlEvent;  
  20. import  org.eclipse.swt.events.ControlListener;  
  21. import  org.eclipse.swt.layout.FillLayout;  
  22. import  org.eclipse.swt.layout.GridData;  
  23. import  org.eclipse.swt.layout.GridLayout;  
  24. import  org.eclipse.swt.widgets.Composite;  
  25. import  org.eclipse.swt.widgets.Display;  
  26. import  org.eclipse.swt.widgets.List;  
  27. import  org.eclipse.swt.widgets.Shell;  
  28. public   class  Snippet308 {  
  29.     static  List list;  
  30.     static  Browser browser;  
  31.     public   static   void  main(String[] args)  throws  IOException {  
  32.         File f = new  File( "map.html" );  
  33.         Display display = new  Display();  
  34.         final  Shell shell =  new  Shell(display);  
  35.         shell.setText("SWT & JavaScript" );  
  36.         shell.setLayout(new  FillLayout());  
  37.         SashForm sash = new  SashForm(shell, SWT.HORIZONTAL);  
  38.         try  {  
  39.             browser = new  Browser(sash, SWT.MOZILLA);  
  40.             browser.addControlListener(new  ControlListener() {  
  41.                 public   void  controlResized(ControlEvent e) {  
  42.                     browser  
  43.                             .execute("document.getElementById('map_canvas').style.width= "   
  44.                                     + (browser.getSize().x - 20 ) +  ";" );  
  45.                     browser  
  46.                             .execute("document.getElementById('map_canvas').style.height= "   
  47.                                     + (browser.getSize().y - 20 ) +  ";" );  
  48.                 }  
  49.                 public   void  controlMoved(ControlEvent e) {  
  50.                 }  
  51.             });  
  52.         } catch  (SWTError e) {  
  53.             System.out.println("Could not instantiate Browser: "   
  54.                     + e.getMessage());  
  55.             display.dispose();  
  56.             return ;  
  57.         }  
  58.         new  CustomFunction(browser,  "theJavaFunction" );  
  59.         Composite c = new  Composite(sash, SWT.BORDER);  
  60.         c.setLayout(new  GridLayout( 1 true ));  
  61.         list = new  List(c, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);  
  62.         list.setLayoutData(new  GridData(SWT.FILL, SWT.FILL,  true true ));  
  63.         browser.setUrl(f.toURI().toString());  
  64.         sash.setWeights(new   int [] {  4 1  });  
  65.         shell.open();  
  66.         while  (!shell.isDisposed()) {  
  67.             if  (!display.readAndDispatch())  
  68.                 display.sleep();  
  69.         }  
  70.         display.dispose();  
  71.     }  
  72.     static   class  CustomFunction  extends  BrowserFunction {  
  73.         CustomFunction(Browser browser, String name) {  
  74.             super (browser, name);  
  75.         }  
  76.         public  Object function(Object[] arguments) {  
  77.             // 获取从JavaScript传递的变量值   
  78.             double  lat = ((Double) arguments[ 0 ]).doubleValue();  
  79.             double  lng = ((Double) arguments[ 1 ]).doubleValue();  
  80.             double  zoom = ((Double) arguments[ 2 ]).doubleValue();  
  81.             list.add("东经: "  + lng);  
  82.             list.add("北纬: "  + lat);  
  83.             list.add("缩放级别为: "  + zoom);  
  84.             list.add("---------------------" );  
  85.             return   null ;  
  86.         }  
  87.     }  

 

    下面是Html 文件:

  1. <!DOCTYPE html "-//W3C//DTD XHTML 1.0 Strict//EN"   
  2.  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">   
  3. < html   xmlns = "http://www.w3.org/1999/xhtml" >   
  4.     < head >   
  5.         < meta   http-equiv = "content-type"   content = "text/html; charset=utf-8" />   
  6.         < title > Google Maps JavaScript API Example </ title >   
  7.         < mce:script   src = "http://maps.google.com/maps?file=api&v=2&key=abcdefg&sensor=false"   mce_src = "http://maps.google.com/maps?file=api&v=2&key=abcdefg&sensor=false"   
  8.                 type = "text/javascript" > </ mce:script >   
  9.         < mce:script   type = "text/javascript" > <!--  
  10.         var map;  
  11.        
  12.         function initialize() {  
  13.             if (GBrowserIsCompatible()) { //用于检查浏览器兼容性  
  14.                 map  =  new  GMap2(document.getElementById("map_canvas"));//初始化一个地图实例  
  15.                 map.setCenter(new GLatLng(28.017815, 120.644388), 14);//设置地图中心的坐标及缩放级别  
  16.                 map.disableDoubleClickZoom();  
  17.                 map.setUIToDefault();  
  18.    
  19.                 GEvent.addListener(map,"click", function(overlay,latlng) {       
  20.                     //var myHtml  =  "GPoint 为: "  + map.fromLatLngToDivPixel(latlng) + ", < br > 缩放级别为:" + map.getZoom();  
  21.                     var myHtml  =  "经度:"  + latlng.lng() + ", 纬度:"+ latlng.lat() + ", < br > 缩放级别为:" + map.getZoom();              
  22.                     theJavaFunction(latlng.lat(), latlng.lng(), map.getZoom());//将当前位置传递给Java  
  23.                     map.openInfoWindow(latlng, myHtml);  
  24.                 });  
  25.                 map.addControl(new GSmallMapControl());  
  26.                 map.addControl(new GMapTypeControl());                 
  27.             }  
  28.         }  
  29.           
  30. // --> </ mce:script >   
  31.        
  32.     </ head >   
  33.     < body   onload = "initialize()"   >   
  34.         < div   id = "map_canvas"   style = "width: 600px; height: 400px" >   
  35.         <!-- 这里放置地图实例-->   
  36.         </ div >   
  37.     </ body >   
  38. </ html >  

 

     (3) 表格标题行菜单

    可以对表格或树表的标题行设置弹出菜单,选择要显示或隐藏的列。这样,我们就可以定制显示输出,为不同的用户提供相应的缺省显示内容。有关表头标题菜单的例子,请参考Snippet311 ;有关树表表头标题菜单的例子,请参考Snippet312

     (4) 未保存提示

    现在可能设置Shell 的更改状态,如果在Shell 处于更改状态时关闭窗口,将弹出修改信息未保存的提示对话框,提醒用户保存。示例代码请参考Snippet314

     在开发中能够很快地升级到Galileo版本,除了Galileo自身功能增强外,其他Eclipse插件软件开发商也积极提供了对Galileo的支持,除了JBoss Seam Tools 外,还有Scala TestNGJSONWicketObfuscate4ejgit 等等。Eclipse 越来越人性化、越来越强大、真让人爱不释手。工欲善其事必先利其器,Eclipse 让我的工作事半功倍。以上我所用到的、知道的,仅仅是Eclipse 强大功能 之冰山一角、皮毛而已,还有好多东西需要我们去学习、去挖掘、去实践。

分享到:
评论

相关推荐

    eclipse galileo 汉化包.

    此外,随着Eclipse的更新迭代,新的版本可能已经有内置的多语言支持,或者提供了更完善的官方中文版,因此在选择使用汉化包时,也可以考虑升级到较新的版本以获得更好的体验。同时,社区和论坛中往往有热心用户分享...

    eclipse-cpp-galileo-SR2-linux-gtk.tar.gz

    在实际使用中,开发者可能需要考虑升级Eclipse的版本,以获取更现代的功能和更好的性能。然而,如果项目依赖于特定的老版本库或工具链,那么保持使用Galileo SR2可能是必要的。对于这样的情况,了解并熟练掌握这个...

    eclipse-jee-galileo(3.5)汉化包.zip.rar

    Galileo是Eclipse的一个重要版本,它的代号为Eclipse 3.5,发布于2009年,带来了许多新特性和改进。这个压缩包“eclipse-jee-galileo(3.5)汉化包.zip.rar”显然是为了帮助中国用户更方便地使用Eclipse 3.5,因为它是...

    eclipse3.4中文语言包 eclipse3.4汉化包

    因此,在升级Eclipse或安装新插件时,确保更新相应的汉化包以保持兼容性。 此外,Eclipse3.4的汉化不仅仅局限于界面,还包括帮助文档和错误信息的本地化,这对于理解和解决问题非常有帮助。如果你在使用过程中遇到...

    eclipse3.5汉化包

    - 更好的插件发现和安装:改进了“软件更新”功能,用户可以更容易地查找、安装和升级Eclipse插件。 - 集成Mylyn任务管理器:Mylyn是Eclipse的一个重要组成部分,它可以帮助开发者专注于当前的任务,提高工作效率。 ...

    eclipse3.5中文包

    总之,Eclipse 3.5中文包是为了解决中国开发者在使用Eclipse 3.5时的语言障碍,通过简单的安装步骤,用户可以享受到完全汉化的开发环境,更好地利用Eclipse的强大功能进行编程和项目开发。在使用过程中,遵循提供的...

    eclipse3.5 汉化包

    **新特性与改进**:Eclipse 3.5(Galileo)版本的主要特性包括增强的SWT/AWT互操作性,改进的JDT(Java Development Tools)性能,以及对Eclipse RCP(Rich Client Platform)和RAP(Rich Ajax Platform)的升级。...

    eclipse 3.5 官方简体中文包

    Eclipse 3.5,又称为Galileo,是Eclipse集成开发环境(IDE)的一个重要版本,它在2009年发布,为开发者提供了强大的Java开发工具,并且支持多种编程语言,包括C/C++、PHP和Python等。Eclipse 3.5引入了许多新特性,...

    eclipse 4.2

    Eclipse 4.2,又称为Juno,是Eclipse集成开发环境(IDE)的一个重要版本,发布于2012年。这个版本在Eclipse社区中是一个里程碑,引入...对于使用旧版本的开发者来说,升级到Eclipse 4.2可以享受到更多的便利和新功能。

    eclipse3.4中文包.rar

    Eclipse 3.4版本,也称为Galileo,是Eclipse在2009年发布的一个重要版本,它引入了多项改进和新特性,以提升开发者的工作效率。 1. Eclipse 3.4 特性概述: - **改进的启动性能**:Eclipse 3.4对启动速度进行了...

    eclipse-jee-indigo-SR1-win32

    然而,为了获得最新的特性和安全更新,开发者通常会考虑升级到更现代的Eclipse版本,例如Photon、Oxygen或更近的版本。这些新版本提供了更好的性能、增强的调试工具、更多的语言支持以及对最新技术标准的兼容性。...

    Eclipse解压05

    "Eclipse解压05"可能是指一个Eclipse的特定版本或者更新包,需要通过解压缩来安装或升级Eclipse的某些功能。在这个压缩包中,包含了一系列与Eclipse相关的插件和库文件,主要涉及数据库工具和调试支持。 首先,我们...

    eclipse3.rareclipse3.rar

    7. **Eclipse 5.x**:如果“eclipse5”是指Eclipse 5.x版本,那么可能是指Eclipse Galileo(3.5)或Europa(3.3),这些版本在Eclipse 3.x系列中也非常重要,带来了更多改进和新特性。 8. **历史版本的价值**:保存...

    hadoop-0.20.1-eclipse-plugin.jar

    从hadoop 0.19.1 升级到 0.20.1时才发现原来0.19.1的插件不能使用,包里没有jar文件,需要自行编译。然而编译出来的jar总是不能用,最后改写一点代码,才可以在Eclipse (europa, galileo)下正常使用。 注意:使用...

    eclipse-SDK-3.5.1-win32.zip

    "eclipse-SDK-3.5.1-win32.zip"是免安装版本,这意味着你可以直接解压缩到任何文件夹,然后通过启动Eclipse目录下的"eclipse.exe"文件来运行。这种方式便于在不同机器间迁移开发环境,也易于备份和恢复。 5. **...

    eclipse3.5中文包090620全功能版本

    Eclipse 3.5,代号"Galileo",是Eclipse平台的一个重要里程碑。这个版本引入了许多新特性,包括: 1. **改进的启动性能**:Eclipse 3.5通过优化启动过程,减少了启动时间和内存占用,提高了工作效率。 2. **JDT...

    Eclipse3.5集成 Myeclipse8.5

    由于GWT最低支持Eclipse3.3版本,作者决定升级到Eclipse3.5,并尝试安装MyEclipse8.5以保持开发环境的稳定性。 #### 二、准备工作 首先,需要下载最新的Eclipse3.5和MyEclipse8.5。这些资源可以直接从官方站点获取...

    Eclipse 简介

    例如,Callisto、Europa、Ganymede、Galileo、Helios、Indigo、Juno、Kepler、Luna和后来的版本,如Kepler的4.3和Juno的3.8及4.2,都有各自的发布时间表和升级内容,不断优化用户体验和功能完善。 Eclipse 的语言...

Global site tag (gtag.js) - Google Analytics