这些年经历的技术变迁与沉浮

最近又从头到尾写了一个小 java web 应用,上一次完整的写 web 应用程序已是三年前了,

毕竟近年都专注在后端服务架构上,而较少有机会从前端到后端写一个完整的 web 程序。

而每次有这样的机会,我总会去跟进使用下最新的 web 技术来开发,毕竟三年前称手的技术工具如今看来已经老态龙钟,

回顾这些年的技术变迁与沉浮,不禁感慨。

C/S 的末路

在我进入程序员这个职业时,主流的企业应用开发还在 C/S 时代末期,而 B/S 架构方兴未艾。

主流的企业系统架构都是 C/S 的。如上图,数据库充当 Server 端,当年很多的业务逻辑也有在数据库中用存储过程实现的,

而客户端开发主流就是图中所示的三个工具 PB/VB/Delphi。

早期我用 PB 开发,后来转到了 Delphi,接触了 Object Pascal,第一次了解了面向对象语言与设计思想,对 Borland 这家公司也充满了敬慕。

再后来 B/S 架构逐渐兴起,一些项目客户要求采用 B/S 架构后,又不得不开始转型。

当时对于网页开发面临两个选择 ASP 和 JSP,虽然只有一个字母的差别,现在回头一想这个选择对后期的转型职业发展可谓影响巨大。

最后,我选择了 JSP,后续就走上了 java 程序员这条道路,但决策的依据仅仅是因为当时听说 java 的主流开发工具 JBuilder 也是 Borland 开发的。

JSP 开启的混乱之治

刚开始学 java 就进入写 JSP 的年代,基本是 java 的乱世时代。

JSP 里有业务逻辑的 java 代码,有操作数据库的 SQL 语句,还有页面展示的样式 CSS 和页面本身的 HTML,偶尔还零星散落几段 js 来控制弹窗什么的。

当我把一个 JSP 文件写到一万行代码时,自己终于受不了,然后大量看书、上网搜索到底怎样写 JSP 才是对的?

然后我知道了设计模式,不止是 GoF 那本书提到的 23 个模式。大模式有讲企业应用该如何架构的,小模式有讲针对某种功该如何写代码的。

最让人分裂的是当时 java 业内正在经历两个派别的大混战,每个派别都有各种不同模式的最佳实践书籍、文章去论证自己是最优选择。

最后搞的我都不知道该怎么写程序了,有人说:

对于初窥门径的程序员,设计模式带来的麻烦简直不逊于它所解决的问题。

是的,我当时应深有同感,本来原本写程序属于拿剑就刺,虽无章法还算迅捷,但学了一大堆招式后每次出剑都在考虑招式用对没,挥剑反倒滞涩不少。

EJB vs 轻量级 J2EE

那时 java 企业级应用开发的正统非 J2EE 莫属,而 J2EE 的核心则是 EJB,EJB 本质上是一种分布式对象技术,提倡对象级的组件复用。

EJB 也正是 java 标准委员会主推的技术,而草根出身的 Rod Johnson 则发起了一场技术思想上的革命,

在《J2EE Development without EJB》这本书的译者序里有句话:

任何一个从事 J2EE 应用开发的程序员或多或少都曾有过这样的感觉:这个世界充斥着形形色色的概念和 “大词”,

如同一个幽深广袤的魔法森林般令人晕头转向,不知道该追随这位导师还是该信奉那个门派。

这时,Rod Johnson 发出振聋发聩的一呼:尔等不必向泥胎偶像顶礼膜拜,圣灵正在尔等自身——这就是他在书中一直倡导的 “循证架构”。

选择一种架构和种技术的依据是什么?Rod Johnson 认为,应该是基于实践的证据、来自历史项目或亲自试验的经验,

而不是任何形式的偶像崇拜或者门户之见。书中谈到了企业应用方方面面的问题和解决办法,而这些方案无一不是这种 “循证方法” 的产物。

除了把这些方案交给读者,Rod Johnson 通过这本书希望传达的、更为重要的信息正是 “循证” 的工作方式——那原本就应该是程序员的工作方式。

那年我刚进入一家规模还算大的公司,在一个项目的技术方案选型讨论会议上,就为到底用不用 EJB 争论个不休。

