关闭

利用脚本将java回归到面向函数式编程

发表于:2013-3-27 10:09

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:haitingr    来源:51Testing软件测试网采编

  这一年来一直在思考一个问题,就是如何降低Java开发的复杂度,有时候真的是感觉“面向对象一声炮响,将所有人都震晕了“,做了这么多年Java,越做越累,原因在于始终找不到一个很好途经有效降低项目开发的成本,让刚刚走出校门的学弟、学妹能够快速的创造价值。

  其实公司也有很好的培训制度,从基础开发到高级应用,面面俱到,但是这种培训真正给项目带来的价值并不是很大,每个在客户现场的项目经理都会深切认同”远离战场的人都是军事家“这句话。

  可能是自己太懒惰了,对新的JAVA框架都不太爱去看,总是感觉到了现在这个时候,还沉浸在掌握了几个框架的YY中,实在悲催,浪费青春,终究尘归尘,土归土,而且框架设计者解决的是大众问题,说白了,解决了80%的问题,而要把一个公司的产品做的有生命力,应该考虑的是20%,这才是真正的核心竞争力。

  废话太多了,说一下自己的想法,特此声明:此想法是个人意见,不具有任何普世价值,喜欢拍砖的可以随意拍,但是不要恶意,喜欢捧场的,可以随意捧,但是不要崇拜(哈哈)

  目标:联机交易系统

  思路:消息驱动模式,全流程式分支处理,节点服务为面向服务式,基于业务字典进行接口定义。

  技术要求:核心稳定,支持7x24,高度容错,快速开发

  其实看到这些,我相信大家都知道这种系统的应用场景了,好吧,相信很多人都做过这种系统,这种系统我做了4年多,自己走了很多弯路,前面的blog里面也有简单的说明,这里我说一下这次做的方式吧

  1、首先分析隐含的需求,系统部署模式是什么?系统的运行环境是什么?性能要求是多少?其实这些挺关键的,做Java的很少会考虑这些,除非你是高手,因为充分利用系统环境,可以降低您的开发量,并可以将Java的性能发挥出来。

  这种系统我个人的想法是Application系统,运行环境就是Unix/Linux和JRE,OK,我可以利用sh来完成太多的事情了,性能不用说,300TPS以上才可以达标

  2、显示的需求(绕过业务,这里不用多说)

  核心稳定,支持7x24,这个说实话,要实现真正的7x24挺难的,怎么办,一是核心要经过简单,越简单越稳定,我不相信hello world崩溃了,除非您人品有问题,好吧,消息模式,线程管理,这个没有问题,如果线程确实有问题怎么办,用守护进程吧,做心跳,重启进程。

  高度容错,这个是异常处理和超时处理,内部心跳检测,内部消息管理方式实现

  3、快速开发

  这个是应该我想说的重点了,现在Java的开发基本是基于开源框架搭建,其实不管框架多么完善,开发人员始终要面对的是类的设计,对象的创建,当然也看到很优秀的框架能够自动生成这些,但是还是避免不了去修正,其实这种方式对开发人员的要求是很高的,我相信99.9%的框架是不会设置访问限制的,即使最初级的开发者也能够在自己的类中把您的DataSource shutdown了,想想就崩溃,还好做IT的人品都不错(嘿嘿)

  其实联机交易系统要做的事情都是数值计算(看清楚哦,不是数学运算,是数值计算),数值计算需要三个元素:操作符,参与者,结果,那好吧,我们把这些都封装成为接口,提供给开发者,让开发者做数值计算吧,即使写错了,也把限定到一个区间里面。

  实现这种方式最好的方式是提供函数,即使最差的毕业生也知道函数怎么使用吧,这个门槛都过不了,那真的是无语了,那作为产品的设计者就要考虑的是如何将面向对象的Java转移成为函数提供给这些开发者,好吧,我们有脚本,OK!

  思路是这样的【Java基础类(对象)】====》【脚本基础包】====> 【开发函数脚本片度开发】====》【编译脚本】====》【业务流程节点】

  形成业务流程节点后,那我们就可以利用核心流程调度器调度节点,形成业务流程,并由消息驱动来实现业务流程的驱动,是不是挺简单?

  要做好感觉不简单,为了达到这种模式,整个框架要完全自己来编写才能够适应这种模式

  其实今天写这个blog是有点遗憾,自己只是部分实现了这种方式,还有很多不足,但是效果还是不错的,给自己留在Java领域的时间不多了,应该说还有2天,希望各位大牛能够加以改进这种模式,利用7的内存直接管理功能,做好联机交易系统。

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号