老去的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 pdo mysql数据库操作类
<?php namespace iphp\core; use iphp\App; /** * 数据库操作基类 基于pdo * @author xuen * 支持链式操作,支持参数绑定 * 说明1 ...
- [转]C 语言指针的使用
第一章 指针的概念 指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址. 要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的 类型,指针的值或者叫指针所指向的内存区,还有 ...
- shell基础——变量定义
快速参考: 变量定义格式: 变量名=值 str1="hello world" # define a string var str2=hello # define a string ...
- 论山寨手机与Android 【11】移动网络规范的合纵连横
上一章我们讨论了SmartPhone BP部分的硬件系统,接下去我们将讨论SmartPhone BP部分的软件系统.所谓BP,指的是基带处理器(Baseband Processor),又称为通讯处理器 ...
- 给ecshop后台增加管理功能页面
给ecshop后台增加管理功能页面 比如我们增加一个统计报表叫做 物流费用统计报表 放在后台“报表统计”栏目中 具体操作步骤: 第一步,我们要添加一个菜单到后台,然后设置语言项,最后设置权限,这样,后 ...
- CSS实现页面背景自动切换功能
From here:http://xiaomiya.iteye.com/blog/2047728 请看效果图: 完整代码如下: <!DOCTYPE HTML> <html> & ...
- Java类和对象初始化
类的生命周期: Java类的初始化: 本阶段负责为类变量赋正确的初始值.(类变量即静态变量) Java编译器把所有的类变量初始化语句和静态初始化器通通收集到<clinit>方法中,该方法只 ...
- aix Mysql-Rpm puppet puppetAgent
http://www.bullfreeware.com/toolbox.php (Large Open Source Software Archieve for AIX 提供MySQL5.1 fo ...
- 把给定的字符串解析为Date对象
把给定的字符串解析为Date对象: /** * <pre> * 把给定的字符串解析为Date对象 * </pre> * * @param str 要进行解析的字符串 * @pa ...
- Apache HTTP Server
下载 http://rj.baidu.com/soft/detail/14824.html?ald 安装完成后,打开浏览器,输入http://localhost/ 如果显示: It works! 则代 ...