Java 领域从传统行业向互联网转型你必须知道的事儿

文章正文

我为什么要写这篇文章

武林中,"天下武功出少林"指各门各派的武功都与少林武学有一定的渊源,技术也是相同的道理,对于Java领域的应用而言,传统行业与互联网行业的技术都来自J2SE和J2EE的生态圈,但是两个行业的侧重点不同,传统行业侧重于严格的规范、复杂的流程、丰富的功能,因此或多或少的都会使用J2EE规范定义的技术,Appserver是J2EE规范的完全实现,因此,传统行业的企业级软件开发基本都是部署在Appserver上的,这样可以重复利用Appserver提供的通用功能而节省开发和实现的工作量,而后者更注重互联网产品的非功能质量需求,通常包括:高可用、高性能、安全性、可伸缩、可扩展等,互联中最流行的一句话是:天线武功唯"快"而不破,充分看出互联网企业里程序性能的重要性,为了达到较好的性能,高度抽象的J2EE技术已经没法满足需求,因此互联网技术更倾向于在简单的J2SE上发展具有互联网特色的技术栈,重新定义互联网级的开发工具、平台和技术栈。

由于笔者从传统的外企转型到互联网已经有3个年头,近两年来面试了很多来自传统行业的同行们,笔者发现这些同行们都有意向走进处于风口的互联网,但是由于传统行业使用的技术栈与互联网有所不同,不知从哪里开始入手准备和提高,尽管他们有强烈的学习和提高的愿望,本文就是给这些想从传统行业跨入互联网的小伙伴们准备的一篇导向性文章,帮助读者了解互联网的技术栈、了解互联网的侧重点、了解互联网的核心技术,并给出如何以传统行业的技术栈为基础快速掌握互联网的核心技术,其实,那只有一墙之隔,捅破那张窗户纸儿,一切都豁然开朗。

这里需要再次澄清,我并不认为互联网行业的技术要比传统技术深奥多少,这些技术跑不出J2SE和J2EE的生态圈,只不过高度抽象的J2EE技术由于性能上的局限性而被互联网撇弃而已,但是不得不承认的是两个行业的侧重点不同,传统行业侧重于规范,流程,功能的复杂性以及正确性,而互联网更侧重于“快”,这里的“快”有两方面的意思,一个是产品运行效率要高,响应速度要快,另外一个是开发效率要快,响应市场需求要快。从另外一个侧面说,传统行业一般关注一个复杂系统的功能完善和丰富,而互联网企业更关注一个简单的垂直业务的非功能质量,例如:高性能,可用性,高并发,可扩展,可伸缩,安全性等,那么,一个从业人员从传统行业到互联网行业,你到底还有多少距离?

小伙伴们从哪里开始入手互联网

这两年来面试下来看到了一个普遍的现象,来自于传统行业的技术人员,他们大多数掌握的技能是SSH,稍微资深一点的工程师对J2EE规范有所了解,他们仍然在使用J2EE规范的EJB, JPA, JMS, JCA, JAAS等技术,数据库基本上使用Oracle,DB2,Sqlserver等等。传统行业的开发人员基本实施“模块包揽制”,这得益于J2EE规范的完整性,以及Appserver提供了基本所有架构需要的功能,开发人员只需要将各个业务模块填入J2EE和Appserver提供给你的框架即可,因此,一个传统的开发人员会包揽一个模块从前台到后台所有的工作,这包括:HTML, JS, CSS, EJB, JPA, SQL, PLSQL等等。这些技术是不是一无是处,当然不是,反而是非常有价值的,那有了这些技术,我们是否可以一步跨入互联网,也不是,还需要以这些技术为基础,进一步扩展技术视野,对欠缺的技术广度和深度进行不足。

下面就学习传统行业技术人员拥有哪些技术积累,下一步又如何补充自己的知识面,成为能

