说实话,在过去将近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的问题-能耗、学习曲线的更多相关文章

  1. 转:使用 Spring Data JPA 简化 JPA 开发

    从一个简单的 JPA 示例开始 本文主要讲述 Spring Data JPA,但是为了不至于给 JPA 和 Spring 的初学者造成较大的学习曲线,我们首先从 JPA 开始,简单介绍一个 JPA 示 ...

  2. Spring MVC中Session的正确用法<转>

    Spring MVC是个非常优秀的框架,其优秀之处继承自Spring本身依赖注入(Dependency Injection)的强大的模块化和可配置性,其设计处处透露着易用性.可复用性与易集成性.优良的 ...

  3. 使用 Spring Boot 快速构建 Spring 框架应用--转

    原文地址:https://www.ibm.com/developerworks/cn/java/j-lo-spring-boot/ Spring 框架对于很多 Java 开发人员来说都不陌生.自从 2 ...

  4. 初探Spring Batch

    此系列博客皆为学习Spring Batch时的一些笔记: 为什么我们需要批处理? 我们不会总是想要立即得到需要的信息,批处理允许我们在请求处理之前就一个既定的流程开始搜集信息:比如说一个银行对账单,我 ...

  5. 【转】Spring MVC中Session的正确用法之我见

    Spring MVC是个非常优秀的框架,其优秀之处继承自Spring本身依赖注入(Dependency Injection)的强大的模块化和可配置性,其设计处处透露着易用性.可复用性与易集成性.优良的 ...

  6. Spring MVC和Struts2的比较(二)

    1.Spring MVC的controller+command object模式比Struts2的Action模式更安全一些.而在Struts2中,自动数据绑定发生在Action对象上.这样,在Act ...

  7. Spring的起源和背景

    上图为Spring框架的组成结构 下面这几张也是的 Spring将大量实际开发中需要重复解决的步骤,抽象成了一个框架. 其中Spring Core Container是Spring框架的核心机制. S ...

  8. Spring.NET 与 NHibernate

    回到 Spring.NET & NHibernate of C#.NET 技术论坛 实战C#.NET编程----Spring.NET & NHibernate从入门到精通 您可以从以下 ...

  9. spring的组成

    ① Spring Core:核心容器,BeanFactory提供了组件生命周期的管理,组件的创建,装配,销毁等功能 SpringContext:ApplicationContext,扩展核心容器,提供 ...

  10. 使用struts+spring+hibernate组装web应用

    这篇文章将讨论怎样组合几个着名的框架去做到松耦合的目的,怎样建立你的构架,怎样让你的各个应用层保持一致.富于挑战的是:组合这些框架使得每一层都以一种松耦合的方式彼此沟通,而与底层的技术无关.这篇文章将 ...

随机推荐

  1. WPF 使用 Win10 的 WinRT 自带 Windows.Media.Ocr 实现图片转文本

    世界上有很多 OCR 识别技术,本文来和大家介绍如果在 WPF 里,在运行到 win10 的设备上,通过 Windows Runtime 自带的 Windows.Media.Ocr 实现在给定的图片里 ...

  2. 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 ...

  3. Go-Zero微服务快速入门和最佳实践(一)

    前言 并发编程和分布式微服务是我们Gopher升职加薪的关键. 毕竟Go基础很容易搞定,不管你是否有编程经验,都可以比较快速的入门Go语言进行简单项目的开发. 虽说好上手,但是想和别人拉开差距,提高自 ...

  4. C#开源的两款功能强大的录屏神器

    ScreenToGif ScreenToGif是一款由C#语言开发且开源的操作简单.免费的屏幕录制和GIF动画制作神器.它可以帮助用户捕捉计算机屏幕上的实时动画,并将其保存为高质量的 GIF 图像格式 ...

  5. SpringBoot3.1.5对应新版本SpringCloud开发(1)-Eureka注册中心

    服务的提供者和消费者 服务之间可以通过Spring提供的RestTemplate来进行http请求去请求另一个Springboot的项目,这就叫做服务间的远程调用. 当一个服务通过远程调用去调用另一个 ...

  6. golang 常用操作

    golang 获取切片 slice 第一个 最后一个 元素 复合数据类型切片通常用作Go中索引数据的口语结构. 该类型[]intSlice是具有类型为integer的元素的切片. len函数用于获取切 ...

  7. Splashtop 免费60天 大赠送

    这两天又是双11,又是 EDG 夺冠,可谓喜事连连.热闹不断.我们也给大家准备了一份长达两个月的免费福利,快乐加倍嗷. 福利详情: 1.分享这篇文章(不要设置分组可见). 2.发送您的 Splasht ...

  8. java学习之旅(day.03)

    整数拓展: 进制 二进制:以0b开头 十进制:我们生活中的正常数 int i=10 八进制:以0开头 int i=010 十六进制:以0x开头 0~9 A~F int i=0x10 浮点数拓展: fl ...

  9. Kafka架构以及一键化部署

    什么是Kafka? Apache Kafka是一个开放源代码的分布式事件流平台,成千上万的公司使用它来实现高性能数据管道,流分析,数据集成和关键任务等相关的应用程序. Kafka的应用场景 构造实时流 ...

  10. centos7下xfs文件系统的备份和恢复:完全备份,增量备份,差异备份

    目录 一.关于xfs文件系统 二.xfsdump的备份级别和注意事项 三.完全备份整个目录/分区,然后恢复数据 四.完全备份分区中某个目录,然后恢复某个文件/文件夹 五.增量备份 一.关于xfs文件系 ...