热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

名师对Oracle放弃JavaEE的看法

近日网络上出现了一些关于Oracle将要放弃JavaEE的说法,在Java行业引起不小的关注,甚至有些人开始担心Java会不会就此消亡,但事实上这不过是杞人忧天,疯狂软件教学总监李
近日网络上出现了一些关于Oracle将要放弃Java EE的说法,在Java行业引起不小的关注,甚至有些人开始担心Java会不会就此消亡,但事实上这不过是杞人忧天,疯狂软件教学总监李刚根据多年来Java行业的从业经验,对此提出以下几点分析抛砖引玉,供广大Java从业者参考。

第一点:Oracle根本没有力量左右Java发展

自从Java发展壮大以来,无论是以前的Sun公司,还是后来Oracle公司,一直都无力左右Java的发展:实际上Java的规范制定,都需要通过JCP审核,一些新机制、新功能往往并不是Oracle想加就加的,Java是一个庞大的生态圈,由庞大的社区力量在推动Java的发展。

Java本身有太多的规范都是来自社区的。世界上大量开源组织和公司,为Java贡献了非常多的专利和代码,每次JavaOne大会都是全世界Java界的圣会,汇聚一堂讨论、决定Java的走向和发展。

Java世界,可以说正左右着全球的发展,全球所有顶级的、核心的项目,绝大部分都是基于Java做的,即使不是完全基于Java,也和Java有千丝万缕的关系。深入最深的是美国。美国军方绝大部分的控制系统、甚至航天控制系统,都是基于Java或者和Java相关的。

除此之外,包括世界上所有的银行、通讯、航空、电力、交通、公共安全等领域的核心系统,也都是基于Java的,如果完全放弃Java,等同于把世界上所有的这些应用系统全部要替换掉,哪个公司、哪个团体有这个能力?如果这些系统全部不能运行,人类社会等同于重回到传统时代!

如果放弃Java,你不能从银行取钱、不能在线买飞机票、火车票、不能在线购买商品、不能刷公交卡、不能打电话……甚至连你的身份证信息都不复存在!

有人说:Java不赚钱,因为Java规范是开放的,所以Oracle才想要放弃。但如果真的不赚钱,那么Oracle为何要和谷歌因为Java的专利而打官司呢?

第二点:即使Oracle放弃Java,其他的公司会乐意继续扛起Java的大旗

先说现在正在和Oracle打官司的谷歌,正是因为Java的各种专利纠纷,如果Oracle真的愿意放弃Java,那么谷歌将首先表示欢迎、并非常乐意继续领导Java的发展。

即使谷歌不想要Java,光是国内的那些巨头,个个都想要Java,以便对自己的产品进行更深度的定制,现在因为要定制自己的产品。此外,能肩负扛起Java大旗的风光,国内软件巨头都不差钱,他们绝对非常乐意去做这件事情。不过话说回来,美国政府应该不会允许Java主导权落入中国,所以这一点我们只能是空想。

第三点:Oracle可能放弃Java EE,但不会放弃Java

Java刚开始的时候,因为各种应用和生态不成熟,很多东西需要有人牵头制定强制规范引导Java的发展,于是Java EE曾经引领了企业级应用的开发。

但随着时代的进步,以及越来越多的公司和组织参与到Java世界,出现了各种各样的Java EE组件的代替者,比如Hibernate、Spring就是其中两个典型。相反,Java官方制定的各种Java EE规范反而不太受欢迎,他们制定了JSF规范,但实际企业开发喜欢用Struts 2、Spring MVC;他们制定了EJB规范,但实际企业开发往往还是喜欢用Spring;他们制定了JPA规范,但实际企业开发往往还是喜欢直接用Hibernate、MyBatis。

现代企业级应用常用的各种框架和工具,比如Struts 2、Spring、Hibernate、jBPM、Activiti、Lucene、Hadoop、Drools、CXF等这些大家耳熟能详的组件,全部都不是来自Oracle官方,但是却在企业应用中开发经常用到的。

现在企业里面,真正常用的Java EE规范有什么?Servlet、JSP、JMS、JNDI。这些技术都只是充当了一个程序的入口而已。

Oracle之所以可能考虑放弃Java EE,正体现了Oracle对丧失Java控制权的无奈。企业的本质是逐利,Oracle每年为制定Java EE规范投入不少人力、财力,但制定的规范最终并没有获得市场的青睐,所以Oracle可能放弃这种吃亏不讨好的事情。

但Java不同,2016年6月,Java在商业语言排行榜上的市场份额将近21%,庞大到恐怖的市场份额,背后隐藏着巨大各种专利使用费和盈利商机,任何一个理智的公司都不会放弃这个会下金蛋的母鸡。

第四点:从C的历史来看Java,Java绝不会过时

