javaWeb项目的大小是否影响着项目运行的效率?
比如:两个项目基本功能一样,但是一个引入大量JAR包或其他文件。我想问下,是不是相对项目体积小的效率更高些。作为BS系统,项目运行影响他效率的(除代码优化和数据库,硬件,网络)还有那些?与CS系统又有哪些区别?
不是特别清楚,可能提的问题也有出处?望予以解答!!
引入大量jar包说明业务系统的需求相对丰富,没有无缘无故导入的jar包,而且java是个动态加载的系统,只有需要某个class的时候才会去加载它,所以jar包本身不会影响系统的性能。
如果是两个功能相似的系统:
系统1:尽可能利用开源的jar包
系统2:尽可能不利用开源的jar包,很多通用的功能都自己实现
那么,系统1的做法更好,性能会更高,代码的效率和可维护性更好
web系统的效率和访问量有很大关系,随着并发request数量的不断增加,系统的性能会遇到瓶颈,甚至会直接挂掉,这时候就需要重新考虑系统的整体架构。比如:提高硬件配置,增加主机,负载均衡,缓存等等。与这些要素相比,你提到的jar包的数量,代码量这些其实是次要的因素。
至于CS系统和BS系统的区别,大致能想到这些:
1.BS系统不需要安装和升级客户端程序,只要有浏览器,能联网就行。
CS系统需要每个终端安装和升级具体的客户端程序。
2.如果支持多种终端(windows,ios,Android),BS结构可以不需要考虑客户端程序。而CS结构的话,每个平台都要单独开发客户端程序。
3.BS结构的客户端界面因为要依托于浏览器,所以对界面的支持不如CS系统,虽然现在出现了很多富客户端的UI以及HTML5,但还是达不到CS的本地UI。
4.CS系统的运行速度高于BS的浏览器客户端。因为BS结构的系统,所有的画面展现都要通过网络来传输大量的HTTP数据包。而CS系统只需要传输服务端返回的数据,数据量会少很多。还有就是BS系统的画面展现要通过浏览器对HTML文进行解释分析后再执行,所以客户端的运算速度赶不上CS本地客户端的代码。
5.CS和BS其实是各自有各自的适用范围,对于功能丰富,信息量较大,信息类型较丰富(文字,图片,声音,视频等等)的网站系统,当然要用BS系统。对于那些功能单一,以运算为主的系统,可以考虑采用CS系统。
一般情况下项目的大小以及引用的jar多少和效率没有关系,jar多少只是影响占用的Perm空间,一般问题不大,和运行效率没有关系。
但引入什么样的jar通常标志着你引入了什么样的技术框架,技术框架之间的效率可能就会有比较大的区别了,但也和jar多少无关。
相对于C/S系统,B/S系统除了协议可能不同(协议的效率也可能不同)以外,还有就是Web端的计算能力和持有数据的能力很弱,绝大部分数据和运算都得在服务器端。其他影响效率的因素那就是C/S和B/S共有的了。