spring的问题-能耗、学习曲线
说实话,在过去将近20年中,spring对于it行业的帮助还是很大的,尤其是信息系统建设方面。
但在我看来,spring的发展也许进入了一个困局。
开始的时候,spring的确是一个还是算小巧的工具,但是现在已经变成了一个庞杂的大东西。
的确,它好像什么都可以解决,但是变得过于繁复,庞大,性能上也有下降。
从工程的某个角度看,spring的确加快了系统的建设!但看待一个事物,总是要多个方面,不能失于片面。
运维问题
从运维角度看,用java写的东西,天然就不是一个绿色的程序,应为java本身就很慢,再加上spring自身复杂的结构,导致一个功能可能变得
很慢,所耗费的能源还是很客观的。
有人做了研究,具体什么标准不太清楚,但是大体反应了一个现实:
Which Programming Languages Use the Least Electricity? - The New Stack
注:这个表格来自下文的论文中
java是c的大概两倍,但是考虑到spring的复杂结构,我觉得至少是3倍的关系。考虑到全球有那么多服务器都是运行java程序,可想而知,这个能耗。
还有一个参考文献:Ranking programming languages by energy efficiency (states.github.io)
这是在计算机科学杂志上发表的:
现在人们还不是太关注这个方面,但是考虑到恶劣的自然环境和日益减少的能源,我们的程序是不是应该更应该考虑运行效率了?
对于现在这个世界,节能应该是一直需要关注的事情。
最近人工智能芯片的问题,充分说明了节能的重要性。
只可惜,我们的科学家和工程师并没有认真做好他们自己的事情,这也侧面反应了为什么我们的某些方便和外国人还是有很大的差距,因为首先
态度就是一个巨大的问题,我们太缺乏学术心态,缺乏长远的目光。
学习角度
从学习角度出发,spring正在变得越来越复杂。此外它所推崇的方便可能让它自己的效率进一步下降,进一步复杂。
考虑到这是一个很流行的框架,也许大家需要浪费越来越多的时间了。
当然,也有人认为,这是一个学习曲线还算不错的框架,我也承认这个。但我认为,作为一个javaee框架,没有必要搞得那么复杂。
如果只是用spring开发javeee应用,我建议还是尽量只使用spring的核心部分即可,其它所谓的security等等之类的东西,也许需要慎重考虑。
如果考虑到用于开发项目,那么也许脱离这些复杂的东西会可能更好一些。
我只能说,spring有时候的确是有点方便,但是我们需要考虑它的代价。做事情总是顾头不顾尾,迟早会出问题,我特别讨厌那样的人。
spring的问题-能耗、学习曲线的更多相关文章
- 转:使用 Spring Data JPA 简化 JPA 开发
从一个简单的 JPA 示例开始 本文主要讲述 Spring Data JPA,但是为了不至于给 JPA 和 Spring 的初学者造成较大的学习曲线,我们首先从 JPA 开始,简单介绍一个 JPA 示 ...
- Spring MVC中Session的正确用法<转>
Spring MVC是个非常优秀的框架,其优秀之处继承自Spring本身依赖注入(Dependency Injection)的强大的模块化和可配置性,其设计处处透露着易用性.可复用性与易集成性.优良的 ...
- 使用 Spring Boot 快速构建 Spring 框架应用--转
原文地址:https://www.ibm.com/developerworks/cn/java/j-lo-spring-boot/ Spring 框架对于很多 Java 开发人员来说都不陌生.自从 2 ...
- 初探Spring Batch
此系列博客皆为学习Spring Batch时的一些笔记: 为什么我们需要批处理? 我们不会总是想要立即得到需要的信息,批处理允许我们在请求处理之前就一个既定的流程开始搜集信息:比如说一个银行对账单,我 ...
- 【转】Spring MVC中Session的正确用法之我见
Spring MVC是个非常优秀的框架,其优秀之处继承自Spring本身依赖注入(Dependency Injection)的强大的模块化和可配置性,其设计处处透露着易用性.可复用性与易集成性.优良的 ...
- Spring MVC和Struts2的比较(二)
1.Spring MVC的controller+command object模式比Struts2的Action模式更安全一些.而在Struts2中,自动数据绑定发生在Action对象上.这样,在Act ...
- Spring的起源和背景
上图为Spring框架的组成结构 下面这几张也是的 Spring将大量实际开发中需要重复解决的步骤,抽象成了一个框架. 其中Spring Core Container是Spring框架的核心机制. S ...
- Spring.NET 与 NHibernate
回到 Spring.NET & NHibernate of C#.NET 技术论坛 实战C#.NET编程----Spring.NET & NHibernate从入门到精通 您可以从以下 ...
- spring的组成
① Spring Core:核心容器,BeanFactory提供了组件生命周期的管理,组件的创建,装配,销毁等功能 SpringContext:ApplicationContext,扩展核心容器,提供 ...
- 使用struts+spring+hibernate组装web应用
这篇文章将讨论怎样组合几个着名的框架去做到松耦合的目的,怎样建立你的构架,怎样让你的各个应用层保持一致.富于挑战的是:组合这些框架使得每一层都以一种松耦合的方式彼此沟通,而与底层的技术无关.这篇文章将 ...
随机推荐
- WPF 使用 Win10 的 WinRT 自带 Windows.Media.Ocr 实现图片转文本
世界上有很多 OCR 识别技术,本文来和大家介绍如果在 WPF 里,在运行到 win10 的设备上,通过 Windows Runtime 自带的 Windows.Media.Ocr 实现在给定的图片里 ...
- 2018-2-13-C#-获得设备usb信息
title author date CreateTime categories C# 获得设备usb信息 lindexi 2018-2-13 17:23:3 +0800 2018-2-13 17:23 ...
- Go-Zero微服务快速入门和最佳实践(一)
前言 并发编程和分布式微服务是我们Gopher升职加薪的关键. 毕竟Go基础很容易搞定,不管你是否有编程经验,都可以比较快速的入门Go语言进行简单项目的开发. 虽说好上手,但是想和别人拉开差距,提高自 ...
- C#开源的两款功能强大的录屏神器
ScreenToGif ScreenToGif是一款由C#语言开发且开源的操作简单.免费的屏幕录制和GIF动画制作神器.它可以帮助用户捕捉计算机屏幕上的实时动画,并将其保存为高质量的 GIF 图像格式 ...
- SpringBoot3.1.5对应新版本SpringCloud开发(1)-Eureka注册中心
服务的提供者和消费者 服务之间可以通过Spring提供的RestTemplate来进行http请求去请求另一个Springboot的项目,这就叫做服务间的远程调用. 当一个服务通过远程调用去调用另一个 ...
- golang 常用操作
golang 获取切片 slice 第一个 最后一个 元素 复合数据类型切片通常用作Go中索引数据的口语结构. 该类型[]intSlice是具有类型为integer的元素的切片. len函数用于获取切 ...
- Splashtop 免费60天 大赠送
这两天又是双11,又是 EDG 夺冠,可谓喜事连连.热闹不断.我们也给大家准备了一份长达两个月的免费福利,快乐加倍嗷. 福利详情: 1.分享这篇文章(不要设置分组可见). 2.发送您的 Splasht ...
- java学习之旅(day.03)
整数拓展: 进制 二进制:以0b开头 十进制:我们生活中的正常数 int i=10 八进制:以0开头 int i=010 十六进制:以0x开头 0~9 A~F int i=0x10 浮点数拓展: fl ...
- Kafka架构以及一键化部署
什么是Kafka? Apache Kafka是一个开放源代码的分布式事件流平台,成千上万的公司使用它来实现高性能数据管道,流分析,数据集成和关键任务等相关的应用程序. Kafka的应用场景 构造实时流 ...
- centos7下xfs文件系统的备份和恢复:完全备份,增量备份,差异备份
目录 一.关于xfs文件系统 二.xfsdump的备份级别和注意事项 三.完全备份整个目录/分区,然后恢复数据 四.完全备份分区中某个目录,然后恢复某个文件/文件夹 五.增量备份 一.关于xfs文件系 ...