C语言是一个诞生于上个世纪70年代的编程语言,在AT&T的贝尔实验室里面,由一个想玩游戏的老伙伴整出来的。

后来随着社区力量的介入,C形成了国际标准,参与其中的厂商、开发者不计其数。贝尔实验室早已不复存在,连AT&T也早已解体,但C语言依然坚挺,偶尔还跑到Java的前面,排名第一!

C发展到现在,已经形成了整个软件、硬件产业上下级纽带,绝大部分硬件设备的固件、驱动程序都是C语言写的。我所知道的操作系统的内核,也都是基于C语言。如果换掉C语言,现在电脑会变成裸机,可能还不如一堆废铁。

Java现在的情形,和C非常相似:Java已经深入到世界的骨髓。正如前文指出的:从美国的航空航天、军方控制系统,到日常生活的银行、通讯、电力、交通、公共安全等领域的核心系统,绝大部分都是基于Java开发。正如世界无法淘汰C一样,世界也无法淘汰Java。

第五点:Java可能不是最好的语言,但Java是最成熟的整体解决方案

经常有人会问我,Java是最好的编程语言吗?我会告诉他:应该不是。我知道的很多语言,如果仅就语言功能来说确实优于Java,就比如日趋没落的C#,由于很多特性都模仿了Java,有在某些方面做出了改进,因此语言特性要优于Java;再比如Apple新推出的Swift,编写起来简洁、优雅……然而并没有什么用,它们都无力、也不可能取代Java。就像世界上比C优秀的语言多如牛毛,但C依然、也将一直坚挺。

Java可能不是最好的语言,但Java一定是最成熟的整体解决方案。举几个业内公开事实:taobao最初使用了PHP,发展、壮大起来不得不全部换成Java实现;京东最初使用了dot Net实现,发展起来之后整个后台不得不换成Java实现;小米服务端的消息系统最初使用Erlang开发,当时消息推送系统的第一版是基于Erlang的,随着小米用户数量的增长,后来开发团队不得不选择使用Java重新开发……还有无数中小型的企业“迷途知返”的案例,我就不想一一列举了。从这些事实可以发现,对于一个并发量小、稳定性要求不高的系统来说,可供选择的方案看似很多:PHP、dot Net、Erlang……,但公司发展壮大之后,最成熟的解决方案却只能是Java。

Java的成熟并非体现在Java语言特性多么简介、优雅,而是来自它庞大的社区和开发者,以及各种各样框架、类库和工具。软件行业的各种新理论,新方法,几乎最先都是用Java实现的。选择Java作为企业级应用的解决方案,可以避免地“重复造轮子”,很多开发中面临的棘手难题,往往都有开源的解决方案;几乎所有行业,都有非常成熟的Java应用案例,可供后来的开发者作为参考。选择Java,并不是简单地选择了一门语言,而是选择了一个成熟、稳定的解决方案。

Java的成熟更体现在包容气度上,有人说Java语法臃肿、更喜欢Ruby,OK,那就JRuby吧;有人说我喜欢Python,OK,那就Groovy、Jython吧;有人说我喜欢Lisp,OK,那就Clojure吧……各种语言的开发者都可在JVM上大展拳脚,Java以海纳百川的方式包容、融汇着各种语言的特性,最终成就了Java的“夫唯不争,故天下莫能与之争”。

名师对Oracle放弃Java EE的看法


