2008-02-28

咨询客户端软件开发语言

关键字: 客户端
最近需要做个客户端软件,有以下特征要求:
  1. 有非常多的Socket通信,UDP和TCP都有。但业务逻辑不复杂。
  2. 客户端总体安装大小(包括虚拟机)不能超过12M。
  3. 界面要求比较漂亮,随不要求跟游戏一样华丽,但不能像原生控件一样死板。
  4. 没有数据库操作。
  5. 界面部分区域需嵌入浏览器。
  6. 支持Windows XP和Vista。
  7. 开发团队没有Delphi、VB和VC程序员。有Java和C#的。
  8. 部分功能必须调用已经开发好的Windows dll实现,但这部分非常少。
  9. 对执行效率的要求不高。
  10. 发布包能够尽量抵抗反编译。
  11. 目前处在开发前的准备阶段,还没有最终确定开发语言。
  12. 进度要求3个月内release。
  13. 开发预算相对充裕。

目前的提出的方案有这样几种:
  • 方案一、Java+SWT
  • 用Java开发。配合少量Jni。(dll支持)
  • GUI方案选择SWT。(因为Swing的在Jre中依赖太多,难以精简jre)
  • 精简JRE。(目前已经初步精简到16M了。肯定还可以继续精简)。
  • 几乎不引入任何第三方jar工具包(目的是减少字节量)。
  • 自定义ClassLoader,通过DES加密jar/class。以达到抗反编译目的。
  • 方案二、C# + .net
  • 最大的问题是C#依赖.netframework。.netframework太大了。客户的机器大都没有预装。
  • 方案三、新招聘VC++开发人员组成新的开发团队
  • 方案四、直接外包给别的其他公司的VC团队开发。
  • 重来没试过这种方式啊。


方案最终需要我来决定,我目前比较倾向方案一,但还没有最终决定。

 

很急很犹豫!


大家能帮我分析分析吗,给我点儿建议?或者有什么更好的方案?这里先谢过大家。

 

评论
bubble 2008-03-12
AIR+EXT2
不过国内能做的人比较少
jix 2008-03-11
AIR-FLEX3
stevenwang 2008-03-06
反对Delphi,支持.net
我们刚刚做了如上的选择,也是为了限期完成工作。
jjx 2008-03-06
不得不提醒一下 ,silverlight 2.0 beta1 出了,现在除了 flex,sl 也是一个非常有吸引力的选择
sp42 2008-03-06
若flex,比较thin的方案, 可考虑一下ext + flash socket swf,反正ext的对象模型多少是仿swing的,不过socket swf看上去手段就比较hack了,而且用的端口防火墙哪里要配合一下。
xilaile 2008-03-05
支持Java+SWT
mathgl 2008-03-05
我在一台 Celeron 533 128M 测试过 .net 1.1 的C/S客户端。 速度可以接受
不过 界面渲染比较慢。 用wxPython 基本上接近原生码的速度
nazar 2008-03-05
你手头的人对什么熟,就用什么。其他的放第二位。

如果你的人对几种开发都没有问题,首选当然是一些老东西了。比如delphi vc++ c++builder什么的。然后考虑 c# (这需要.net),最后考虑java。

第二种情况如果你还要选java,除非你的应用需要跨平台。
zhangcheng 2008-03-05
neora 写道
最近需要做个客户端软件,有以下特征要求:
  1. 有非常多的Socket通信,UDP和TCP都有。但业务逻辑不复杂。
  2. 客户端总体安装大小(包括虚拟机)不能超过12M。
  3. 界面要求比较漂亮,随不要求跟游戏一样华丽,但不能像原生控件一样死板。
  4. 没有数据库操作。
  5. 界面部分区域需嵌入浏览器。
  6. 支持Windows XP和Vista。
  7. 开发团队没有Delphi、VB和VC程序员。有Java和C#的。
  8. 部分功能必须调用已经开发好的Windows dll实现,但这部分非常少。
  9. 对执行效率的要求不高。
  10. 发布包能够尽量抵抗反编译。
  11. 目前处在开发前的准备阶段,还没有最终确定开发语言。
  12. 进度要求3个月内release。
  13. 开发预算相对充裕。

目前的提出的方案有这样几种:
  • 方案一、Java+SWT
  • 用Java开发。配合少量Jni。(dll支持)
  • GUI方案选择SWT。(因为Swing的在Jre中依赖太多,难以精简jre)
  • 精简JRE。(目前已经初步精简到16M了。肯定还可以继续精简)。
  • 几乎不引入任何第三方jar工具包(目的是减少字节量)。
  • 自定义ClassLoader,通过DES加密jar/class。以达到抗反编译目的。
  • 方案二、C# + .net
  • 最大的问题是C#依赖.netframework。.netframework太大了。客户的机器大都没有预装。
  • 方案三、新招聘VC++开发人员组成新的开发团队
  • 方案四、直接外包给别的其他公司的VC团队开发。
  • 重来没试过这种方式啊。


方案最终需要我来决定,我目前比较倾向方案一,但还没有最终决定。

 

很急很犹豫!


大家能帮我分析分析吗,给我点儿建议?或者有什么更好的方案?这里先谢过大家。

 

    支持第一种方案
lonlyleo 2008-03-04
可惜我只会Java,所以我正在做的客户端首选Swing,netbeans坐起来也很快嘛,不知道.net会不会更快呢?呵呵.

暂时还不想用SWT,本来偶就是web开发过来的,GUI程序开发经验有限,先集中精力学会Swing吧.

