JEE的社区

JEE从出生到现在,十多年了。在软件领域,好听的说法,基本上就是Legacy系统了,不好听,那就是恐龙。曾经疯魔万千开发者的Springframework, Jboss 社区, Apache 的JEE社区,全都跑去了Node.js, Scala,JQuery,Hadoop, Spark。

一个大家纷纷转向云平台和大规模数据处理的年代,更轻便更灵活的Web框架层出不穷的年代,JEE看起来老态龙钟,那些编程模型和容器,看起来已经是昨日黄花。再也没有人愿意只用别人制定的的模型,在这个git hub和 node.js 的时代。老式的编程模型代表着一种专制和居高临下的态度,只有遵守那些不容违反的规则,并在指定的活动范围之中,才能得到系统的承认。

Spring framework第一个挑战这个哲学,然后迎来了Spring社区的兴盛,没人再关心JEE系统,JEE模型从此变成了基础设施。不过在挑战这个哲学上面,赢得开发者的欢心之后,Spring却也没有走的更远,到最后其实也只是稍稍灵活一些的JEE而已。

真正的Internet时代

Node.js的出现具有非常重大的意义,可能很多人并没有意识到这一点。你可以在任意的抽象层面工作,你可以定义自己的抽象级别,任何层级都是开放的。我们可以看到很多类JEE的框架,但却没有任何编程模型的限制,开发人员可以在任何他愿意的层级上去工作。从前需要大公司指定标准和规范的年代已经一去不回了。

从Google的论文公开的那一天起,MapReduce就代表了这个时代处理数据的方向,各种类-MapReduce一直在涌现。从前的关系型数据库,也失去了光环。

这些技术,极大地压缩了JEE的生存空间。Web方面,JEE得以兴盛的原因,和今天流行的种种框架和技术相比,从前的亮点今天黯淡无光。唯一剩下的,只有分布式事务的处理器和可靠消息的传输机制,仍然有意义。Webservice上面,更不用说远远不如各种轻便的方案。

抽象

但JEE就是消失中的恐龙吗?难道它所代表的技术从此就毫无意义?只能说JEE在Oracle手中,已经丧失了自我更新的能力。

如果我们仅仅从计算上考虑,MapReduce代表的批处理,如果用JEE的模型来实现,远远比从头做起要轻松很多。每个MapReduce的计算,如果用JEE的模型看来,也不过是一堆相互进行分布式调用的对象,而JEE的远程部署,消息机制,难道就不能分发MapReduce Task吗?分布式的文件系统,那就更加简单了,多个分布式的对象的协作就能完成这件事。

需要做的,只不过是把那些繁杂的内容变成简单的接口而已。

而Web这一面,实在看不出从前的模式在今天还有多大的意义。除了能够为Java对象提供面向Http的包装之外,但这并不是不可或缺的。

其实,只要在更高的抽象层面去思考。我们就会发现,JEE不失为好的方案,虽然要扔掉很多东西,但终归他可以在一个更宽广的概念内重生。

【我是标题党,YEAH】【仅仅是个思路而已,如何做,做什么,这就不是一个“扯淡”所能包含的了】【有时间再想想】

