阅读更多

2顶
1踩

编程语言

原创新闻 MF高度评价DHH和RMH宣称J2EE将死

2006-07-12 12:08 by 见习编辑 robbin 评论(0) 有13907人浏览
infoq今天有两个颇为引人注目的新闻:

一条是Martin Folwer对rails enterprise的评价,其中MF高度评价了DHH,甚至在某些方面抬到了和Kent Beck的高度;
http://www.infoq.com/news/Martin-Fowler-Enterprise-Rails
Martin Folwer原文:
http://martinfowler.com/bliki/EnterpriseRails.html

另一条是著名的畅销书《Enterprise JavaBean》作者,兼EJB3,Java EE JCP委员Richard Monson-Haefel最近的调查报告,宣称Java EE 5的发布也成为了Java EE走向衰亡的起点。
http://www.infoq.com/news/Java-EE-Demise-Report

这两篇文章都很有意思,值得一看,而且有很多值得启示的地方:

MF赞赏DHH对于rails偏执的简单性理念,拒绝复杂性。认为rails坚持做好自己单一领域的事情的理念是对的,每个简单的工具去解决自己单一的问题,而不是用一个超级复杂的工具企图解决所有的问题。

RMH批评JavaEE 5对简化编程做的还不够,改进太小,时间拖的太晚,并且企图用超级复杂的单一方案去解决所有的问题,并且预言更多的开发人员会转向其他解决方案。

我个人的看法:

似乎业界已经逐渐开始形成公认:rails即使在企业开发领域也开始得到越来越多的承认;Java亟待解决的问题就是太复杂,企图解决所有的问题导致它越来越复杂,而且改进的步伐太缓慢。