看大家发言,Flex似乎做浏览器中的富客户端是个好的选择,有时间一定关注一下.
neora 2008-03-04
为什么没人支持SWT呢?SWT再不济,也有Eclipse这个绝对的成功案例啊。
nazar 2008-03-04
mooniscrazy 写道
如果是做网络程序的话,.net绝对是最佳选择。节省开发成本80%以上。
.net这方面最大的优势在于天生支持异步处理,它访问网络在异步调用的时候用完成端口。。那个delegate就是可以用来异步调用的,用java,你就弄线程池慢慢折腾吧。c++就老老实实做同步的吧。c++程序员,有几个能用好完成端口的?很多c++程序员都不会用异步处理来访问socket。
打包的问题,有些第三方的工具可以把.net framework打包进去,不过体积也不小。有15M左右。
其实用哪个都行,不过你要是想你的项目早点完工,就用.net。绝对是最早完工的。
打包问题,回头再说。
silverlight 2.0是可以用c#开发的。不过它访问网络有限制。如果只访问网站所在的服务器,是可以考虑的。



# .net这方面最大的优势在于天生支持异步处理,它访问网络在异步调用的时候用完成端口?
完成端口是windows32 平台原生的,这个也没有想象那么复杂,2000年就用过了。这玩意主要用在高性能服务器设计上,桌面程序不会需要这个的。

java 下的网络处理,你可以看看这个 http://mina.apache.org,你只需要关注数据的业务逻辑。

.net 最大的优势这一说,我个人认为,至少目前还不成立。你看看你自己安装的那些桌面程序就知道了。基本还是脱离.net 的VC,delphi, c++builder等的天下。

#.不过你要是想你的项目早点完工,就用.net。绝对是最早完工的。
这个说法没有根据。你的团队如果对.net不熟,这点就不能成立。

ps.
话说回来,选用java 作为桌面系统的原因我觉得可以支持的只有:
@ 你的应用需要跨平台;
@ 你的团队只熟悉java,对vc .net c++builder delphi不熟;
liangguanhui 2008-03-04
其实我不知道为什么这么多人推荐java。对于这种本地程序,我建议是使用传统的工具,例如delphi,或者MFC、VB等。相信整个程序下来1M都不到。当然,也可以用C++ Builder,虽然感觉上选BCB还倒不如用delphi,不过考虑到你们组的人熟悉C#和Java,那相对来说,BCB会更容易上手。

至于虚拟机类的,.net调用本地的dll还好一点,不过java就比较郁闷了,要用JNI。另外,12M的大小限制也是很大的限制来的。

很多人说java(或者swing)作桌面程序已经比以前好很多了。其实,传统的桌面工具已经在这些方面积累了那么多的经验,有很多现成的工具,又何必舍近求远呢?有人说java在socket等网络方面有很大的优势,其实delphi、MFC等又何尝没有这方面的封装呢?
maxiaoxia 2008-03-04
用delphi是最好的,从我的角度看。
如果没有很复杂的东西,非常短的时间内就可以交工。
ray_linn 2008-03-04
Kaede 写道
Raecoo 写道
ray_linn 写道
当然为了骗客户的钱可以用Swing,那种机车的速度可以有大把的理由让客户买了软件的时候同时还得买你们的硬件~


呵呵...Swing是慢,但还没有慢到你说的机车速度,不知道兄弟有没有真正使用Swing做过一个与数据库交互的桌面应用呢?如果仅是听说,那就..........

Java Swing 在6下 性能 提升很多,我做Swing开发有一段时间,做出来的东西,在我的机器上 与 其他语言实现的速度根本看不出来,我觉得 对于Swing 大家还是有一定的误会。Swing还可以自定义主题~


和同机上的.net应用速度还是差别显著的,如果是VC++,那就是差别甚远。万一客户机器烂点,比如配256M内存了,就可以怂恿他们更新机器了。
bookong 2008-03-04
在Eclipse上安装Designer插件,设计Swing的界面已经很简单了。

neora 写道
客户端总体安装大小(包括虚拟机)不能超过12M。


为什么要限制不能超过12M?如果说为了网络传输,12M也很大?

neora 写道
发布包能够尽量抵抗反编译。


这点我认为,既然你都决定使用JNI来调dll(假设用Java开发),那么你的Java程序应该都是表现层的东西,这些东西不是核心的代码,有必要费力气保护?

neora 写道
进度要求3个月内release。


3个月的时间很紧,应该尽量用熟悉的语言,熟悉的技术来开发。
Kaede 2008-03-04
Raecoo 写道
ray_linn 写道
当然为了骗客户的钱可以用Swing,那种机车的速度可以有大把的理由让客户买了软件的时候同时还得买你们的硬件~


呵呵...Swing是慢,但还没有慢到你说的机车速度,不知道兄弟有没有真正使用Swing做过一个与数据库交互的桌面应用呢?如果仅是听说,那就..........

Java Swing 在6下 性能 提升很多,我做Swing开发有一段时间,做出来的东西,在我的机器上 与 其他语言实现的速度根本看不出来,我觉得 对于Swing 大家还是有一定的误会。Swing还可以自定义主题~
Kaede 2008-03-04
“有非常多的Socket通信,UDP和TCP都有。但业务逻辑不复杂。”

我觉得你们完全可以 学学C++ 用C++来做
Kaede 2008-03-04
SWT目前是不是还不支持主题的功能,不支持哪还不是原声的界面?
Raecoo 2008-03-04
ray_linn 写道
当然为了骗客户的钱可以用Swing,那种机车的速度可以有大把的理由让客户买了软件的时候同时还得买你们的硬件~


呵呵...Swing是慢,但还没有慢到你说的机车速度,不知道兄弟有没有真正使用Swing做过一个与数据库交互的桌面应用呢?如果仅是听说,那就..........
发表评论

提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则

您还没有登录,请登录后发表评论

neora
搜索本博客
博客分类
存档
最新评论