使用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
类:
-
-
-
-
-
-
-
-
-
-
-
package
org.eclipse.swt.snippets;
-
import
java.io.File;
-
import
java.io.IOException;
-
import
org.eclipse.swt.SWT;
-
import
org.eclipse.swt.SWTError;
-
import
org.eclipse.swt.browser.Browser;
-
import
org.eclipse.swt.browser.BrowserFunction;
-
import
org.eclipse.swt.custom.SashForm;
-
import
org.eclipse.swt.events.ControlEvent;
-
import
org.eclipse.swt.events.ControlListener;
-
import
org.eclipse.swt.layout.FillLayout;
-
import
org.eclipse.swt.layout.GridData;
-
import
org.eclipse.swt.layout.GridLayout;
-
import
org.eclipse.swt.widgets.Composite;
-
import
org.eclipse.swt.widgets.Display;
-
import
org.eclipse.swt.widgets.List;
-
import
org.eclipse.swt.widgets.Shell;
-
public
class
Snippet308 {
-
static
List list;
-
static
Browser browser;
-
public
static
void
main(String[] args)
throws
IOException {
-
File f = new
File(
"map.html"
);
-
Display display = new
Display();
-
final
Shell shell =
new
Shell(display);
-
shell.setText("SWT & JavaScript"
);
-
shell.setLayout(new
FillLayout());
-
SashForm sash = new
SashForm(shell, SWT.HORIZONTAL);
-
try
{
-
browser = new
Browser(sash, SWT.MOZILLA);
-
browser.addControlListener(new
ControlListener() {
-
public
void
controlResized(ControlEvent e) {
-
browser
-
.execute("document.getElementById('map_canvas').style.width= "
-
+ (browser.getSize().x - 20
) +
";"
);
-
browser
-
.execute("document.getElementById('map_canvas').style.height= "
-
+ (browser.getSize().y - 20
) +
";"
);
-
}
-
public
void
controlMoved(ControlEvent e) {
-
}
-
});
-
} catch
(SWTError e) {
-
System.out.println("Could not instantiate Browser: "
-
+ e.getMessage());
-
display.dispose();
-
return
;
-
}
-
new
CustomFunction(browser,
"theJavaFunction"
);
-
Composite c = new
Composite(sash, SWT.BORDER);
-
c.setLayout(new
GridLayout(
1
,
true
));
-
list = new
List(c, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
-
list.setLayoutData(new
GridData(SWT.FILL, SWT.FILL,
true
,
true
));
-
browser.setUrl(f.toURI().toString());
-
sash.setWeights(new
int
[] {
4
,
1
});
-
shell.open();
-
while
(!shell.isDisposed()) {
-
if
(!display.readAndDispatch())
-
display.sleep();
-
}
-
display.dispose();
-
}
-
static
class
CustomFunction
extends
BrowserFunction {
-
CustomFunction(Browser browser, String name) {
-
super
(browser, name);
-
}
-
public
Object function(Object[] arguments) {
-
-
double
lat = ((Double) arguments[
0
]).doubleValue();
-
double
lng = ((Double) arguments[
1
]).doubleValue();
-
double
zoom = ((Double) arguments[
2
]).doubleValue();
-
list.add("东经: "
+ lng);
-
list.add("北纬: "
+ lat);
-
list.add("缩放级别为: "
+ zoom);
-
list.add("---------------------"
);
-
return
null
;
-
}
-
}
-
}
下面是Html
文件:
-
<!DOCTYPE html "-//W3C//DTD XHTML 1.0 Strict//EN"
-
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-
<
html
xmlns
=
"http://www.w3.org/1999/xhtml"
>
-
<
head
>
-
<
meta
http-equiv
=
"content-type"
content
=
"text/html; charset=utf-8"
/>
-
<
title
>
Google Maps JavaScript API Example
</
title
>
-
<
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"
-
type
=
"text/javascript"
>
</
mce:script
>
-
<
mce:script
type
=
"text/javascript"
>
<!--
-
var map;
-
-
function initialize() {
-
if (GBrowserIsCompatible()) { //用于检查浏览器兼容性
-
map
=
new
GMap2(document.getElementById("map_canvas"));//初始化一个地图实例
-
map.setCenter(new GLatLng(28.017815, 120.644388), 14);//设置地图中心的坐标及缩放级别
-
map.disableDoubleClickZoom();
-
map.setUIToDefault();
-
-
GEvent.addListener(map,"click", function(overlay,latlng) {
-
//var myHtml
=
"GPoint 为: "
+ map.fromLatLngToDivPixel(latlng) + ",
<
br
>
缩放级别为:" + map.getZoom();
-
var myHtml
=
"经度:"
+ latlng.lng() + ", 纬度:"+ latlng.lat() + ",
<
br
>
缩放级别为:" + map.getZoom();
-
theJavaFunction(latlng.lat(), latlng.lng(), map.getZoom());//将当前位置传递给Java
-
map.openInfoWindow(latlng, myHtml);
-
});
-
map.addControl(new GSmallMapControl());
-
map.addControl(new GMapTypeControl());
-
}
-
}
-
-
// -->
</
mce:script
>
-
-
</
head
>
-
<
body
onload
=
"initialize()"
>
-
<
div
id
=
"map_canvas"
style
=
"width: 600px; height: 400px"
>
-
-
</
div
>
-
</
body
>
-
</
html
>
(3)
表格标题行菜单
可以对表格或树表的标题行设置弹出菜单,选择要显示或隐藏的列。这样,我们就可以定制显示输出,为不同的用户提供相应的缺省显示内容。有关表头标题菜单的例子,请参考Snippet311
;有关树表表头标题菜单的例子,请参考Snippet312
(4)
未保存提示
现在可能设置Shell
的更改状态,如果在Shell
处于更改状态时关闭窗口,将弹出修改信息未保存的提示对话框,提醒用户保存。示例代码请参考Snippet314
在开发中能够很快地升级到Galileo版本,除了Galileo自身功能增强外,其他Eclipse插件软件开发商也积极提供了对Galileo的支持,除了JBoss Seam Tools
外,还有Scala
、TestNG
、JSON
、Wicket
、Obfuscate4e
、jgit
等等。Eclipse
越来越人性化、越来越强大、真让人爱不释手。工欲善其事必先利其器,Eclipse
让我的工作事半功倍。以上我所用到的、知道的,仅仅是Eclipse
强大功能
之冰山一角、皮毛而已,还有好多东西需要我们去学习、去挖掘、去实践。
分享到:
相关推荐
此外,随着Eclipse的更新迭代,新的版本可能已经有内置的多语言支持,或者提供了更完善的官方中文版,因此在选择使用汉化包时,也可以考虑升级到较新的版本以获得更好的体验。同时,社区和论坛中往往有热心用户分享...
在实际使用中,开发者可能需要考虑升级Eclipse的版本,以获取更现代的功能和更好的性能。然而,如果项目依赖于特定的老版本库或工具链,那么保持使用Galileo SR2可能是必要的。对于这样的情况,了解并熟练掌握这个...
Galileo是Eclipse的一个重要版本,它的代号为Eclipse 3.5,发布于2009年,带来了许多新特性和改进。这个压缩包“eclipse-jee-galileo(3.5)汉化包.zip.rar”显然是为了帮助中国用户更方便地使用Eclipse 3.5,因为它是...
因此,在升级Eclipse或安装新插件时,确保更新相应的汉化包以保持兼容性。 此外,Eclipse3.4的汉化不仅仅局限于界面,还包括帮助文档和错误信息的本地化,这对于理解和解决问题非常有帮助。如果你在使用过程中遇到...
- 更好的插件发现和安装:改进了“软件更新”功能,用户可以更容易地查找、安装和升级Eclipse插件。 - 集成Mylyn任务管理器:Mylyn是Eclipse的一个重要组成部分,它可以帮助开发者专注于当前的任务,提高工作效率。 ...
总之,Eclipse 3.5中文包是为了解决中国开发者在使用Eclipse 3.5时的语言障碍,通过简单的安装步骤,用户可以享受到完全汉化的开发环境,更好地利用Eclipse的强大功能进行编程和项目开发。在使用过程中,遵循提供的...
**新特性与改进**:Eclipse 3.5(Galileo)版本的主要特性包括增强的SWT/AWT互操作性,改进的JDT(Java Development Tools)性能,以及对Eclipse RCP(Rich Client Platform)和RAP(Rich Ajax Platform)的升级。...
Eclipse 3.5,又称为Galileo,是Eclipse集成开发环境(IDE)的一个重要版本,它在2009年发布,为开发者提供了强大的Java开发工具,并且支持多种编程语言,包括C/C++、PHP和Python等。Eclipse 3.5引入了许多新特性,...
Eclipse 4.2,又称为Juno,是Eclipse集成开发环境(IDE)的一个重要版本,发布于2012年。这个版本在Eclipse社区中是一个里程碑,引入...对于使用旧版本的开发者来说,升级到Eclipse 4.2可以享受到更多的便利和新功能。
Eclipse 3.4版本,也称为Galileo,是Eclipse在2009年发布的一个重要版本,它引入了多项改进和新特性,以提升开发者的工作效率。 1. Eclipse 3.4 特性概述: - **改进的启动性能**:Eclipse 3.4对启动速度进行了...
然而,为了获得最新的特性和安全更新,开发者通常会考虑升级到更现代的Eclipse版本,例如Photon、Oxygen或更近的版本。这些新版本提供了更好的性能、增强的调试工具、更多的语言支持以及对最新技术标准的兼容性。...
"Eclipse解压05"可能是指一个Eclipse的特定版本或者更新包,需要通过解压缩来安装或升级Eclipse的某些功能。在这个压缩包中,包含了一系列与Eclipse相关的插件和库文件,主要涉及数据库工具和调试支持。 首先,我们...
7. **Eclipse 5.x**:如果“eclipse5”是指Eclipse 5.x版本,那么可能是指Eclipse Galileo(3.5)或Europa(3.3),这些版本在Eclipse 3.x系列中也非常重要,带来了更多改进和新特性。 8. **历史版本的价值**:保存...
从hadoop 0.19.1 升级到 0.20.1时才发现原来0.19.1的插件不能使用,包里没有jar文件,需要自行编译。然而编译出来的jar总是不能用,最后改写一点代码,才可以在Eclipse (europa, galileo)下正常使用。 注意:使用...
"eclipse-SDK-3.5.1-win32.zip"是免安装版本,这意味着你可以直接解压缩到任何文件夹,然后通过启动Eclipse目录下的"eclipse.exe"文件来运行。这种方式便于在不同机器间迁移开发环境,也易于备份和恢复。 5. **...
Eclipse 3.5,代号"Galileo",是Eclipse平台的一个重要里程碑。这个版本引入了许多新特性,包括: 1. **改进的启动性能**:Eclipse 3.5通过优化启动过程,减少了启动时间和内存占用,提高了工作效率。 2. **JDT...
由于GWT最低支持Eclipse3.3版本,作者决定升级到Eclipse3.5,并尝试安装MyEclipse8.5以保持开发环境的稳定性。 #### 二、准备工作 首先,需要下载最新的Eclipse3.5和MyEclipse8.5。这些资源可以直接从官方站点获取...
例如,Callisto、Europa、Ganymede、Galileo、Helios、Indigo、Juno、Kepler、Luna和后来的版本,如Kepler的4.3和Juno的3.8及4.2,都有各自的发布时间表和升级内容,不断优化用户体验和功能完善。 Eclipse 的语言...