回过头来看,现在尘埃落定,轻量级 J2EE 胜出,Rod Johnson 创建的 Spring 开源框架取代了 EJB 的位置。

而 “循证架构” 的思想也深入人心,今天我们再讨论技术选型时早已放下主义,仅关注问题本身。

轻量级 J2EE 提倡通过分布应用本身来达到水平扩展的目的,可以换得更快、更简单的编程模型和更好的维护性。

Martin Fowler 甚至在他的书《企业应用架构模式》中开宗名义:

分布式对象设计第一定律:不要分布对象。

以此对 EJB 最终盖棺定论,埋入技术的黄土中,成为历史的尘埃,而以 Spring 为中心的 SSH 类框架应用模式开始纵横江湖。

如果说 EJB 后时代进入 java 领域的程序员缺失了什么,那么极可能是只知有剑(SSH),不知有谱(循证方法),用之而未思之,思而罔之。

SOA 与 微服务化

随着互联网发展,规模越来越大,应用也越来越复杂,即使使用轻量级 J2EE 技术虽然轻量,但业务也变的很重量。

单一应用承载的业务越来越多,越来越复杂,而且单一应用对于大型开发团队的并行协作带来了巨大挑战。

大型互联网公司基于 SOA 的思想摸索了一条新的架构技术道路,以国外 Amazon 和 Netflix 为代表,

提出了一套新的应用架构方式,也即是 SOA 的一种实现:微服务化。

微服务强调服务的单一职责原则,和面向对象设计中强调的对象设计原则一致,

这样有点讽刺的是如今的分布式服务与 EJB 提倡的分布式对象倒是有点异曲同工了,只是微服务还是稍微比对象的粒度稍稍大一些。

而且从上面的图中可以看出,现在的分布式服务架构,将专业化分工推向更细的粒度。

早年基本要从页面开发到数据库,都是全栈工程师,如今光是页面就有页面构建和 js 开发的区分,

而后端服务的技术栈则更加多样化,技术不停变迁,你我还将在其中沉浮。



新开了个微信公众号,在 CSDN 主要发一些技术相关的原创文章,公众号上会有更多其他方面文章,感兴趣可扫码订阅。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-08 21:53:30

这些年经历的技术变迁与沉浮的相关文章

中国大数据六大技术变迁记(CSDN)

大会召开前期,特别梳理了历届大会亮点以记录中国大数据技术领域发展历程,并立足当下生态圈现状对即将召开的BDTC 2014进行展望: 追本溯源,悉大数据六大技术变迁 伴随着大数据技术大会的发展,我们亲历了中国大数据技术与应用时代的到来,也见证了整个大数据生态圈技术的发展与衍变: 1. 计算资源的分布化——从网格计算到云计算. 回顾历届BDTC大会,我们不难发现,自2009年,资源的组织和调度方式已逐渐从跨域分布的网格计算向本地分布的云计算转变.而时至今日,云计算已成为大数据资源保障的不二平台. 2

从大数据技术变迁猜一猜AI人工智能的发展

目前大数据已经成为了各家互联网公司的核心资产和竞争力了,其实不仅是互联网公司,包括传统企业也拥有大量的数据,也想把这些数据发挥出作用.在这种环境下,大数据技术的重要性和火爆程度相信没有人去怀疑. 而AI人工智能又是基于大数据技术基础上发展起来的,大数据技术已经很清晰了,但是AI目前还未成熟啊,所以本文就天马行空一下,从大数据的技术变迁历史中来找出一些端倪,猜一猜AI人工智能未来的发展. 最近断断续续的在看<极客时间>中「 从0开始学大数据 」专栏的文章,受益匪浅,学到了很多.尤其是非常喜欢作者

谷歌 Web 开发技术变迁史与踩坑史

文章的作者 CJ 是 Google 八年的资深工程师,现回国创办了在线协作文档「一起写」,这篇文章也是他与 geek 范的同事们在「一起写」协作完成的.点击 NEXT 产品集「Google 开源项目」,完整查看文中提到的技术与开源项目. 过去十几年来, Web 开发技术从最初的纯 HTML 到 CGI.PHP / JSP / ASP.Ajax.Rails.Node.js,已经发展到了一个非常成熟的阶段.去年的 Google I/O,谷歌开发者中心推出了关于 Web 开发的最佳实践手册:而今年的

