`
neora
  • 浏览: 183858 次
  • 性别: Icon_minigender_1
  • 来自: 墨尔本
文章分类
社区版块
存档分类
最新评论

咨询客户端软件开发语言

阅读更多

最近需要做个客户端软件,有以下特征要求:

  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团队开发。
  • 重来没试过这种方式啊。


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

 

很急很犹豫!


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

 

 

 

 

 

 

 

------------------------------------------------------------------------------------------------------------

KO对战游戏平台 www.ko10000.com 打游戏,交朋友。

分享到:
评论
48 楼 Nighthaven 2008-03-04  
mooniscrazy 写道
现在java好像不怎么得人心嘛。
java现在改进了不少,但是还有两个地方不行。最大的一点,就是对回调的支持不好。没有语言级的支持。
java第2点,是不支持p/invoke。这其实是很重要的特性,毕竟没有纯java的商业操作系统,很多时候,都要调系统的api.
至于没有property,倒不是什么大问题。
java没有delegate,导致实现事件非常麻烦,很多时候,都是用继承来代替事件,少写点代码,但是继承只能继承一个,又引出很多麻烦。
什么时候java在语言层支持event,我就支持java。什么listener类了,什么attachEvent了,搞得好像很有学问一样,写得代码一堆一堆的,c#两行代码就解决了。
把代码结构搞得很烂,或者简单的事情搞得很麻烦,是一件不可容忍的事情。很多java程序,就是因为这个原因,结构变得很烂。


对c#只有上课的时候学过一点,基本等于不会用,你说的有的东西听不太懂。
你能解释一下java在回调方面支持不好是什么意思么?是没有c#中的某个功能么?
p/invoke是什么意思?如果是调用系统api的话,java里不是有jni么?
delegate是不是就是解决了一个函数指针的问题?如果是这样的话,其实java也可以通过java.lang.reflect.Method 来实现,具体参考 java tutorial中Reflection 一章。但是我记得当时看书的时候说不提倡这么做,原因解释了一大堆,其中就包括使用接口可以使代码结构更清晰。

ps:刚发现javaeye里不许写“我 是 菜 鸟”几个字~那菜鸟们怎么表示自己的身份呢?
47 楼 walsece 2008-03-03  
采用java除了发布文件的大小限制外(不过也可以根据自己的需要删除jdk中用不到的包),其他的都可以满足要求,不过建议尽量不要采用swt,采用swing在自定义界面方面可发挥的空间,而且目前有很多开源的组件,建议采用substance,可以参照我做的彩超工作站(http://walsece.iteye.com/blog/163475)。
46 楼 ssuupv 2008-03-03  
swing开发大型桌面应用.应当很多的.国内的永中office,国外知名的UML工具,MagicDraw,JBuilder 还有一个,PHP的IDE叫什么名字不记得了.还有IReport报表设计器
大型3D网络游戏有WURM等应用,所以说, swing开发桌面应用技术上没什么难点.也没有大家想像中那么差.想想人家为什么用swing能做出这么好应用
45 楼 mooniscrazy 2008-03-03  
现在java好像不怎么得人心嘛。
java现在改进了不少,但是还有两个地方不行。最大的一点,就是对回调的支持不好。没有语言级的支持。
java第2点,是不支持p/invoke。这其实是很重要的特性,毕竟没有纯java的商业操作系统,很多时候,都要调系统的api.
至于没有property,倒不是什么大问题。
java没有delegate,导致实现事件非常麻烦,很多时候,都是用继承来代替事件,少写点代码,但是继承只能继承一个,又引出很多麻烦。
什么时候java在语言层支持event,我就支持java。什么listener类了,什么attachEvent了,搞得好像很有学问一样,写得代码一堆一堆的,c#两行代码就解决了。
把代码结构搞得很烂,或者简单的事情搞得很麻烦,是一件不可容忍的事情。很多java程序,就是因为这个原因,结构变得很烂。
44 楼 soleghost 2008-03-03  
建议楼主尝试一下soyframework,刚刚发布的java富客户端企业应用开发框架,现在正在做推广可以申请到免费的授权而且还有技术人员上门培训 
http://www.soyframework.com
1. 有非常多的Socket通信,UDP和TCP都有。但业务逻辑不复杂。
你可以自己写Socket通信,如果是和服务器通信可以考虑使用httpinvoker(spring极力推荐的远程调用的方式,soyframework中远程调用服务器服务的基础)相当的简便。
2. 客户端总体安装大小(包括虚拟机)不能超过12M。
soyframework使用java web start 启动,可以为客户端自动安装java虚拟机(JRE1.5 14M这个省不掉),应用程序(最3-4M)自动下载无需安装。
3. 界面要求比较漂亮,随不要求跟游戏一样华丽,但不能像原生控件一样死板。
soyframework提供大量客户端控件和组件,完全不懂swing也可快速开发表单,表格等界面,但是如果你要做一些特别的界面就得用Swing了。附件是界面截图。
4. 没有数据库操作。
框架的强项,不要求就不说了
5. 界面部分区域需嵌入浏览器。
用jdic
6. 支持Windows XP和Vista。
只要它能装JRE
7. 开发团队没有Delphi、VB和VC程序员。有Java和C#的。
8. 部分功能必须调用已经开发好的Windows dll实现,但这部分非常少。
Java本地方法调用
9. 对执行效率的要求不高。
10. 发布包能够尽量抵抗反编译。
用金蝶出的jocky吧,只需要在ant脚本中加一句脚本即可完成混淆,效果还不错
11. 目前处在开发前的准备阶段,还没有最终确定开发语言。
12. 进度要求3个月内release。
13. 开发预算相对充裕。
43 楼 mooniscrazy 2008-03-03  
如果是做网络程序的话,.net绝对是最佳选择。节省开发成本80%以上。
.net这方面最大的优势在于天生支持异步处理,它访问网络在异步调用的时候用完成端口。。那个delegate就是可以用来异步调用的,用java,你就弄线程池慢慢折腾吧。c++就老老实实做同步的吧。c++程序员,有几个能用好完成端口的?很多c++程序员都不会用异步处理来访问socket。
打包的问题,有些第三方的工具可以把.net framework打包进去,不过体积也不小。有15M左右。
其实用哪个都行,不过你要是想你的项目早点完工,就用.net。绝对是最早完工的。
打包问题,回头再说。
silverlight 2.0是可以用c#开发的。不过它访问网络有限制。如果只访问网站所在的服务器,是可以考虑的。
42 楼 mathgl 2008-03-03  
wxPython不错。 py2exe后 在压缩一下大概也就4-5M左右
不过 界面要做很花哨估计有些难度

41 楼 zbird 2008-03-03  
Delphi对activex的支持有些问题。
做一般的应用倒没啥问题,如果想做成activex嵌入到IE麻烦就来了。
如果涉及到activex form的编写,不推荐delphi。

我只swing做过简单的开发(就是用netbeans拖控件)。
至少给我的体验很不错,比eclipse的swt好太多了。
以前为了选择一个合适的布局管理器实在是痛苦。
40 楼 nazar 2008-03-03  
楼主,很巧。我最近也在做类似的项目。

可能在windows上开发gui应用,目前首选还是VC++, Delphi, C++ builder之类的老牌开发工具。 c#至少目前还不是,不信你下载多几个应用程序看看就知道了。
让客户安装一个.net framework可能不会多花多少下载和运行时间,但是始终是个麻烦,不是吗? C#的开发不需要让用户安装的方案,好像是有工具可以做到的,有人在网上发帖说利用了飞信(移动那个?)安装之后的那些dll之类的,自己做了不用安装.net framework的东东(就是相当于native jre?)。你可以看看。

不想陷入哪个语言开发更好的口水战,但是我对java比c++要熟悉很多,所以就用了java。

我选了swing, 入门级的swing application framework。
我的界面要求没有你的高。不需要自定义那些控件。

工具
用netbeans 6开发,对gui 设计的支持觉得还可以。可能是很久以前一直用vc++6.0(拖动设计的支持还不行),这样的拖动设计效果已经让我感到很爽了,呵呵。

嵌入IE
jdic (sun java 社区的)
djproject.sourceforge.net (我用了这个)

打开一个IE窗口就比较简单了,用 Runtime.getRuntime().execute("exploer http://.....");

EXE可执行文件(启动程序用的)
用了jsmooth, 可以一起打包jre,生成一个exe启动文件,jar维持原状(也可以选择把jar生成到exe文件中去),我以为这样可以方便升级(我打算自己实现升级,对javaws 没有太多好感)。
没有用excelsior,有几个原因。
1.本地化编译之后,我不知道能不能单独升级某个自己编写jar包。
2.我没有找到破解版,哈哈。

安装
inno setup
不知道比install shield(anywhere) 是不是差了很多。
选择的原因是
1.免费,且在我下载到install anywhere 破解版之前就找到了。
2.上手很快。1分钟就搞定了我自己的安装包。
3.我觉得够用了(对我来说)
我用了jre6,70MB的原始文件,整个应用程序(helloworld)打包之后是16MB,这个size还是比较大,可能也是你会面临的最大的问题,就是如何缩减jre的size。

防反编译
proguard.sourceforge.net
把代码混淆一下,能有多大作用也不知道。不过我的程序无所谓了,没有什么所谓技术含量的东东,哈哈

我目前还在开发中,后期可能会花力气在jre的缩减上。这个比较麻烦,不过也不是完全没有方法,网上还是有不少文章介绍的。希望你搞定了能在这里公布一下你的方法。

Good luck!
39 楼 xsc963 2008-03-03  
我觉得用Swing不错,比起其它的类库起码有下列优点:
1、类库统一,原生的Java
2、跨平台性无可比拟
3、可以非常方便的利用Java在中间件方面的优势
4、可以随时改变观感
6、出色的布局管理
7、netBeans对Swing的可视化开发非常优秀
8、如果在一个项目中用Java客户加Java服务器的话,可以节约非常多的成本
9、在Java 6.0中速度有非常大的提升
如果是企业内部方案的话,最好先择一些比较通用的技术比较好,用SWT并不是非常好的选择。
38 楼 kennyliu 2008-03-03  
虽然在桌面程序(UI)开发上VC++,Delphi有一定优势(我认为主要是开发效率上),但是如果要考虑是否适合楼主所描述的项目,还要综合考虑很多因素:
1、GUI的开发与设计,凭心而论,如果要想在界面的美观度上要求高一点,选择vc++或者vb等开发语言更合适一些。但事实上近些年Swing在ui外观可定制的支持上做了很多改进,jdk1.5有了很大改善,完全满足楼主所描述的外观需求,并且jdk1.6版本在swing的执行性能上也提高了很多。现在有很多开源项目提供了非常棒的Swing组件库,甚至有些专业性的公司也开发了一些Swing的组件产品(费用倒不高)。
2、客户端的执行效率要求,如果真的要求较高,C++,Delphi,VB绝对比java要好,但也别忘了java的本地方法接口调用的特性,对于核心的、较耗时间的逻辑可以这么实现。
3、因为楼主需要平凡的Socket通信,我个人认为java封装的比较好,提供的API接口也比较简单,对于比较简单的通讯协议能够较好的实现。如果客户端直接和一个WebService进行通讯,java在这方面优势比较大。
4、楼主需求中描述了需要对flash、webbrowser的支持,这一点VC++、Delphi、VB等语言相对要好一点。但目前java中也有很多基于Swing的开源项目对flash、webBrowser做了很多支持(一般都是使用java本地接口的方式实现的,所以执行效率上还好)。
5、如果还要考虑移植性,那么java肯定是一个很好的选择。
6、以上主要是从技术角度的一个观点描述,最后我觉得最重要的一点就是:从项目角度而言,选择任何的一种实现方式,一定要从成本、质量、收益上衡量一下。

  总结:我说了那么多,并没有说哪一种语言好,那一种语言不好,如果不考虑时间成本,都可以实现所需要的功能。还有一点我想说的就是,目前有很多人都觉得swing很烂,不过我想应该这些人对swing的关注度不够,我想应该是旧的jdk版本让大伙很失望,其实现在swing已经慢慢开始强大起来了,在国外已经开始大面积使用了,而国内对swing的应用相当的少,甚至有很多抵制心理。最后祝楼主如期完成项目。
37 楼 neora 2008-03-03  
zelsa 写道
用你或你们团队最能驾驭的,就是最合适的,别的都是空谈

这是我目前考虑得权重很大的一个因素。
36 楼 soleghost 2008-03-03  
推荐一个框架:http://www.soyframework.com
java富客户端企业应用框架,完全不懂swing也可快速的开发界面,里面的部分功能可能适合你
35 楼 foxgst 2008-03-03  
用Delphi,你的要求都可以满足,而且大多都有示例,你都不用查太多资料。
34 楼 weicanhuang 2008-03-03  
能解决.net framework安装问题就用.net,功能强,限制小。

要嵌入webbrowser就用flash/flex,不过as3的socket只能走tcp,功能实现容易,但总感觉不是很强。

用vb6也不错,不过版本老了点。
java做桌面就算了,没有优势。
33 楼 bluemeteor 2008-03-03  
Tech survey光凭经验和知识是不够的,与其花一个星期查资料,不如花俩个星期用不同框架做某个应用,把框架+编码+测试都走一遍,这样最终确定的时候才能够有充分的自信
32 楼 laiseeme 2008-03-03  
大大都挺delphy
31 楼 sofar1218 2008-03-02  
zelsa 写道
用你或你们团队最能驾驭的,就是最合适的,别的都是空谈

我也是这个观点
30 楼 meng9999 2008-03-02  
建议用VC6 , 界面嵌入IE的话,ACTIVEX就可以了,ACTIVEX里头也可以使用TCP ,UDP;   VC6做界面是强大.QQ 的界面就是VC写的, 可是VC6 入门很难,看你的团队了 ;不行用DELPHI也可以 ; skype的界面就是delphi7做的;
如果想用java的话,据说swing在jdk6下速度快了很多,这个没有试过,以前
我使用swing开发一个swing界面,结果双核的跑起来才舒服;
最近又留意了flex做的RIA界面, 但不知道是否已经成熟;
29 楼 zelsa 2008-03-02  
用你或你们团队最能驾驭的,就是最合适的,别的都是空谈

相关推荐

    JAVA语言在计算机软件开发中的应用 (3).pdf

    JDBC技术可以将客户端的接口按照相应要求进行合理处理,在处理过程中可以为软件开发人员及时的提供信息更新与信息咨询的服务。Java Annotation技术可以高效连接编程中的变量,并且实现编程中的各项机制的整合,不仅...

    SVN+中文语言包 - 让您的Subversion客户端“说”中文

    项目管理者:需要监控和管理软件开发过程的项目负责人。 学习者:学习SVN版本控制系统的初学者和学生。 在使用本中文包前,请确保您了解对SVN客户端所做的修改。本中文语言包仅供学习和非商业用途,使用过程中遇到的...

    易语言客户端源码,易语言更新客户端源码,易语言服务控制端源码,

    易语言是一种专为中国人设计的编程语言,它以简体中文作为编程语句,降低了编程的门槛,使得更多非计算机专业的人也能参与到程序开发中来。本资源包含的是易语言客户端和服务控制端的源码,主要用于实现在线客服系统...

    基于人工智能技术与大数据的社区高效管理软件开发与应用.pdf

    人工智能技术与大数据的应用在社区高效管理软件开发中扮演着关键角色。这些技术的结合,不仅能够显著提升管理效率,还能够增强对居民需求的响应和服务的精准度,使得社区管理在特殊时期能够更有效地运行。 在当前...

    TallerImplementa:带有软件库的基本功能(咨询客户端)的实现研讨会,在软件工程课上

    总结来说,这个工作坊提供了从需求分析、设计、编码到测试的完整软件开发实践,涵盖了Java编程的基础和高级特性,对于提升软件工程学生的技能和实践经验大有裨益。参与者不仅可以深化对Java语言的理解,还能学习到...

    MSN手机客户端1.1.6

    国际化支持(当前支持的语言有简体中文、繁体中文和英文) <br>注意: <br>由于使用了socket连接,对于中国移动的用户,本软件只支持'cmnet'连接方式,因此当系统询问连接方式的时候,请用户务必使用访问点为...

    安心酒店订房系统 包含了服务器和客户端

    安心酒店订房系统是一款集成了服务器和客户端的综合性软件,主要功能包括用户登陆注册、在线浏览房间信息以及与客服进行咨询。在这个系统中,我们将会深入探讨与“qt”标签相关的技术应用,以及如何构建这样的系统。...

    PLSQL集成ORACLE客户端精简版

    总之,"PLSQL集成ORACLE客户端精简版"是一个方便的工具,特别适合那些只需要进行基本的PL/SQL开发和数据库管理,而不想安装完整Oracle客户端的用户。只要遵循正确的安装步骤和注意事项,它能极大地提升你的工作效率...

    毕业设计,基于安卓AndroidStudio开发的校园求职招聘App,包括安卓服务器端和安卓客户端,内含完整源码、数据库脚本

    毕业设计,基于安卓AndroidStudio开发的校园求职招聘App,包括安卓服务器端和安卓客户端,内含完整源码、数据库脚本 基于安卓AndroidStudio校园求职招聘app设计毕业源码案例设计 开发软件:Eclipse/Idea + Android...

    基于springboot心理治愈网站论文.docx

    本论文主要论述了如何使用 JAVA 语言开发一个心灵治愈交流平台,该系统将严格按照软件开发流程进行各个阶段的工作,采用 B/S 架构,面向对象编程思想进行项目开发。 知识点一:JAVA 语言 JAVA 语言是一种面向对象...

    安卓应用-健康医疗-317护客户端 V2.7.4 安卓版.zip

    1. **应用程序结构**:317护客户端的文件层级结构反映了其内部模块化的组织方式,将安卓应用、健康医疗和317护客户端等信息分门别类,这有利于软件的开发和维护,同时也方便用户理解和使用。 2. **安卓平台兼容性**...

    安卓应用-健康医疗-泓华医生手机客户端 v3.5.6.zip

    安卓应用主要基于Java或Kotlin语言开发,采用Android SDK(软件开发工具包)进行编程,利用Android Studio集成开发环境进行编译和调试。泓华医生手机客户端也不例外,它的核心功能模块很可能由这些技术构建而成。 ...

    安卓应用-健康医疗-百度医生医生客户端 v2.8.1.zip

    1. **安卓应用开发**:安卓应用是基于Android操作系统开发的软件,使用Java或Kotlin等语言编写,遵循安卓应用的生命周期管理和组件模型。开发者需要了解Android SDK、Android Studio等工具,以及XML布局文件的编写。...

    安卓应用-健康医疗-途欢健康手机客户端 v3.2.3.zip

    1. **安卓应用开发**:Android是一个开源的操作系统,开发者可以使用Java或Kotlin等语言开发应用。途欢健康手机客户端遵循Android的开发规范,可能使用了Android Studio作为集成开发环境。 2. **健康医疗应用**:...

    安卓应用-健康医疗-妇幼医生助手客户端 v1.2.zip

    开发者通常使用Java或Kotlin语言编写Android应用,并通过Android Studio集成开发环境进行编译和调试。 2. **健康医疗应用**:这类应用通常包含各种功能,如个人健康记录管理、疾病查询、在线咨询、医疗资讯推送、...

    基于php的大学生心理健康咨询网站(源码+开发文档+演示视频)

    3. **Apache**:是世界上最流行的Web服务器软件,能够处理HTTP协议,将PHP脚本解析并返回给客户端。 4. **MySQL 5.7**:作为关系型数据库管理系统,MySQL是许多Web应用的数据存储解决方案。5.7版本提供了更多性能...

    客服在线管理,仿QQ即时通讯,适合开发捆绑在自己的程序中便于客户管理咨询

    7. **易语言源码应用**:易语言是一种易学易用的编程语言,适用于快速开发。此项目的源码使用易语言编写,为开发者提供了直观的学习和二次开发基础。 在实际开发过程中,开发者可以参考以下步骤: 1. **环境搭建**...

    计算机专业毕业实习报告 .doc

    10. 计算机专业软件开发流程:计算机专业软件开发流程包括需求分析、设计、实现、测试、维护等阶段。在实习过程中,学习到了计算机专业软件开发的具体流程,提高了自己的实习工作能力,适应社会能力和自我管理的能力...

Global site tag (gtag.js) - Google Analytics