老去的JEE,焕发生命的更多相关文章

  1. unity3d游戏开发猜想——当程序猿老去

    程序猿将代码注入生命去打造互联网的浪潮之巅.当有一天他们老了.会走向那里,会做些什么? 4.4.0" alt="" style="border:0px; ver ...

  2. 【老孟Flutter】Stateful 组件的生命周期​

    老孟导读:关于生命周期的文章共有2篇,第一篇是介绍 Flutter 中Stateful 组件的生命周期. 博客地址:http://laomengit.com/blog/20201227/Statefu ...

  3. 【老孟Flutter】Flutter 中与平台相关的生命周期

    老孟导读:关于生命周期的文章共有2篇,一篇(此篇)是介绍 Flutter 中Stateful 组件的生命周期. 第二篇是 Flutter 中与平台相关的生命周期, 博客地址:http://laomen ...

  4. web页面的生命周期

    1.先上几张原理图着重理解: 现在针对第四副图原理进行解析: 流程: 1.浏览器发送请求 2.服务器软件(IIS)接收,它最终的目的就是为了向客户输出它请求的动态页面生成的html代码. 3.服务器不 ...

  5. Android开发艺术1之Activity的生命周期

    作为<Android开发艺术探索>这本书的第一篇博客,我就多说几句.本系列博客旨在对书中相关内容进行解读,简化,提供一个入门到提高的流程.不敢说书评,也不能说教程,只希望对有些人有帮助就好 ...

  6. java 多线程总结篇3之——生命周期和线程同步

    一.生命周期 线程的生命周期全在一张图中,理解此图是基本: 线程状态图 一.新建和就绪状态 当程序使用new关键字创建了一个线程之后,该线程就处于新建状态,此时它和其他的Java对象一样,仅仅由Jav ...

  7. Spring Bean生命周期,好像人的一生。。

    大家好,我是老三,上节我们手撸了一个简单的IOC容器五分钟,手撸一个Spring容器!,这节我们来看一看Spring中Bean的生命周期,我发现,和人的一生真的很像. 简单说说IoC和Bean IoC ...

  8. 实体生命周期【Entity Lifecycle】(EF基础系列10)

    Before we work on CRUD operation (Create, Read, Update, Delete), it's important to understand the en ...

  9. Activityn 生命周期

    前言 Activity 生命周期,虽然开发android 程序有几年了,但是很多基本东西还是经常遗忘模糊,在此笔记白纸黑字记录,下次记忆模糊的时候温故知新.网上一搜索一大把,但是多是一大堆各种日志搅来 ...

随机推荐

  1. python--执行文件的绝对路径

    1.__file__属性对应文件名. 2.os.path.realpath(__file__)这样就可以得到文件的绝对路径.

  2. 不要在公共接口中传递STL容器

    最近的一个项目,是开发一个framework,提供给公司内部不同的产品线使用. 之间遇到的一个问题,就是STL容器的使用, 而结论是不要在公共接口中传递STL容器: 这里说的STL容器,但主要则是指容 ...

  3. aix 小机运维

    zzbank 一个月折腾总结小总结:#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++#+    Ruiy-ge;#+#+    Te ...

  4. Linux学习之六-Yum命令的使用

    详细介绍一下yum命令的用法.如果你是一个Linux的初学者,一定会被软件的安装所困扰过,尽管RPM包解决了一定层度的问题,但有些RPM的包的依赖关系让人很是头疼.而YUM.APT等一些RPM包的管理 ...

  5. 如何在TableView上添加悬浮按钮

    如果直接在TableVIewController上贴Button的话会导致这个会随之滚动,下面解决在TableView上实现位置固定悬浮按钮的两种方法: 1.在view上贴tableView,然后将悬 ...

  6. javascritp第十课:面向对象

    js中的函数就是对象,对象就是函数,当js中需要使用面向对象,使用js闭包模拟面向对象,当函数作为对象使用时,每个单词首字母都大写 var obj=new object();  //js中默认就是ob ...

  7. 使用after伪类清除浮动

    使用after伪类清除浮动 .department li:after{ content:"."; height:0; visibility:hidden; display:bloc ...

  8. 如何将你牛逼的iOS代码分享到CocoaPod(转)

    为了让读者一目了然,现在就从新建工程到最后提交podspec,简单粗暴的讲一通.Cocoapods不用解释太多,一句话...它是目前iOS开发中最广为使用的第三方库依赖管理工具. 下面开始讲创建pod ...

  9. css3教程:弹性盒模型

    Css3引入了新的盒模型——弹性盒模型,该模型决定一个盒子在其他盒子中的分布方式以及如何处理可用的空间.这与XUL(火狐使用的用户交互语言)相似,其它语言也使用相同的盒模型,如XAML .GladeX ...

  10. PHP自学4——通过mail函数将feedback界面用户填写表单信息发送至指定邮箱

    这一讲的内容依旧简单(谁叫PO主水平菜,依旧是个弱鸡ORZ),通过PHP的内置mail函数将一个反馈界面的信息发送到指定邮箱.在Windows平台不能直接需要使用该函数,需要下载一个sendmail并 ...