年近而立,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何去何从?相关推荐
- oracle与sun的java_甲骨文吞Sun Java何去何从?
[IT168 专稿]Oralce收购Sun后,Java前途未卜.悲伤的情绪弥漫在Java开发者社区,关于Java命运的种种猜测,让Java开发者不知所措.被Oracle收编麾下的Java未来会如何,是 ...
- 云时代,JAVA何去何从?
编者注:本期特邀阿里云JVM Runtime方向负责人梁希,来聊一聊<JAVA的云上转型 > . 内容提要: ✔Java应用在云上遭遇到哪些挑战? ✔ 企业如何选型生产环境使用的JDK? ...
- 甲骨文吞日,java何去何从
收购Sun后,Java前途未卜.悲伤的情绪弥漫在Java开发者社区,关于Java命运的种种猜测,让Java开发者不知所措.被Oracle收编麾下的Java未来会如何,是继续生存发展,还是从此销声匿迹? ...
- java培训分享:学习Java需要什么软件
在参加java培训过程中学习java技术,需要用到很多辅助工具,这些辅助工具是具有多功能性和实用性的,从代码构建到bug压缩.学习这些工具可以帮助您提高代码的质量,并成为一个更高效的Java开发人员. ...
- 学习Java需要用到什么软件?
学习Java技术,需要用到很多辅助工具,这些辅助工具是具有多功能性和实用性的,从代码构建到bug压缩.学习这些工具可以帮助您提高代码的质量,并成为一个更高效的Java开发人员.那么具体学习Java需要 ...
- Java 面试 80% 的人都会踩这些坑,你知道几种?
很多朋友经常在留言区,跟我吐槽 Java 面试时遇到的问题(我选了几个经典的问题): Java 技术能力自以为还不错,但是到了面试的时候就凉凉: 对面试官提出的问题感觉很懵,不知道面试官要问啥: 有的 ...
- install java 8_Install Java 8 on Ubuntu
I迹问.近前题图近前题图近前题图近前题图近n this article, we will learn how to install Java 8 on Ubuntu OS. We will insta ...
- java面试项目中遇到难题,大量教程
推荐学Java--初识数据库引言前面已经学习了四篇关于Java的内容,算是一个基本路线和重难点划分,接下来就进入真正的Java后端开发之旅了,一起go吧!Java反射java反射知识导图这块的内容不多 ...
- 面试java项目中解决了什么问题,附源代码
Java培训之后找工作,要准备哪些面试问题?这些问题可能包括:什么是Java?Java如何支持高性能?Java的关键特性是什么?局部变量是什么?什么是实例变量?如何在Java中反转字符串?如何找到两个 ...
最新文章
- 那位13岁就当上老板的开发者是如何炼成的?
- 《JAVA程序设计》第七周学习总结
- 困难样本挖掘(Online Hard Sample Mining)
- 最长公共子序列LCS[C++题解]
- Tensorlfow2.0 二分类和多分类focal loss实现和在文本分类任务效果评估
- React Native中常用ES6语法
- 随想录(在x86 linux上仿真多核cpu运行)
- 我对架构的理解-概念篇
- mysql start tran_mysql事务,START TRANSACTION, COMMIT和ROLLBACK,SET AUTOCOMMIT语法
- Arduino最简单的例程--使用面包板点灯
- 84行C++代码教你实现洛谷占卜功能
- VC ADO访问MySql数据库(MySql数据库初探二)
- 怎么抠图最简单?教你一行Python代码去除照片背景
- iOS开发者账号最新续费流程
- Golang的大端序和小端序
- linux系统怎么安装爱奇艺_pps网络电视linux版下载|
- 2022高净值人群价值观及生活方式研究报告
- android 分辨率6,「苹果新闻」iPhone 6的分辨率到底会是多少?
- 三人行discuz采集论坛发贴王破解版
- CCIR|一场认知智能技术支撑的信息检索学术革命
热门文章
- Bootstrap 文档类型
- Linux 编译pe,如何在PE中将PE(可移植可执行文件)格式转换为ELF
- mysql char(36)_MySQL中char(36)被认为是GUID导致的BUG及解决方案
- 微信公众号服务器推送307,关于公众号模板消息推送结果
- xcode 工程没有模拟器_Xcode只允许我运行iOS设备(没有模拟器)
- python线性输出_Python实现基本线性数据结构
- 子弹短信 android,子弹短信精简版
- vue 如何计算list的长度_航母的水线长度到底如何计算?
- Linux下ftp的安装配置
- HDU1542--Atlantis(扫描线)