J2EE学习从菜鸟变大鸟之八 企业级项目开发的思考
什么是企业级项目开发
"企业级项目"、企业级项目开发,Java也是企业级项目开发,这个我们到处说、听,每天被我们挂在嘴边,可是到底什么项目才算是"企业级"?自己一直做的小项目或者大项目到底算得上企业级吗?也就GXPT算是企业级项目吧,接下来和大家交流学习!
1 . 项目开发的现状
一直以来,大小项目在咱们提高班做了算是不少的了,我们都在不停得做项目,赶项目。相信从大家开始做项目到现在,做过了很多大大小小的项目,或多或少也有让自己很引以为豪的成功了的项目。现在大家回头想想,我们的项目一般是怎么做出来的!即便是每个开发小组是不同的,但是在项目的期限、客户需求变更中、各个督促下,我们的起码的实现、整体的设计还是差不多的,大同小异吧,拓展性、灵活性差了些。
每次项目到来,几次会议之后,项目就开始了,开始分配人员,开始分析一些从客户那里拿来的需求,然后一些骨干的开发人员就开始为项目搭架子。于是一个项目就算是进行起来了。谈到了为项目搭架子,专业点说就是做架构了,说是做架构,其实就是把项目按照惯例分割为几个逻辑层,至于说这个架构好不好,有什么风险,是否可以适应以后的变化,采用的技术的风险和可行性分析,这些很少考虑,原因很简单:一般的都是这么开发的,应该没有什么大的问题。确实,很多的项目也确实是这样的开发的,而且很多也成功了。这些无可厚非,至于说什么标准不标准,是否遵循了什么开发的原则,没有多少人在乎,不管怎样,项目是成功了。
项目开发中,很多的原则我们是很清楚:什么单一职责,依赖反转,什么可测试性,维护性.....很多时候,在coding的时候,这些原创反倒成了多余,项目最后成为了功能代码的堆积,特别是在赶项目的过程中,代码堆积的效果就更加明显了:只要把功能搞定,其他的以后再说。可以往往这个"以后再说"就成为了"永不再说"、凑合着能实现就行了,这个也无可厚非。
就这样,一年又一年,开发项目,做项目,赶项目。主键的很多人随着项目的进行对做软件开发后期会变得没有那么多兴趣:原本以为软件开发是一种高智商的活动,现在发觉有点像是体力活。一年一年,一月月的,我们为一个个不同的客户开发出一个个不同的系统。
通过资料表明:公司中……
相信很多公司也常常提出很多很"诱人"的口号:通过做大量的项目,积累和开发通用组件,组件越多,以后开发就是仅仅只是堆积木了....但是真正的项目中,客户不停在催,上头也在催,最后就没有人顾及什么通用不通用了。项目开发是越做越累,相信这也是很多开发人员转行和转型的原因之一吧。
2. 什么是企业级项目
学Java这个接触的越来越近了,时常思考这个问题?企业级项目是什么? 为一个企业,机构,客户公司开发的项目就算得上是企业级项目了吗?一个很大的项目就是企业级项目吗?一个小的项目就算不上是企业级项目?一个代码成千上万上十万的代码是企业级项目吗?茫然!
其实,一直以来,我个人也对什么是"企业级"的概念不是很清晰。只是天天是在这么说,米老师也给我灌输这样企业级开发的思想,刚开始还是真有点满然,听着听高深哈。
说到企业级项目,随着而来的有很多概念:企业级架构,企业级开发。
但是不管怎么说:企业级这个概念和项目的大小是没有什么很大的关系的,甚至可以说是几乎没有什么关系。
其实企业级项目其实就是一带着一种"企业级"的思想来做项目。
在文章中的第一部分,我们到了现在我们做项目的方式:代码的功能"堆积"。通过这种堆积出来的代码就仅仅只是用于这一个项目,对于以后其他的项目几乎是没有什么用处的,也就说代码的重用行不够,而且往往在一个项目中,很多的代码都是杂七杂八的,很多相似的功能都是各自搞出一套代码。诸如之类的问题,导致项目越做越类,很多美丽的口号化为泡沫。
企业级的项目起码有以下几个特征:
稳定性
灵活性
隔离性
重用性
维护性
相信这些特性大家都不陌生,这些特性我就不具体的解析,大家都清楚。说了这些多,可能大家认为我说的是废话,但是有一点可以说的:现在我们开发项目确实很多的时候忽略了这些东西,因为这个忽略,确实使得项目项目的开发加快,但是从长期的来看,项目开发还是越来越累的。如果在开发的时候,每次带着一点点这样的思考,尽量写出符合那些特性的代码,慢慢的,一种"企业级的心智"就慢慢出来了,一个很类似的比喻:在项目中,遇到了一个很难的技术问题,我们往往花很多的时间来攻克,最后终于搞定。确实这个攻克的过程我们从思维上可以这样分析:我们思维和问题的答案之间隔了一道墙,我们一次次的尝试各种解决方案去攻克问题的时候,我们的思维一次次的在撞击这道墙,最后墙被撞破,我们也得到了问题的解决方案。
同理,我们在项目中带着"企业级"思维,我们就在一点点的撞击那道"墙",最后的结果就是:通用的功能被封装为了通用的组件,为以后的项目的留下积累。
总结
这里我自己的感触,本人的"企业级的心智"也没有,逐步的积累吧,但是因为带着这个思想作项目,在人事的维护、永和的维护、善良公社的开发、考试系统中出现问题的修复都深刻体会到了,企业级的思想可以很好地解决实际中遇到的代码重复修改、网站重新发布、功能的灵活、组件的灵活添加,通过通用性网站网站米老师也是一遍一遍耐心的给我深化这种开发的理念,个人认为思想有了提升,而且还真的得到了不少通用的组件,虽然说组件善待完善,但是已经有了些甜头。对系统后期的维护的成本也是大大的降低,企业级开发思想在Java学习中面面俱到啊,GXPT中师哥们也利用这种企业级开发的理念在大显身手啊。
今天只是简单谈谈自己的心得,接下来大家可以探讨探讨,欢迎踊跃评论啊!
J2EE学习从菜鸟变大鸟之八 企业级项目开发的思考的更多相关文章
- J2EE学习从菜鸟变大鸟之九 深入浅出理解 Servlet-----实例解析
关于Servlet的基础内容在前面已经和大家分享过了,参考J2EE学习从菜鸟变大鸟之七 Servlet,现在结合到DRP中学习,深刻的体会Servlet起到了枢纽中转的作用,控制逻辑(到MVC中更像是 ...
- J2EE学习从菜鸟变大鸟之六 EJB(Enterprise JavaBean)企业级Java组件
EJB (EnterpriseJavaBean)是J2EE的一部分,定义了一个用于开发基于组件的企业多重应用程序的标准.其特点包括网络服务支持和核心开发工具(SDK).其称为Java 企业Bean,是 ...
- J2EE学习从菜鸟变大鸟之四 JNDI(Java Naming and Directory Interface)
掌握 J2EE 是件不是很轻松的事哈,但是很有意思,抽象抽象哈哈,因为它包含的技术和缩略语在不断地增长.Java 命名和目录接口(Java Naming and Directory Interface ...
- J2EE学习从菜鸟变大鸟之七 Servlet
Servlet现在自己的理解是一个控制器,简单的可以理解为不同的JSP页面由用户发送过来的请求可以由Servlet控制器来控制其向下调用的方向(结合三层好理解),但它比较特殊,因为它通常会从外界接收数 ...
- J2EE学习从菜鸟变大鸟之五 JDBC(Java Data Base Connectivity)
JDBC刚开始学习这个的时候看到了,以为是ODBC呢,很是相似啊,总的来说还是基本上一类的东东,但是还有一些细微的区别,下面和大家一起分享学习. JDBC(Java Data Base Connect ...
- Java学习从菜鸟变大鸟之一 hashCode()和equals()的本质区别和联系
在学习java,根据视频做实例的过程中,对equals和hashcode两个方法理解稍微深刻一点,主要是它们两个很容易混淆,容易出错,自己又通过网上的资料学习,和大家分享 equals()方法 equ ...
- Java学习从菜鸟变大鸟之三 多线程中Thread 和Runnable的区别与运用
多线程机制是java中的一个特点,掌握它对后面的知识的理解至关重要,是java工程师的必备知识,多线程指在单个程序中可以运行多个不同的线程执行的不同的任务,线程是一个程序内部的顺序控制流.进程是静态的 ...
- Java学习从菜鸟变大鸟之二 输入输出流(IO)
在软件开发中,数据流和数据库操作占据了一个很重要的位置,所以,熟悉操作数据流和数据库,对于每一个开发者来说都是很重要的,今天就来总结一下JavaI/O. 流 流是一个很形象的概念,当程序需要读取数据的 ...
- NET中小型企业级项目开发架构系列(一)
前端时间我们开发了基于Net的一套搭建sprint.NET+NHibernate+MVC+WCF+EasyUI等中小型企业级系统开发平台,现在把整个开发过程中的步步进展整理出来和大家分享,这个系列可能 ...
随机推荐
- CentOS7快速配置nginx node mysql8.0
目录: (一)基础准备 (二)安装node (三)安装nginx (四)安装mySql8.0 (五)整体配置 (六)安装PM2守护进程 (一)基础准备1.1 概述 服务器操作系统为 centos7.4 ...
- jQuery简单笔记
jQuery 是一个 JavaScript 库,简化了 JavaScript 的编程. 语法:$(selector).action() selector 是字符串,表示HTML元素. 对象 符号 例子 ...
- 单选、多选框根据value值设置选中
$("input:checkbox[value='video']").parent().addClass('checked'); $("input:radio[value ...
- mybatis自动生成
很简单只要配两个文件 pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmln ...
- 解决$.ajax()在IE10以下失效的问题
一.问题重现 本地的脚本请求测试环境的接口 $.ajax({ url: ***, type: GET, data: data, success: function (data) { **** } }) ...
- 网站用户身份识别俩大招之cookie
导航: 原理介绍 代码实现 过程分析 追踪Cookie 原理介绍 众所周知,http协议是无状态的协议,简单理解是用户的前一步操作和后一步操作之间没有关系,互相不知道,不干扰.而在很多场景下,浏览网页 ...
- Ajax相关——get请求和post请求的区别
一.完整的URL由以下几部分组成: scheme:通信协议,常用的有:http/ftp. host:主机,服务器(计算机)域名或IP地址 port:端口,整数,可选,省略时使用默认端口,http的默认 ...
- ACM Bone Collector
Many years ago , in Teddy's hometown there was a man who was called "Bone Collector". Th ...
- 我为什么放弃使用MyBatis3的Mapper注解
最近在使用MyBatis3做项目.在使用注解实现Mapper的时候遇到了比较奇葩的问题:在实现数据的batch insert的时候总是报错.好不容易可以正常插入了,但是又不能返回自增的主键id到实体b ...
- SimpleDateFormat中parse和format的区别
parse()返回的是一个Date类型数据,format返回的是一个StringBuffer类型的数据 //SimpleDateFormat中的parse方法可以 //把String型的字符串转换成特 ...