`
xiaozhonghua
  • 浏览: 254117 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

用Swing开发的免费大型ERP

阅读更多

前面几篇《Swing大刀》的探讨,引起了大家对Swing技术的兴趣,也引来了不少的口水和砖头。最近在JavaEye上已经可以看到不少高质量的Swing讨论和应用介绍,这已经是很大的变化。不过更多的同学对Swing的应用还是比较茫然甚至怀疑:Swing能做大型应用么?今后我想讨论一些Swing在大项目中实践,是更有意义的事情,总比单纯的技术口水要有聊一些。

 

这些年大家都在说:Swing学起来费劲,用的也不多,见到的应用也不多,能做大型应用么?最近还有朋友看了几刀之后就说,哎呀快去学Swing吧,做东西好漂亮!其实这不仅让人哭笑不得:几年前大家还是一边倒的打骂Swing太丑,都说Flex啥的漂亮,突然有人夸起Swing做东西漂亮来了,还真很不适应。还有人说,Swing快不行了,Sun也不行了,Oracle也不行了....其实在他们眼里,也许Java也不行了,软件开发也不行了....那到底Swing做大应用能行吗?通过自己参与的项目经验来说:这个真的行!

 

这几年一直在做Swing的开发,有幸参与了公司一个大型的ERP项目。这个ERP项目规模很大,我的NetBeans工程里就有150多万行代码,还不包括其他小组的分支模块。前端除了桌面客户端外,还有浏览器和手机终端,不过最重要的还是Swing版的桌面客户端。这个Swing版的ERP客户端开发了已经7年多了,JDK从1.3一直升级到现在的1.6,IDE也从IDEA、JBuilder到Eclipse、NetBeans。不过核心框架一直没有什么大变化,应用也比较成熟。

 

这是一个大型的ERP系统,典型的C/S结构,也混合了一些B/S结构和手机终端的模块,不过主要内容还是在庞大的后端和Swing的前端。后端主要用J2EE架构搭建,通过JBoss应用服务器和MySQL数据库,Hibernate做O/R,自己封装DAO层以及Business层控制业务逻辑,再用Ejb进行业务API封装。最后,通过一个Facade层的EJB(后来改造成Servlet)对外提供统一的访问接口。这个接口也是整个后台唯一的访问接口,这个“一夫当关、万夫莫开”的入口处,再插入登录和会话管理、安全控制、日志记录、请求分发等机制,干净简洁。通讯协议,以前通过EJB和IIOP的协议开放API提供远程调用,后来发现EJB的通讯非常异常繁琐和“重”,各种控制比较复杂,效率也不好。后期版本改造为用一个Servlet封装对外提供接口,协议也变成了HTTP。这样,后台通过一个80端口,以类似WEB的方式统一提供前端的API访问。对很多人来讲,这个方式可能有点奇怪:Swing的胖客户端,还用HTTP的WEB协议来访问后台。嘿嘿,其实这一招不错哦,仔细琢磨一下会体会到其妙处。

 

前台是一个完整的Swing程序,也是通过层层封装,提供了一层与服务器一一对应的API访问层,最后通过一个统一的代理类,对后台进行访问。通过HTTP如何传输Java对象呢?我们没有使用Web Services之类的技术,而是直接把要调用的方法以及参数等信息序列化,以HTTP方式提交后台,后台通过模块分发、反射的方式执行函数后, 把结果数据进行序列化,再经过压缩,通过HTTP返回客户端。客户端将数据解压、反序列化,将对象再返回API的调用者(如各个界面、按钮等)。这个结构非常高效、可靠。甚至包括函数的异常等,都可以通过序列化进行传递。

 

通过HTTP的方式,服务器不再需要防火墙开放更多端口,和web应用一样,一个80就行了。另外,和web传递html等信息不同,这种结构下,中间传递的就是压缩过的Java对象序列化后的字节流,其效率是很高的。客户端是胖结构,自然可以处理更多的数据处理和呈现,比浏览器也有优势,很合适ERP这种企业应用。轻量、高效的结构也提供了很好的业务支撑能力:一台普通的台式机可以提供100个ERP用户同时在线、比较流畅的使用。这对于没有专门预算购买专业服务器和建设机房的企业来说,是非常给力的。

 

至于Swing的客户端是否能做的好看,这个就要看是否用心了。只要用心,什么UI技术其实都无所谓,都可以做出漂亮的应用。这里提供两张贴图,是否好看还是仁者见仁、智者见智了。

 


 

通过这两年的Swing开发,也总结了一点经验,和大家分享:

 

  • Swing入门较高,有一定的学习曲线。企业在选择是否采用Swing技术之前,一定要分析是否合适自己的团队。如果没有一个半个Swing比较好的骨干带领,Swing的复杂度很容易让整个项目代码失控,最后变成一个“好大好大好大的垃圾堆”。
  • 代码要尽量一层一层的搭框架,不断的重构、优化、复用,不可每个人按照自己喜好自搞一套,否则很容易失控;代码和风格甚至开发工具都要尽量一致,避免维护的麻烦。
  • 找一个好的美工。美工设计很重要,他(她)会从不同于程序员的眼光来创建和设计UI,我们一定要尊重美工的设计思路,不要轻易指手画脚、大放厥词。术业有专攻,要知道,在美术方面咱们程序员大多是小学生水平。一旦设计风格确定,就严格按照统一的风格进行开发,每一个对话框、每个按钮、每个图标。让一个ERP中成千上万的对话框都“如出一辙”确实不易,不过应当是目标。
  • 永远从“用户”角度设计UI。开发UI也是设计的过程,美工没可能把一个ERP系统中成千上万的对话框都设计出来,程序员这时候就是半个美工、半个用户。让大脑里时刻存在一个“用户”并时刻敲打自己:这个界面好用吗?这个报表能看懂吗?这个按钮位置合适么?做软件就像盖大楼,地基结实固然重要,窗户密封性就不重要了吗,外墙涂料就不重要了吗?要做百年屹立的优质工程,就得处处关注细节。别忘了房子是用来住的,软件是用来用的。
再对这个ERP简单介绍一下。这是一个专门针对制造行业设计的大型ERP,模块涵盖工程设计控制、图纸、物料、物料清单、采购、销售、库存、MRP、生产、工单、质量、财务、客户服务、人事、安全等等。尤其适合“按单生产”类型的离散型制造企业。用户有Wexford、Whetherford等国际巨头,也有中海油这样的大型国企,更多的是中小企业,我还碰到过只有一台电脑的私人老板,也在用我们的ERP,而且用的还很不错,很匪夷!

最后再说一个难以置信的事实:这是一个免费软件。呵呵,这年头,ERP软件都可以免费,没错,完全彻底的免费,自己玩、商用、学习.......随便啦。

感兴趣的朋友到网站拖一个下来耍耍,希望会对Swing的能力信心爆棚。不过中文版还在紧张翻译中,需要一段时间才能提供下载。先玩玩英文版吧,相信大家的英文都可以应付。网站是:www.2bizbox.com,点击就能下,不需要注册。

 

欢迎喜欢Swing和ERP的朋友一起探讨,祝大家元旦快乐!

 

  • 大小: 157 KB
14
0
分享到:
评论
14 楼 Danny的JAVA世界 2012-12-21  
上海拧结棍!
13 楼 zhlx2835 2012-08-13  
真的很牛逼啊!!
12 楼 yourgame 2011-02-10  
楼主,你就快点放出中文版吧,我每天满世界的找你们产品的中文版,就是想救_命呀!
11 楼 wwty 2011-01-14  
10 楼 xiaozhonghua 2011-01-12  
真无名 写道
当时没考虑国际化? 这个东西免费太匪夷所思了。

国际化是必须的,而且用的都是java i18n的标准技术,所有字符串都在资源文件中。不过新版本的翻译需要不少工作,我们国内几个人正在翻译中,呵呵。快了,这个月差不多!
9 楼 真无名 2011-01-11  
当时没考虑国际化? 这个东西免费太匪夷所思了。
8 楼 pigonsoft 2011-01-11  
相当的牛比
7 楼 pigonsoft 2011-01-11  
相当的牛比
6 楼 kokorodo 2011-01-11  
哇晒,太好了。之前没有好好的看Swing,现在可以有空的时候,学一下了!
5 楼 dir_murong 2011-01-11  
读lz一篇文 感触很深啊 。。 向你学习 
4 楼 zhoujianboy 2011-01-10  
耍耍?? 阳春的?
3 楼 dearsunkey 2011-01-10  
这个的确很漂亮!
2 楼 xiaozhonghua 2011-01-07  
jameswolf 写道
对于 把ejb换成 80 直接访问,速度是快了,ejb容器很多用途现在都怎么完成的?比如事务完整性的控制?

这里,EJB之用在容器内部,对外是通过Servlet+http80端口来通讯的,完全不用EJB和RMI协议了,而是使用了Java的序列化。详见这篇文章:
http://joshuaxiao.iteye.com/blog/859942
1 楼 jameswolf 2011-01-07  
对于 把ejb换成 80 直接访问,速度是快了,ejb容器很多用途现在都怎么完成的?比如事务完整性的控制?

相关推荐

    java是什么共3页.pdf.zip

    2. **企业级应用**:通过Java EE(企业版)平台,开发大型分布式系统,如ERP、CRM等。 3. **移动应用**:Android操作系统主要使用Java进行应用开发。 4. **大数据处理**:Hadoop等大数据框架的开发语言就是Java。 5....

    MF00527-java仓库管理系统源码.zip

    Java是一种跨平台的、面向对象的编程语言,具有“一次编写,到处运行”的特性,这使得Java成为开发大型分布式系统和企业应用的理想选择。Java的标准库(Java Standard Edition, Java SE)提供了丰富的API,支持网络...

    #####这是对java的深入解析的文章

    - **企业级应用程序**:Java 的跨平台特性和强大的标准库使其非常适合开发大型企业级应用程序,如企业资源规划(ERP)、客户关系管理(CRM)系统等。 - **移动应用程序**:虽然 Android 应用开发主要使用 Kotlin,但...

    J2EE从零开始

    - **Jive论坛**:一个流行的社区平台,展示了如何使用J2EE技术构建大型应用程序。 - **Petstore**:Sun Microsystems提供的示例项目,演示了如何使用J2EE技术栈进行开发。 #### 五、持续学习与跟踪新技术 随着技术...

    基于Java语言的进销存管理系统.zip

    Java作为一种广泛使用的编程语言,尤其适合大型企业级应用,其跨平台特性使得该系统能够在不同的操作系统上运行。 首先,我们要理解Java的基础知识。Java是一种面向对象的编程语言,由Sun Microsystems(现为Oracle...

    企业资产管理系统

    表现层使用Java Swing或JavaFX创建图形用户界面;业务逻辑层使用Java服务处理业务规则和验证;数据访问层则通过JDBC(Java Database Connectivity)或ORM(Object-Relational Mapping)框架如Hibernate来操作数据库...

    Java跨平台的原理

    - **企业级应用开发**:许多大型企业的内部管理系统、ERP、CRM等都是基于Java开发的。 - **移动应用开发**:虽然原生Android应用通常使用Kotlin或Java开发,但Java仍然是一种重要的选择。 - **桌面应用程序**:Java...

    企业进销存管理系统

    在这款系统中,Swing作为前端界面开发工具,与后端的SQLServer数据库相结合,为企业提供了高效、准确的数据处理和信息管理能力。 Swing是Java的一种图形用户界面(GUI)工具包,用于构建桌面应用程序。它提供了丰富...

    j2ee 与 j2se 和 j2me的区别

    J2EE 主要用于构建大型的、分布式的企业应用系统,如 ERP、CRM 系统等。 - **核心功能**: - EJB(Enterprise JavaBeans)组件模型。 - Servlets 和 JSP 技术。 - Web 服务支持(如 SOAP、WSDL)。 - 远程方法...

    OA.zip_Office_办公 Java

    在OA系统中,Java可以通过Spring Boot、MyBatis等框架构建稳定的后端服务,同时利用JavaFX或Swing进行桌面应用的用户界面设计。 3. **Java框架应用**: - **Spring Boot**:这是一个基于Spring框架的高度集成了...

    企业人事管理系统 (含 数据库)

    - **Access**:微软开发的轻量级数据库管理系统,适合小型企业使用。它的操作简单,易于集成到Windows环境中,但扩展性和性能相对较低。 - **MySQL**:开源的SQL数据库,具有高性能、高可用性和可扩展性,适合中...

    BLAX!-开源

    同时,Java的丰富API和框架允许开发者轻松集成其他系统,如ERP、CRM等,以实现更全面的企业级解决方案。 总之,BLAX! 通过其开源特性、键盘优化的用户界面和强大的库存及POS管理功能,为企业提供了一种高效、可定制...

    全面:具有企业级功能的桌面应用程序

    3. 开发:使用Java编程语言和相关工具,遵循MVC或类似的架构模式,编写代码。 4. 测试:进行单元测试、集成测试和系统测试,确保功能正确性和稳定性。 5. 部署:将应用发布到目标环境,如本地桌面、局域网或云服务器...

Global site tag (gtag.js) - Google Analytics