推荐阅读
  • 在 Axublog 1.1.0 版本的 `c_login.php` 文件中发现了一个严重的 SQL 注入漏洞。该漏洞允许攻击者通过操纵登录请求中的参数,注入恶意 SQL 代码,从而可能获取敏感信息或对数据库进行未授权操作。建议用户尽快更新到最新版本并采取相应的安全措施以防止潜在的风险。 ... [详细]
  • 在Conda环境中高效配置并安装PyTorch和TensorFlow GPU版的方法如下:首先,创建一个新的Conda环境以避免与基础环境发生冲突,例如使用 `conda create -n pytorch_gpu python=3.7` 命令。接着,激活该环境,确保所有依赖项都正确安装。此外,建议在安装过程中指定CUDA版本,以确保与GPU兼容性。通过这些步骤,可以确保PyTorch和TensorFlow GPU版的顺利安装和运行。 ... [详细]
  • 帝国CMS中的信息归档功能详解及其重要性
    本文详细解析了帝国CMS中的信息归档功能,并探讨了其在内容管理中的重要性。通过归档功能,用户可以有效地管理和组织大量内容,提高网站的运行效率和用户体验。此外,文章还介绍了如何利用该功能进行数据备份和恢复,确保网站数据的安全性和完整性。 ... [详细]
  • 题目 E. DeadLee:思维导图与拓扑结构的深度解析问题描述:给定 n 种食物,每种食物的数量由 wi 表示。同时,有 m 位朋友,每位朋友喜欢两种特定的食物 x 和 y。目标是通过合理分配食物,使尽可能多的朋友感到满意。本文将通过思维导图和拓扑排序的方法,对这一问题进行深入分析和求解。 ... [详细]
  • 题目要求解决一个有趣的编程挑战,即计算由四个自然数 \( p, q, r, s \) 组成的分数序列的和。具体来说,需要编写一个 C# 程序来处理这些自然数,并通过特定的数学运算得出最终结果。该任务不仅考验编程技能,还涉及对数学公式的理解和应用。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 深入解析Java虚拟机的内存分区与管理机制
    Java虚拟机的内存分区与管理机制复杂且精细。其中,某些内存区域在虚拟机启动时即创建并持续存在,而另一些则随用户线程的生命周期动态创建和销毁。例如,每个线程都拥有一个独立的程序计数器,确保线程切换后能够准确恢复到之前的执行位置。这种设计不仅提高了多线程环境下的执行效率,还增强了系统的稳定性和可靠性。 ... [详细]
  • 优化后的标题:深入探讨网关安全:将微服务升级为OAuth2资源服务器的最佳实践
    本文深入探讨了如何将微服务升级为OAuth2资源服务器,以订单服务为例,详细介绍了在POM文件中添加 `spring-cloud-starter-oauth2` 依赖,并配置Spring Security以实现对微服务的保护。通过这一过程,不仅增强了系统的安全性,还提高了资源访问的可控性和灵活性。文章还讨论了最佳实践,包括如何配置OAuth2客户端和资源服务器,以及如何处理常见的安全问题和错误。 ... [详细]
  • 深入解析Linux内核中的进程上下文切换机制
    在现代操作系统中,进程作为核心概念之一,负责管理和分配系统资源,如CPU和内存。深入了解Linux内核中的进程上下文切换机制,需要首先明确进程与程序的区别。进程是一个动态的执行流,而程序则是静态的数据和指令集合。进程上下文切换涉及保存当前进程的状态信息,并加载下一个进程的状态,以实现多任务处理。这一过程不仅影响系统的性能,还关系到资源的有效利用。通过分析Linux内核中的具体实现,可以更好地理解其背后的原理和技术细节。 ... [详细]
  • 如何在PDF文档中添加新的文本内容?
    在处理PDF文件时,有时需要向其中添加新的文本内容。这是否可以直接实现呢?有哪些简便且免费的方法可供选择?使用极速PDF阅读器打开文档后,可以通过点击左上角的“注释”按钮切换到注释模式,并选择相应的工具进行编辑。此外,还可以利用其他功能丰富的PDF编辑软件,如Adobe Acrobat DC或Foxit PhantomPDF,它们提供了更多高级的编辑选项,能够满足更复杂的需求。 ... [详细]
  • Nginx 反向代理配置与应用指南
    本文详细介绍了 Nginx 反向代理的配置与应用方法。首先,用户可以从官方下载页面(http://nginx.org/en/download.html)获取最新稳定版 Nginx,推荐使用 1.14.2 版本。下载并解压后,通过双击 `nginx.exe` 文件启动 Nginx 服务。文章进一步探讨了反向代理的基本原理及其在实际应用场景中的配置技巧,包括负载均衡、缓存管理和安全设置等,为用户提供了一套全面的实践指南。 ... [详细]
  • POJ 2482 星空中的星星:利用线段树与扫描线算法解决
    在《POJ 2482 星空中的星星》问题中,通过运用线段树和扫描线算法,可以高效地解决星星在窗口内的计数问题。该方法不仅能够快速处理大规模数据,还能确保时间复杂度的最优性,适用于各种复杂的星空模拟场景。 ... [详细]
  • 本指南详细介绍了如何在CentOS 6.6 64位系统上以root用户身份部署Tomcat 8服务器。系统环境为CentOS 6.6 64位,采用源码安装方式。所需软件为apache-tomcat-8.0.23.tar.gz,建议将软件下载至/root/opt目录。具体下载地址请参见官方资源。本指南涵盖了从环境准备到服务启动的完整步骤,适用于需要在该系统环境下搭建高性能Web应用服务器的技术人员。 ... [详细]
  • 该问题可能由守护进程配置不当引起,例如未识别的JVM选项或内存分配不足。建议检查并调整JVM参数,确保为对象堆预留足够的内存空间(至少1572864KB)。此外,还可以优化应用程序的内存使用,减少不必要的内存消耗。 ... [详细]
  • 在数字图像处理中,Photoshop 的直方图是一个重要的工具,它能够精确地反映图像中不同亮度级别的分布情况。通过分析直方图,用户可以深入了解图像的曝光、对比度和色调范围,从而进行更精细的调整。直方图不仅模拟了物体表面反射光线的原理,还能帮助摄影师和设计师更好地掌握图像的明暗细节,优化视觉效果。 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有