不过目前而且相当长一段时间内,Java仍然是企业解决方案的不二首选。不过可以尝试使用rails作为web应用层开发技术,一些比较复杂的后台技术,例如消息系统,搜索引擎,工作流等等使用Java,各取所长。
2
1
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • history对象中replaceState详解

    忙呀忙

  • vue-router 路由超详细教程

    路由(英文: router)就是对应关系Hash 地址与组件之间的对应关系。vue-router是 vue.js 官方给出的路由解决方案。它只能结合 vue 项目进行使用,能够轻松的管理 SPA 项目中组件的切换。vue-router 的官方文档地址:https://router.vuejs.org/zh/2. vue-router 安装和配置的步骤① 安装 vue-router 包② 创建路由模块③ 导入并挂载路由模块④ 声明路由链接和占位符2.1在项目中安装 vue-router。

  • javascript学习——History 对象详解

    属性指向 History 对象,它表示当前窗口的浏览历史。History 对象保存了当前窗口访问过的所有页面网址。下面代码表示当前窗口一共访问过3个网址。由于安全原因,浏览器不允许脚本读取这些地址,但是允许在地址之间导航。浏览器工具栏的“前进”和“后退”按钮,其实就是对 History 对象进行操作。

  • 再详解history.pushState和history.replaceState以及page ajax的实现

    在之前的文章《ajax无刷新加载页面,结合history.state修改url》中,我详细解释了history.pushState、history.replaceState、history.state以及window.popstate这四个关键元素,并试图建立一个合理的ajax无刷新更换URL的页面加载方式。但那之后,我遇到一个比较复杂的问题,集中在state的内容上,本文则来详解state这个要...

  • PM2入门及其常用命令

    进程管理主要是指创建,终止和监控进程。进程管理器主要是用来确保你的应用在启动后能够保持在线pm2 是 nodejs 的进程管理器,默认支持负载均衡,能够守护进程。还支持查看应用运行时的性能,资源占用情况等当我们需要管理多个应用,或者应用有多个运行环境时,使用pm2 start来启动应用+配置参数是很不方便的。所以,pm2 支持使用配置文件来启动和管理应用。

  • Object

    Object.is() ES5 比较两个值是否相等,只有两个运算符:相等运算符(==)和严格相等运算符(===)。它们都有缺点,前者会自动转换数据类型,后者的NaN不等于自身,以及+0等于-0。JavaScript 缺乏一种运算,在所有环境中,只要两个值是一样的,它们就应该相等。 ES6 提出“Same-value equality”(同值相等)算法,用来解决这个问题。Object.is就是部...

  • history.pushState()

    history.pushState()解释向浏览器历史添加了增加一个记录。 history.pushState(stateObject, title, url); stateObject:状态 title:标题(--几乎没有浏览器支持该参数,但是传一个空字符串会比较安全。) url:要插入的url 不写的话默认为当前的url 举例: var url = location.href; ...

  • Object.is()方法

    Object.is()方法 +0==-0;/true +0===-0;//true Object.is(+0,-0);//false Object.is(NaN,NaN);//true 对于Object.is来说,其运行结果在大部分情况中与===运算符相同,唯一的区别在于+0和-0被识别为不相等并且NaN与NaN等价。 转载于:https://www.cnblogs.c...

  • 【js/css】pushState和popState简明教程

    pushState和replaceState h5中提供了只修改地址栏、不修改页面内容的api: pushState(添加浏览历史), replaceState(修改当前浏览历史), popState事件在用户返回或前进进会被出发触发 history.pushState方法接受三个参数,依次为: state:一个与指定网址相关的状态对象,popstate事件触发时,该对象会传入回调函数。如果不需要这个对象,此处可以填null。可用它来传一些数据 title:新页面的标题,但是所有浏览器目前都忽略这个值,

  • 【Vue】vuex冷门实例方法--replaceState

    vuex冷门实例方法–replaceState 状态合并 看这段代码: if (sessionStorage.getItem("store")) { this.$store.replaceState(Object.assign({}, this.$store.state, JSON.parse(sessionStorage.getItem("store")))) console.log('正在从sessionStorage恢复store') console.log(this.$store.st

  • javascript history对象详解

    前面的话history对象保存着用户上网的历史记录,从窗口被打开的那一刻算起。由于安全方面的考虑,开发人员无法得到用户浏览器的URL,但借由用户访问过的页面列表,可以在不知道实际URL的情况下实现后退和前进。本文将详细介绍BOM中的history对象lengthhistory.length属性保存着历史记录的URL数量。初始时,该值为1。如果当前窗口先后访问了三个网址,history.length...

  • react中setState和replaceState的区别?

    setState:更新状态replaceState:替换状态。

  • 浏览器中的JavaScript核心BOM(浏览器对象模型)重点掌握对象之History对象的属性与方法

    浏览器中内置对象History属性与方法详解引言正文一、History对象 引言 在学过JavaScript之后,我们都知道对象分为内置对象 、宿主对象 、自定义对象,我们经常用到的浏览器中的内置对象就是宿主对象的一种,浏览器的内置对象有很多,本文就来详细讲解一下History对象的属性与方法吧。 正文 因为把浏览器的所有内置对象逐个详细讲解,文章篇幅会很长,所以我把每个对象的讲解都放在不同的文章中,大家如果还想了解其他的浏览器内置对象,可以划到文章最后一部分,那里有跳转链接。 一、History对象 Hi

  • js中history对象

    在上面的代码中,调用pushState方法设置了一个状态对象,其中包含了一个名为page的属性,值为"index",将URL地址改变为/index.html。随后监听了popstate事件,当调用back方法回到上一个历史记录时,popstate事件会被触发,可以在事件处理函数中获取到当前历史记录的状态对象,通过JSON.stringify方法将其序列化为字符串输出到控制台中。在上面的示例中,当用户在浏览器中点击后退按钮时,popstate事件将被触发,并且状态对象将被输出到控制台。

  • window history pushState replaceState 跳转原理

    一、pushState 比如,当前打开的界面是:https://developer.mozilla.org/en-US/docs/Web/API/History,如下图所示: 在chrome的console下,执行代码: history.pushState({},'','https://developer.mozilla.org/en-US/docs/Web/API/History_API') 则浏览器中会看到以下三种变化: 1、当前地址栏的url会变成:https://developer.

  • vue-router的使用及实现原理

    前端路由是直接找到与地址匹配的一个组件或对象并将其渲染出来。改变浏览器地址而不向服务器发出请求有两种方式: 1. 在地址中加入#以欺骗浏览器,地址的改变是由于正在进行页内导航 2. 使用H5的window.history功能,使用URL的Hash来模拟一个完整的URL。当打包构建应用时,Javascript 包会变得非常大,影响页面加载。如果我们能把不同路由对应的组件分割成不同的代码块,然后当路

  • vue-router原理详解

    带你轻松掌握前端路由原理,深入了解hash模式和history模式的原理。

  • HTML5 History API 项目推荐

    HTML5 History API 项目推荐 HTML5-History-API HTML5 History API expansion for browsers not supporting pushState, replaceState ...

  • vue路由模式及 history 模式下服务端配置

    前言 vue 项目中,我们比较常用的模式为 hash 和 history 模式 默认情况下,vue 项目采用的就是 hash 模式 有些人对 history 模式下,为什么需要服务器做相应配置,以及如何配置不甚理解,所以这篇文章就对此做出分析,重点是让大家理解,为什么 history 模式下需要服务器做配置 这里会对 hash 模式和 history 模式都做出说明,通过对比,才能更好的理解我们的行为 1. hash 模式 1.1 什么是 hash 模式 先从一个熟悉的锚标记案例开始,帮助大家理解 hash

  • [苹果开发者账号]02 申请苹果开发者账号 快速申请邓白氏编码DUNS(提示:抱歉,您暂时不能注册)

    目录一、申请苹果APPID二、开双重认证三、申请邓白氏编码 一、申请苹果APPID 创建您的 Apple ID: https://appleid.apple.com/account#!&page=create 登录苹果开发者中心: https://developer.apple.com/account/ 点击:Join the Apple Developer Program https://developer.apple.com/programs/ 点击Enroll 申请公司的开发者账号,最

Global site tag (gtag.js) - Google Analytics