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应用
这篇文章将讨论怎样组合几个着名的框架去做到松耦合的目的,怎样建立你的构架,怎样让你的各个应用层保持一致.富于挑战的是:组合这些框架使得每一层都以一种松耦合的方式彼此沟通,而与底层的技术无关.这篇文章将 ...
随机推荐
- [FAQ] Large files detected. You may want to try Git Large File Storage
Git 提交文件大于 100M 时提示需要使用 Git LFS. Ubuntu 安装示例: $ curl -s https://packagecloud.io/install/repositories ...
- 在 VisualStudio 给文件起一个带分号的文件名会怎样
小伙伴都知道在 Windows 下是支持文件名使用分号的,而写过 Roslyn 的小伙伴都知道,在 csproj 项目里面使用分号分割数组.那么在 VS 里面将一个文件名添加分号会如何?下面让咱写写看 ...
- 第一章 Jenkins安装配置
Jenkins官网 # 官网: https://www.jenkins.iohttps://www.jenkins.io/zh/ # docker安装: https://www.jenkins.io/ ...
- QT Creator 远程调试 QT 程序
一.测试环境 QT Creator 版本:5.12.9 开发板:rv1126 开发环境:ubuntu20.04 开发板内核:4.19 二.配置 ARM 交叉编译器 ARM 交叉编译工具,购买开发板时, ...
- Linux服务器安装GaussDB 100及安装过程中常见问题解决
******************************** Gaussdb 100安装 ******************************** 1. 创建安装包目录 mkdir -p ...
- Unity 热更--AssetBundle学习笔记 1.0【AB包资源加载工具类的实现】
工具类封装 通过上文中对AB包加载API的了解和简单使用,对AB包资源加载的几种方法进行封装,将其写入单例类中,如代码展示. 确保每个AB资源包只加载一次: 在LoadAssetBundleManag ...
- 六、Doris数据流与控制流
目录: 数据查询 数据导入 元数据修改 1.查询 用户可使用MySQL客户端连接FE,执行SQL查询, 获得结果,查询流程如下: 分步说明: ① MySQL客户端执行DQL SQL命令. ② FE解析 ...
- VMware最小化安装Centos7.6-无桌面
目录 安装包工具 新建虚拟机 安装 centos 7.6 系统 终端登陆系统 设置ip地址 关闭防火墙 关闭 SELINUX SELINUX=enforcing 硬盘挂载 桥接上网方式 安装包工具 V ...
- rails byebug
Gemfile里添加 gem 'byebug' bundle install 在要打断点的地方写 byebug byebug -h #帮助 c 放行,入下走 n 单行调适 q 退出进行 启动异步任务推 ...
- VRRP 虚拟路由器冗余协议
目录 文章目录 目录 为什么要使用 VRRP 技术? VRRP VRRP 的概念 VRRP 的工作原理 VRRP 的状态机 VRRP 的工作过程 VRRP 的选举机制 VRRP 的报文格式 VRRP ...