2017年6月22日,周四晚上8点30分,专注线上和线下支付平台的应用架构和技术架构的规划与落地,支付平台架构师李艳鹏带来了主题为《Java 领域从传统行业向互联网转型你必须知道的事儿》的交流。以下是主持人飘静整理的问答实录,记录了作者和读者问答的精彩时刻! * * * 内容提要: * 请问互联网行业的技术要比传统技术深奥多少? * 互联网的可伸缩性都变现在哪些方面? * 互联网项目以高性能著称,传说中“唯快而不破”,都怎么保证高性能? * 互联网招聘人都关注哪些主要的方面? * 平台从传统模式向互联网模式迁移,架构和体系重构有何高见? * 现在javascript火爆会不会对java造成冲击? * 在支付行业,微服务化有哪些问题? * 请问有哪些常用的方法来保证系统的高可用? * 如果考虑转向互联网行业,是建议直接从传统行业公司辞职选择加入互联网公司直接上阵还是先待在传统行业公司积累相关技术栈的技能?如果先积累,又由于当前公司没有实战的机会,怎么才能更好的去学习相关技术? * 现在做的系统中是否有devops 实践,如果有具体是怎么做的? * 项目到什么级别做微服务化比较合适?微服务会带来什么问题? * 没有具体互联网项目经验怎么办? * 互联网的ops和qa需要了解和学习具备哪些知识? * 这么多需要学习的内容,如何平衡广度和深度? * 支付行业的数据一致性实现手段有哪些?另外,高并发的写入时候是否有好的实践路线? * 传统的电商平台采用微服务框架怎么做?有什么好的建议? * 互联网现在很多项目都抄袭的,如何做到更吸引人,单单是用户体验吗?还是有其他的因素?怎么做到copy加改良等于自已的作品,后期如何运营? * * * **问:请问互联网行业的技术要比传统技术深奥多少?** **答:**我来到互联网已经有很多个年头了,我并不认为互联网行业的技术要比传统技术深奥多少,在Java领域这些技术跑不出J2SE和J2EE的生态圈,只不过高度抽象的J2EE技术由于性能上的局限性而被互联网撇弃而已,但是不得不承认的是两个行业的侧重点不同,传统行业侧重于规范,流程,功能的复杂性以及正确性,而互联网更侧重于“快”,这里的“快”有两方面的意思,一个是产品运行效率要高,响应速度要快,另外一个是开发效率要快,响应市场需求要快。 从另外一个侧面说,传统行业一般关注一个复杂系统的功能完善和丰富,而互联网企业更关注一个简单的垂直业务的非功能质量,例如:高性能,可用性,高并发,可扩展,可伸缩,安全性等。 从做事风格上传统行业与互联网有很大区别,传统行业着重开发产品的流程,一款产品开发通常经过调研、立项、需求分析、设计、开发、投入市场,而互联网企业的项目也包含这些阶段,但是显得更快,更敏捷,看准市场会快速实现,快速迭代,快速响应市场,因此做事的节奏远远快与传统行业。从业务特点上来分,传统行业的业务更丰富,流程更复杂,不太倾向于进行拆分,多使用模块化的方法来划分项目,最后由于没有隔离而导致项目会依赖和耦合,最终扩展和伸缩都比较难,而互联网行业多会把复杂的业务进行拆分,根据微服务的思想,拆分到职责单一,可以敏捷开发,敏捷上线,减少团队之间的沟通等。 互联网行业的技术人员更关注的是非功能质量,尤其是性能,大家可参考这篇博客进一步学习: [http://www.jianshu.com/p/fbf56ccb4ebe](http://www.jianshu.com/p/fbf56ccb4ebe)。 * * * **问:互联网的可伸缩性都变现在哪些方面?** **答:**有人叫可伸缩性,也有人叫水平扩展,指的是随着服务增加节点可以线性的增加处理能力,例如:对于一个服务,单节点TPS为1000/s,双节点要在2000/s左右,一般会小于2000。 可伸缩性在传统行业并不
隐藏内容 支付可见
内容互动
写评论
加载更多
评论文章
¥8 购买
× 订阅 Java 精选频道
¥ 元/月
订阅即可免费阅读所有精选内容