从Visual Studio看微软20年技术变迁

前言 这个世界从来都不缺变革,从工业革命到晶体管和集成电路,从生活电器到物联网,从简陋人机到精致体验,我们在享受技术带来的便捷的同时,也在为复杂设计而带来的挑战和生产力下降而痛并快乐着.而迫切期盼的,就是趁手的工具.曾几何时,Visual Studio 一直就是软件开发的高效的标杆,从VB的简洁语法和简单的拖拽开始,Visual Studio 不断的完善,不断的适应快速变化的,加上成熟的生态,让微软世界里的各个伙伴们活的有滋有味. 近年来,微软开始了拥抱开源,投资云技术,在开发工具领域有明显的减

技术的变迁如同水火般无情

今天在C6上看到一则笑话,大意是入行做Java的,月均2K算不错的了. 2000年左右高大上的Java,越来越江河日下,终于到了今天这步田地. 回顾历史,VC6,VB,Dephi等,莫不如是. 不排除有部分高薪职位,但这些许位置从来不会是主流. 云计算,大数据,NOSQL,微信平台等新技术不断出现,Java已经逐步退出舞台. 有点年纪的Java程序员能感觉到,从主角逐渐变成观众的过程.再接下去... 消失! 这不是危言耸听,一位曾经是为程控电话编码的80年代程序员,在某论坛坦言自己是中国最早被淘

十年京东,十年技术发展—畅读《京东技术解密》

<京东技术解密>试读章节共71页,我花了两天时间仔细读完,读了过后感到意犹未尽,非常想一口气把整本读完,然而只能将试读章节反复读了好几遍,收获颇多,遂有此文,借此总结京东十年来的技术变迁和迅速发展. 之所以对这本书感兴趣基于两个原因:一是自己最近刚好在读一本书<不战斗不成功:刘强东和京东商城的"野蛮"奋斗史>,见识到了刘强东本人丰富的创业经历,与当当网拼图书.与淘宝网拼百货.与苏宁易购拼家电,京东真是什么都卖,这份处处竞争的心也值得佩服.二是自己一直对京东印象不

《淘宝技术这十年》读书笔记 (三). 创造技术TFS和Tair

前面两篇文章介绍了淘宝的发展历程和Java时代的变迁: <淘宝技术这十年>读书笔记 (一).淘宝网技术简介及来源 <淘宝技术这十年>读书笔记 (二).Java时代的脱胎换骨和坚若磐石 马云说过"创新不是为了与对手竞争,而是跟明天竞争",所以这篇文章讲述淘宝的创新技术TFS和Tair及创新的产品. 该篇文章不仅仅对在读大学生非常有所帮助,因为你能从文章中看到很多你需要学习的知识,不仅仅包括数据库.计算机网络.操作系统.数据结构等基础课程:还根据时代的技术变迁讲述了

探索对象池技术

对象池技术是一种常见的对象缓存手段.’对象’意味着池中的内容是一种结构化实体,这也就是一般意义上面向对象中的对象模型:’池’(或动词池化)意味着将有生命周期的对象缓存到’池子’中进行管理,即用即取.缓存的目的大多是为了提升性能,对象池技术的目的也即如此.所以,对象池技术的本质简单来说就是:将具有生命周期的结构化对象缓存到带有一定管理功能的容器中,以提高对象的访问性能. 处理网络连接是对象池使用最多的场景.比如一些RPC框架的NettyChannel缓存(如motan),以及数据库连接池的Conn

"元"知识与"新"技术

?新的编程语言.新的开发框架层出不穷,让开发人员疲于跟随.以有涯之人生,去追随无涯的技术变迁,实在是一件很痛苦的事情.---DDD quikly 所谓的新技术,都是新瓶装旧酒而已,你不学习,就永远被牵着鼻子走.如果你善于学习,最终的主动权在你在这里,你会发现其实技术没有什么变化,原来旧技术要做的3件事,采用新技术也还是3件事,只不过锤子感觉顺手一点而已?