老去的JEE,焕发生命
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,焕发生命的更多相关文章
- unity3d游戏开发猜想——当程序猿老去
程序猿将代码注入生命去打造互联网的浪潮之巅.当有一天他们老了.会走向那里,会做些什么? 4.4.0" alt="" style="border:0px; ver ...
- 【老孟Flutter】Stateful 组件的生命周期
老孟导读:关于生命周期的文章共有2篇,第一篇是介绍 Flutter 中Stateful 组件的生命周期. 博客地址:http://laomengit.com/blog/20201227/Statefu ...
- 【老孟Flutter】Flutter 中与平台相关的生命周期
老孟导读:关于生命周期的文章共有2篇,一篇(此篇)是介绍 Flutter 中Stateful 组件的生命周期. 第二篇是 Flutter 中与平台相关的生命周期, 博客地址:http://laomen ...
- web页面的生命周期
1.先上几张原理图着重理解: 现在针对第四副图原理进行解析: 流程: 1.浏览器发送请求 2.服务器软件(IIS)接收,它最终的目的就是为了向客户输出它请求的动态页面生成的html代码. 3.服务器不 ...
- Android开发艺术1之Activity的生命周期
作为<Android开发艺术探索>这本书的第一篇博客,我就多说几句.本系列博客旨在对书中相关内容进行解读,简化,提供一个入门到提高的流程.不敢说书评,也不能说教程,只希望对有些人有帮助就好 ...
- java 多线程总结篇3之——生命周期和线程同步
一.生命周期 线程的生命周期全在一张图中,理解此图是基本: 线程状态图 一.新建和就绪状态 当程序使用new关键字创建了一个线程之后,该线程就处于新建状态,此时它和其他的Java对象一样,仅仅由Jav ...
- Spring Bean生命周期,好像人的一生。。
大家好,我是老三,上节我们手撸了一个简单的IOC容器五分钟,手撸一个Spring容器!,这节我们来看一看Spring中Bean的生命周期,我发现,和人的一生真的很像. 简单说说IoC和Bean IoC ...
- 实体生命周期【Entity Lifecycle】(EF基础系列10)
Before we work on CRUD operation (Create, Read, Update, Delete), it's important to understand the en ...
- Activityn 生命周期
前言 Activity 生命周期,虽然开发android 程序有几年了,但是很多基本东西还是经常遗忘模糊,在此笔记白纸黑字记录,下次记忆模糊的时候温故知新.网上一搜索一大把,但是多是一大堆各种日志搅来 ...
随机推荐
- java小型科学计算器
/** * 1.先转换为逆波兰顺序 * 数字直接存入list,符号压入栈中,但是如果栈底元素不大于该运算符的运算顺序,则将栈底pop,直到大于栈底运算符为止,再压入栈中, * 最后将运算符依次全部po ...
- C的陷阱和缺陷研读笔记02
宏: 宏不是函数 展开会产生庞大的表达式 #define MIN(A,B) ((A) <= (B) ? (A) : (B))MIN(*p++, b)会产生宏的副作用 剖析: 这个面试题主要考查面 ...
- iOS把一个简单的图形变成一个圆
push是定义的一个button push.layer.masksToBounds = YES; push.layer.cornerRadius = 100; push.layer.borderWid ...
- 目前常用AD/DA芯片简介
目前生产AD/DA的主要厂家有ADI.TI.BB.PHILIP.MOTOROLA等,武汉力源公司拥有多年从事电子产品的经验和雄厚的技术力量支持,已取得排名世界前列的模拟IC生产厂家ADI.TI公司代理 ...
- Spring 3.x企业实用开发实战(1)
有关Spring的介绍这里就不赘述了,主要是学习了陈雄华版的<Spring 3.x企业应用开发实战>并做了一点笔记,以助于后期的回顾和复习. 废话不多说,直接进入主题,以下所有代码基于&l ...
- docker数据管理2
3. 定义数据卷容器: 只是为了共享数据 docker run -itd -v /data/ --name centeos_testv centos bash /data/ 就是虚拟机内的目录,和宿主 ...
- Codeforces 306B
#include <cstdio> #include <algorithm> #include <cstring> #include <cstdlib> ...
- ubuntu texlive 中文的配置方法
\documentclass[12pt]{article} \usepackage{CJKutf8} \usepackage{indentfirst}%设置第一段缩进,英语中从第二段才有缩进 \use ...
- 转发:为什么Android使用弱加密算法?
Android 2.2.1默认使用的加密算法是AES 256-SHA1,但从2010年发布的Android 2.3开始,它默认使用的是一种更弱的加密算法 RC4-MD5. 当Android应用建立 ...
- struts2整合json要注意的问题
昨天struts2整合json,一直出错: There is no Action mapped for namespace / and action name ... HTTP Status 404 ...