年近而立,Java何去何从?
摘要:各种新需求新应用层出不尽,各路新生代编程语言异军突起等等,Java未来会不会继续受欢迎?曾经备受关注的Java是否能紧跟时代步伐?新基建时代破茧重生引领云端未来潮流?
1995年第一个Java版本诞生到现在已经25年,它成功的建立了一个开放、成熟、稳定的开源生态。但现在也有各种争议,如版权限制,授权收费,社区投入减少,各种新需求新应用层出不尽,各路新生代编程语言异军突起等等,Java未来会不会继续受欢迎?曾经备受关注的Java是否能紧跟时代步伐?新基建时代破茧重生引领云端未来潮流?
日前华为云DevRun直播间特邀请华为莫斯科研究所系统编程实验室主任Yegor Bugayenko,开源中国创始人兼CTO&码云开发平台负责人红薯,禧天龙科技发展有限公司CTO郭曦三位嘉宾,并由华为云DevCloud首席技术布道师徐毅引导,嘉宾们围绕中俄社区现状和当前Java热点话题进行了讨论。
中俄Java社区知多少
通过红薯和 Yegor Bugayenko两位大咖的介绍,我们对中俄Java社区有了初步的了解。开源中国成立到现在已经有12年的发展历史,对开发者的数量有很大的关注,当前国内业界比较认可的一个数字中国开发者人群规模大约 1000 万,从正常一个公司的技术人员配比来看,直接参与编程的人员比例在 80%左右 。同时根据码云目前超过1000万的仓库推算,国内有大约 200 万的 Java 开发者。在俄罗斯其实从事编程工作的人员不是很多,根据Yegor Bugayenko的初步估计应该在10万左右,由于编程语言的多样性,使用Java的开发者数量不好评估,但也在大多数。
两国开发者都有“自嘲”文化,在中国就比较突出比如技术男,理工男,程序猿,攻城狮,搬砖,大牛等等,比较有争议性,但是随着互联网、高科技、新兴产业的发展,程序员也越来越受欢迎。俄罗斯很多程序员会认为自己是哲学家甚至艺术家,编程和代码帮助人们更深刻的理解这个世界的哲学,数学,宗教,艺术和文化,并以前所未有的效率将思想转化为生产力,随着科技发展,教育普及,现在编程工作越来越像一种普通的工作,但是可以肯定的是从事编程是一个很有“钱”途的工作。
从Java数次历史变更看影响
- 1991年,Sun公司的James Gosling等人开始开发名称为 Oak (橡树)的语言。希望用于控制嵌入在有线电视交换盒、PDA等的微处理器。
- 1994年,将Oak语言更名为Java
- 1998年,JDK1.2时,更名为Java 2 Platform,分为标准版J2SE,企业版J2EE,微型版J2ME,这是 Java 一个重大的版本,修复了早先的一些重要 Bug
- 2004年,J2SE 5.0 (1.5.0) Tiger老虎
- 2006年,J2SE 6.0 (1.6.0) Mustang野马
- 2009年,Oracle 74亿美元收购 Sun
- 2014年,Java 8 发布,Lambda 表达式支持,而且兼容老版本,堪称奇迹再以后 Java 调整版本发布策略
- 2018年, Oracle 发布Java 10 并决定每 6 个月发布一个新版本
- 2019 年1月, Oracle 宣布 Oracle JDK 不再提供免费支持,一些大互联网公司开始推出自己的 JDK,并宣布提供免费技术支持
红薯老师经历Java的多次变化并对其有亲身体会,他认为从整个变更过程看,Java 更多用来开发具体的应用,每次变更对国内影响有限,Java仍然是很受欢迎的语言。
未来Java会不会被取代?哪些语言最有可能取代Java
Java私有化之后, Oracle对社区投入的逐渐减少,出现版权问题、收费问题、企业对Java的依赖等一些问题,这引来了开源社区更多的担忧和猜忌,未来Java会不会被取代?哪些语言最有可能取代Java?
收费、版权等问题是未来各个技术发展必然面对的问题,比较具备争议性。
Java会不会被替代?其实并不是语言本身,而是Java搭建的生态系统,其中有各种各样的组件元素,如Java基础、WEB开发架构、负载均衡、分布式服务框架等,以及对应的应用虚拟机、安卓系统等等。
Java从诞生起就有无数的缺陷,但这些并没有阻止Java的成功。开放就是Java 成功的核心,拥有跨平台、面向对象、泛型编程的特性保证其可运行性、可扩展性和可连接性,并保障了其在Web开发、大数据开发、Android开发和各种后端服务开发等领域都有大量的应用,同时,Java凭借其稳定的性能和较强的扩展性得到了广泛的应用,并且互联网的行业备受认可,未来仍然存在很大的发展空间。
该次活动中我们对“未来最可能取代Java的语言”进行了一轮投票活动,根据参与者的反馈来看,大家认为最有可能取代Java语言的Top3分别是Python(34.99%),JavaScript(23.24%),Go(13.05%),其实每种语言都有自己擅长的领域和方向。
Python主要的领域是大数据和人工智能,在Web开发、大数据开发、人工智能开发、后端服务开发和嵌入式开发等应用比较广泛。主要是因为语言语法简单,调整方便,但是Python在运行性能上与Java还有一定的差距。
JavaScript主要是从事前端任务开发的场景,解决服务器端语言遗留的速度问题,但是随着Node.js的兴起给JavaScript从前端走向后端的机会,未来JavaScript会得到进一步的发展。
Go语言主打性能,特别是在当下的大数据环境下,对性能要求越来越高,Go语言应该能够发挥出更大作用。
企业基于Java开发商业软件有没有比较好的最佳业务实践或者方法
嘉宾郭曦分享了如下的一个真实案例。
最早的三层架构是没有集成层的,IBM/BEA/SAP甚至开源社区很多优秀的产品进入了继承领域,在这一层级以Java为主要开发语言开发的企业服务总线已经占据着企业继承市场90%以上的份额。
应用公有云微服务架构+SAP企业服务总线无缝整合面向互联网的SaaS/PaaS平台,比如多家国内知名电商,是通过公有云+私有云对接的形式,利用云端应用服务器构建自己面向互联网应用后台。通过云端代码托管和自动化构建设施建立自己的代码仓库和配合敏捷开发理论形成企业的应用开发体系,利用云端项目/任务管理软件进行任务分配/质量控制/成本预算核算,利用云端运维管理应用构建企业自己基于ITIL管理体系的运维框架。
最佳实践带来了不错的效果
- 标准研发流程和经验,研发数据集中存储,防止流失
- 配置管理改为Git,效率提升30%
- 减少构建依赖错误,构建效率提高70%
- 发布部署的出错率降低90%
未来变成语言会是百花齐放的方式往前发展。Java语言生态体系比较健全,开发者数量上占据优势,其自身开放、跨平台、面向对象、泛编程性等特性其他语言也很难取代,未来在其最擅长细分领域如:Web开发、移动互联网开发和大数据(云计算)开发等领域,未来还是会继续保持其优势。
Java 已经25年,历经磨难,却历久弥新,其构建的应用生态也越来越丰富,未来的发展应用会越来越多。文章仅介绍了大咖们在本场直播中的部分精彩观点,欲知详情,请至该活动的华为云社区页面及预告视频和直播回放。
请点击链接查看直播回放:https://bbs.huaweicloud.com/forum/thread-65920-1-1.htm
年近而立,Java何去何从?的更多相关文章
- 【限时免费】近1000G JAVA学习视频下载
2020的情人节是个极特殊的情人节,面对肆虐的疫情,我们无法出门,宅在家里,也无法阻止你作为一名优秀程序员的梦想. 或许没有鲜花.没有蛋糕…… 姜小白就为大家备好了一份大礼,将自己近几年整理收藏的全网 ...
- Java与.net的选择和比较
跨平台对开发商是一个巨大的诱惑.一次开发,多个平台使用,降低了迁移成本,有利.但Java的开发工具没有.net顺手,对编码人员的要求比.net要高. .net培训成本低,上手快.尤其如果开发人员以前都 ...
- Java GUI界面补充总结(不定期补充)
一.Java中如何设置各类组件透明 感谢原文:https://kslsi.iteye.com/blog/2096608 补充:Frame透明:AWTUtilities.setWindowOpacity ...
- 碎碎念,浅饮-------Day30
这不是关于技术的文章,它偏离了我原来的计划轨迹.但,我相信这将是远远超出了技术的意义使我无论什么价格值. 高考已经开始,不知道在这片宁静的夜空下有多少人已经美美的睡了,香甜憨然.又有多少人这睡着的眼角 ...
- ES进阶--02
第11节深度探秘搜索技术_案例实战基于dis_max实现best fields策略进行多字段搜索 课程大纲 1.为帖子数据增加content字段 POST /forum/article/_bulk{ ...
- Spark案例分析
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...
- 近5年133个Java面试问题列表
Java 面试随着时间的改变而改变.在过去的日子里,当你知道 String 和 StringBuilder 的区别就能让你直接进入第二轮面试,但是现在问题变得越来越高级,面试官问的问题也更深入. 在我 ...
- 近5年常考Java面试题及答案整理(三)
上一篇:近5年常考Java面试题及答案整理(二) 68.Java中如何实现序列化,有什么意义? 答:序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化.可以对流化后的对象进行读写 ...
- 近5年常考Java面试题及答案整理(二)
上一篇:近5年常考Java面试题及答案整理(一) 31.String s = new String("xyz");创建了几个字符串对象? 答:两个对象,一个是静态区的"x ...
随机推荐
- react实战 : react 与 svg
有一个需求是这样的. 一个组件里若干个区块.区块数量不定. 区块里面是一个波浪效果组件,而这个一般用 SVG 做. 所以就变成了在 react 中使用 SVG 的问题. 首先是波浪效果需要的样式. . ...
- spring boot 整合 ehcache
1. 该说的话 每个人都应当学会独立地去思考.去寻找答案,而不是一味地伸手向他人索取所谓的标准答案. 首先,别成为"拿来主义"者,其次远离"拿来主义"的人. 2 ...
- java8之Stream流处理
简介 Stream 流处理,首先要澄清的是 java8 中的 Stream 与 I/O 流 InputStream 和 OutputStream 是完全不同的概念. Stream 机制是针对集合迭代器 ...
- Java对象公约
灵魂static关键字 Java规定:方法只能由对象来调用. 换句话来说,在面向对象的思维下,方法与对象存在一种强耦合. static作用:即使没有初始化对象,也可以调用方法.(类比到属性上同样如此) ...
- 【NeurlPS2019】Positional Normalization 位置归一化
作者提出,当前的BatchNorm, GroupNorm, InstanceNorm在空间层面归一化信息,同时丢弃了统计值.作者认为这些统计信息中包含重要的信息,如果有效利用,可以提高GAN和分类网络 ...
- expect正则捕获返回结果
expect正则捕获返回结果 expect: expect -re "([0-9]*)([a-zA-Z]*)"send_user "num is $expect_out( ...
- react 阻止事件传递/冒泡
当我们设计界面时,在以下情况会需要阻止元素/组件内的事件阻断,不被上层触发: 弹出提示框,期望点击框外空白区域可以关闭弹框.点击框内不关闭弹框 组件设计时,期望点击全局/点击指定元素时,显示不一样的交 ...
- 17条嵌入式C语言编程小知识总结
流水线被指令填满时才能发挥最大效能,即每时钟周期完成一条指令的执行(仅指单周期指令). 如果程序发生跳转,流水线会被清空,这将需要几个时钟才能使流水线再次填满.因此,尽量少的使用跳转指令可以提高程序执 ...
- PHP quoted_printable_encode() 函数
定义和用法 quoted_printable_encode() 函数把 8 位字符串转换为 quoted-printable 字符串. 提示:经过 quoted-printable 编码后的数据与通过 ...
- 2020牛客暑假多校训练营 第二场 G Greater and Greater bitset
LINK:Greater and Greater 确实没能想到做法. 考虑利用bitset解决问题. 做法是:逐位判断每一位是否合法 第一位 就是 bitset上所有大于\(b_1\)的位置 置为1. ...