老去的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 程序有几年了,但是很多基本东西还是经常遗忘模糊,在此笔记白纸黑字记录,下次记忆模糊的时候温故知新.网上一搜索一大把,但是多是一大堆各种日志搅来 ...
随机推荐
- PHP开发调试环境配置
——基于wamp和Eclipse for PHP Developers 引言 为了搭建PHP开发调试环境,我曾经在网上查阅了无数的资料,但没有一种真正能够行的通的.因为PHP开发环境需要很多种软件相互 ...
- web前端开发常用工具
http://www.gbin1.com/technology/javautilities/20120806-resource-for-front-end-developer/ 冒泡样式 http:/ ...
- 上传python包到PyPI
一.前言 由于项目需要将API响应的XML内容解析成python对象,写了一个简单的xml转python的库,因为功能简单,细节处理也不好,文档也没有,没想也不好意思上传到pypi. 后来由于多个不同 ...
- 非GUI-Qt程序运行后显示Console(简单好用)
----我的生活,我的点点滴滴!! 有很多时候,我们在程序中添加了好Debug信息,方便程序在运行期间打印出一些我们需要的信息或者,想用他来显示一些必要信息时, 那么console就太重要了,曾几何时 ...
- Delphi RichEdit的内容保存为图片
uses RichEdit; {将RichEdit1的内容保存为图片,此函数也适合于RxRichEdit,即RichEdit: TRxRichEdit}procedure RichEditToCanv ...
- Day1_算法分析方法
课堂笔记: 程序执行效率影响因子: 输入:评估时使用最坏情况输入 输入大小:考虑n渐进∞ 机器执行效率: 忽略 两种排序算法比较 插入排序n2 归并排序nlgn 递归 技能1:评估多项式的时间级数θ ...
- I NEED A OFFER!
I NEED A OFFER! Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Tot ...
- hdu 1011 Starship Troopers (树形背包dp)
本文出自 http://blog.csdn.net/shuangde800 题目链接 : hdu-1011 题意 有n个洞穴编号为1-n,洞穴间有通道,形成了一个n-1条边的树, 洞穴的入口即 ...
- OCP prepare 20140701
1. rman的完全备份,和不完全备份 Oracle 数据库可以实现数据库不完全恢复与完全恢复.完全恢复是将数据库恢复到最新时刻,也就是无损恢复,保证数据库无丢失的恢复.而不完全恢复则是根据需要特意将 ...
- Eclipse配置Hadoop开发环境
Step 1:选择Hadoop版本对应的Eclipse插件jar包(可自行编译),我的Hadoop版本是hadoop-0.20.2,对应的插件应该是:hadoop-0.20.2-eclipse-plu ...