精华内容
下载资源
问答
  • 很多开发者认为Python是比Java更高效的语言,Python是一种解释性语言,伴随着优雅的语法,它是脚本编写和快速应用程序开发在许多领域的绝佳选择。Python是一种动态类型的编程语言,无需声明变量。而Java是一种统计...

    很多开发者认为Python是比Java更高效的语言,Python是一种解释性语言,伴随着优雅的语法,它是脚本编写和快速应用程序开发在许多领域的绝佳选择。

    Python是一种动态类型的编程语言,无需声明变量。而Java是一种统计类型的编程语言,其中必须明确声明变量。

    即使未列出某些Java"类外壳”,Python代码也太小,这可能是python可能更具生产力的原因之一。

    Java是一种统计类型的通用编程语言,它是一种面向对象的并发语言。

    Java的含义是WORA(在任何地方运行一次即可编写),它旨在在Java虚拟机(JVM)的帮助下在任何平台上运行,并且具有尽可能少的依赖性。

    Python是一种动态类型的通用编程语言,其背后的主要动机是建立一种高级语言来弥合C和Shell之间的鸿沟。

    该语法还受到诸如Algolol,Pascal和ABC之类的语言的启发,它的含义是易读且简洁。

    Java

    代码扩展代码行,而不是Python。

    动态在Java编程中,您必须声明数据类型。

    语法在程序结束时,如果你错过了分号,则会出现错误。在Java编程中,必须在特定块之后或之前使用花括号,如果不使用花括号,那么没有花括号,代码将无法工作。

    可移植性Java随处可见,由于这个Java虚拟机(JVM)几乎随处可用。

    速度关于速度,Java更快。在项目速度方面,与python相比,java最好。

    易于使用在Java编程中,没有动态编程概念。代码比python更扩展。

    旧版Java在企业中的历史及其较为冗长的编码风格意味着Java的遗留系统通常比Python大,且数量更多。

    后端框架在Java中,我们使用Spring,Blade

    机器学习库我们不使用这些机器学习。

    游戏开发引擎使用JMonkeyEngine。

    python

    与Java相对的一小段代码

    动态在python中,编码是动态类型。在编码中,你不需要声明变量的类型(。

    语法在python编程中,语句末尾不需要分号。在python中,缩进是强制性的,但是我们不能使用花括号。通过使用缩进,我们提高了编码的可读性。

    可移植性Python在Java面前不那么流行,但是python还是可移植的。

    速度关于速度,python较慢。在项目速度方面,Python比Java慢,因为python是解释器。同样,它在运行时确定数据类型。

    易于使用我们在Python中使用的代码比Java短。在编码中,我们使用动态编码,它不仅易于使用而且易于理解。

    旧版本Python中继承的问题较少,因此组织揭示了脚本复制和粘贴代码的困难。

    后端框架在后端框架中,我们使用Django,Flask

    机器学习库不同的机器学习库就像; Tensorflow,Pytorch。

    游戏开发引擎我们在游戏开发引擎中使用Cocos,Panda3d。

    结论

    从上面的讨论中,我们可以得出结论,Java Vs Python是两种语言各自的优势。相比之下,实际上要为项目选择特定的语言。

    Python简单明了,而Java又快速又可移植。虽然Python代码是动态编码的,但是Java是静态编码,。Python是完美的,但是如果我们说Python是未来并且是新兴语言,那么我们必须同意Java的存在,它已被API广泛使用。

    Java和Python在各自的领域中都很强大,Java和Python语言都与可访问性相关,因此,公司,部门和开发人员在决定是否保持开放态度时是最佳选择。

    展开全文
  • 2021Java最新技术发展趋势

    千次阅读 2021-09-13 15:18:06
    显而易见,在过去的20年中,该软件一直在不断开发,并且仍在开发中,几乎每天都有崭新的趋势出现。印度的Java开发也已步入高潮,并在前进的道路上遥遥领先。随着软件开发的进行,就业机会不断增加,从而使印度以及...

    当前,计算机网站和应用程序的世界已经变得非常依赖Java,以至于大多数网站和应用程序都需要在我们日常使用的设备上安装Java,以使它们正常运行。从具有互联网功能的手机到巨型高科技超级计算机,Java是最受欢迎的选择,它在超过70亿种设备上运行,并且在全球范围内有900万开发人员使用。显而易见,在过去的20年中,该软件一直在不断开发,并且仍在开发中,几乎每天都有崭新的趋势出现。印度的Java开发也已步入高潮,并在前进的道路上遥遥领先。随着软件开发的进行,就业机会不断增加,从而使印度以及世界IT部门的状况发生了变化。

    1. Java在全球的领先地位:

    如上所述,在过去的二十年中,Java已从计算机编程语言的第二十五位上升到最高位置。其广泛的声誉在于其简单和用户高效的功能,例如其语言的清晰性,易于调试的过程,通用的兼容性以及其巨大的潜力。在大多数情况下,Java操作的应用程序和网站具有极大的可伸缩性,并且能够比其他程序处理更多的数据。多年来,许多应用程序和程序已从其他编程语言转移到Java,这主要是由于Java具有比其他语言更好的扩展和处理数据的能力。与其他计算机编程语言(例如C,C ++,Ruby on Rails,PHP,Python,Perl等)相比,Java是迄今为止最受欢迎的语言。

    2. 对Java的需求不断增长及其响应:

    多年来,Java作为一种高效的编程语言而流行,这也使其成为各种软件开发程序中最常用的语言之一。这种语言为Java开发人员提供了大量的库,比大多数语言更好地扩展和处理复杂的数据,与任何种类的软件程序兼容,高度安全且易于使用-总之,这是Web和Web的最佳解决方案应用程序开发。因此,流行和需求增长。为了满足不断增长的需求,世界各地涌现了许多Java开发公司,例如JDK(JDK 6、7、8和最新的Java 9),IDE(IntelliJ,Eclipse,等)等等。

    3. 物联网或物联网:

    物联网是指由交互设备(如手机)组成的网络,这些设备彼此互连,能够组装和分析数据信息,并最终确定数据。这项技术是Java软件的最新发展趋势之一,是少数能够将所有IT设备相互结合的技术之一。人们相信Java的未来在很大程度上取决于IoT技术的发展。据说Java的所有者公司Oracle已经接受了在嵌入式系统中开发端到端数据存储解决方案的挑战,从而建立了更安全的IoT使用。这是Oracle的Kona项目的主要目标。该应用程序可通过智能手机在诸如房屋中控制和管理智能设备(电视,空调,冰箱等)的过程中工作。因此,物联网技术。

    4. Java开发人员的现在和将来:

    随着其他语言对Java的需求逐渐增加,Java开发领域取得了长足发展。因此,Java开发人员的工作机会增加了。Java开发人员的职位空缺已在美国,英国,印度和全球各地开放。这样做的主要原因是Java语言生态系统本身具有很大的自我维持能力,具有适应性,效率,兼容性,可扩展性和易用性。

    从一开始,Java就已经在计算机编程语言中如雨后春笋般飞速发展。但是,它一次又一次地回到全球IT市场,每次都具有更好和改进的功能,从而证明了其强大的实力。Java的可行性和使其成为世界上最受欢迎的编程语言的其他功能,为全球Java开发人员提供了充足的工作机会。 随着Java的日益普及,印度以及世界其他国家的java软件开发公司蓬勃发展。

    想入门Java的小伙伴们,Java入门基础必备:

    Java教程_Java基础入门视频教程,零基础小白自学Java必备教程

    Javaweb核心基础+项目实战:

    JavaWeb全套教程,Java Web从基础到项目实战(IDEA版)

    Java并发编程:

    全面深入学习Java并发编程,JUC并发编程全套教程

    SSM框架教程:Spring+SpringMVC+MyBatis

    最全SSM框架教程|Spring+SpringMVC+MyBatis全覆盖_SSM整合

    展开全文
  • 很多同学都是看到互联网行业的高薪,... 多家技术实践前沿企业,报告范畴不仅包括 Java、JVM、Java EE 主流框架,还包括了各企业的 Java 应用实践访谈以及对 Java 趋势的点评。除此以外,我们还在 InfoQ 社区发起了 Ja

    很多同学都是看到互联网行业的高薪,脑子一热就转行报班参加培训等等,建议大家不仅要全面了解自己的学习情况,还应该多看看互联网行业的前景和发展趋势。

    public static void main(String[] args){
     
        System.out.println("添加qq裙:679126598");
     
    }

    毫不惭愧的说,这份中国区的 Java 发展趋势报告无论是参与专家,还是呈现角度,都要优于英文站的报告。专家来自阿里、腾讯、华为、美团、今日头条、小米、红帽... 多家技术实践前沿企业,报告范畴不仅包括 Java、JVM、Java EE 主流框架,还包括了各企业的 Java 应用实践访谈以及对 Java 趋势的点评。除此以外,我们还在 InfoQ 社区发起了 Java 开发者调查,把开发者的 Java 使用情况也如实呈现在本次趋势报告中。好了,话不多说,切入正题。

    参与本次趋势报告的专家

    杨晓峰,Java 技术专家,OpenJDK Committer

    李三红,阿里 / 蚂蚁 Java 技术负责人,阿里云智能资深技术专家

    小马哥,阿里巴巴 Apache Dubbo PMC 和 Spring-Cloud-Alibaba Architect

    田晓亮,华为云 ServiceStage 首席工程师和 Apache ServiceComb PMC

    单致豪,腾讯 TARS 开源项目负责人

    吴革,美团点评高级技术专家

    陈楚晖,红帽 AppDev 首席架构师,开源技术专家

    王石冲,字节跳动大数据工程师、Scala 程序员

    张涛,Kotlin 专家,Android 技术专家,开源实验室博主

    黄飞,小米互联网商业部技术主管


    Java 技术采用生命周期概览

    这张中国 Java 技术采用生命周期概览图是本次趋势报告的精华,结论来自于各位专家的判断。某些方面专家们观点出奇的一致,当然也有很多部分专家观点并不相同。可谓是金句频现、火花四溅。

    技术采用生命周期划分方式

    创新者

    早期采用者

    早期大众

    晚期大众

    技术采用生命周期是美国高科技营销大师杰弗里·摩尔在自己的书《跨越鸿沟》里提出的概念。技术采用生命周期是一个用来衡量用户对某项新技术接受程度的模型,它认为一个新的技术,从一开始出现到最后走向成熟,必然会经历创新者、早期采用者、早期大众、晚期大众的阶段。

    Java自学交流:679126598,初学者可以加群一起交流讨论。

    虽然每个人群间都会有裂缝,但是早期采用者和早期大众之间的那条裂缝最大,这条裂缝就是传说中的“鸿沟”,只有跨越过这条鸿沟,渗透到早期大众这个人群,产品才等于是进入了主流市场。

    重要结论

    1. Java 13 处于创新者阶段,Java 11 处于早期采用者阶段,Java 8 处于晚期大众阶段。

    Java 11 将是未来 Java 用户的最可能选项;

    如果一个公司对大堆栈 GC 能力、延迟 SLA 等方面要求没有那么高,就没有足够动力去做相关升级,也未必有技术力量解决版本评估、兼容性修正等现实问题;

    Java 新版本升级在中国的宣传还是不够,如果很多企业看不到技术升级的红利,势必也影响升级的积极性。

    2. OpenJDK 处于创新者阶段。

    虽然国内很多头部厂商都在定制 OpenJDK,但是目前定制 OpenJDK 被采用范围还都有限,主体使用还是 Oracle JDK(根据《JVM 生态系统报告 2018》调查显示,70% 的开发者选择使用 Oracle JDK,21% 的开发者选择使用 OpenJDK);

    厂商是否转向 OpenJDK,还有一个重要考量因素就是看他们是否愿意付费使用 OracleJDK,如果不是的话,未来 OpenJDK 可能会逐渐取代 Oracle JDK,目前国内头部厂商都在 OpenJDK 上有所动作; (对于参与 OpenJDK 的国内头部厂商来说,可能他们的看法更加积极,他们把 OpenJDK 定义在早期大众阶段)

    大家在公有云、私有云等方面的竞争格局,深刻影响着在 OpenJDK 上的竞争格局;

    OpenJDK 很可能被认为是一种退⽽求其次的选择。

    3. 非 Hotspot JDK 生产实践——Graal VM、IBM OpenJ9 处于早期采用者阶段。

    Graal VM 目前还尚不可知其兼容性情况以及明确的商业化条款;

    Graal VM 的部分技术,例如,基于 Java 语言开发的 JIT 引擎,可能会成为未来 OpenJDK 的基础技术;

    在国内,怀疑 Graal VM、IBM OpenJ9 进入普遍生产实践的可能性会比较低。

    4. Lambda /Stream 处于晚期大众阶段、Vector API 处于创新者阶段。

    Lambda 语法以及 Stream API 也在开发人员的⽇常⼯作中⼴泛地运用,并且没有看到语法回退的趋势;

    Vector API 等前沿特性,有能力的公司有限,抑制了对其有需求的公司或者场景。

    5. Kotlin 处于早期大众阶段,Scala 和 Groovy 处于晚期大众阶段。

    Groovy 已快成为明日黄花,往昔的光芒逐渐地被后起之秀 Kotlin 替代;

    Scala 在适合的领域做王者就够了,主流不主流没那么重要;

    Kotlin 被谷歌强推,谷歌支持的基本上都成功了,但是对 Kotlin 未来发展空间还是表示怀疑;

    网上很多文章都在鼓吹,说 Kotlin 最终会取代 Java 成为新一代 JVM 主流语言, 但是从诞生到现在,好像依然没有语言能取代 Java。

    6. 微服务框架:Spring Boot 和 Spring Cloud 进入晚期大众阶段;ServiceComb 处于早期采用者阶段;Apache Dubbo 处于晚期大众阶段;Tars 处于早期大众阶段。

    微服务技术处于早期大众与晚期大众之间,新的微服务开发框架需要技术突破和创新,不然已经难有一席之地;

    Java 不再是微服务唯一的选择;

    在技术多元化的今天,支持多语言的微服务开发框架是个必须品。

    技术采用生命周期解读
    在上一章节我们已经先把各位专家的观点和结论抛了出来,但是结论背后还需要很关键的原因解读,所以这一章节就按照 Java/JVM、不同层次的主流框架、微服务这三个部分,来逐一呈现。

    Java/JVM

    其实在 Java 版本方面,各位专家的观点完全一致:Java 13 处于创新者阶段,Java 11 处于早期采用者阶段,Java 8 处于晚期大众阶段。

    在 InfoQ 面向开发者的 Java 使用版本调查中,毫无悬念,在参与问卷调研的开发者中,88.7% 正在使用 Java8 版本,这些人当中只有 35% 有升级计划,剩余 65% 并没有升级计划。

    杨晓峰认为这一情况也正常:Java8 在可预见的将来依然会是生产的主体,放在晚期大众阶段是合理的。但是对于很多头部厂商来说,Java11 或者再后续版本,有可能陆续出现一定规模的生产化部署。他认为这样的趋势只会在头部公司发生,如果一个公司对大堆栈 GC 能力、延迟 SLA 等方面要求没有那么高,就没有足够动力去做相关升级,也未必有技术力量解决版本评估、兼容性修正等现实问题。所以结论就是:Java11 处于早期采用者阶段。

    对此黄飞补充:也正是因为 Java11 处于早期采用者阶段,因此相关的资料较少,遇到问题会有比较高的学习成本,例如 JFR 对 11 的支持,JMC 对 Java11 的分析能力较弱。

    而对于 Java 13,小马哥认为该版本在新 GC 算法的提升以及 Socket 实现上的变化还是非常令⼈期待的,因此 Java 13 排在创新者之列。

    对于 Java 的升级,Oracle 宣布从 Java 9 开始每半年将更新一个 Java 大版本——Java 11 是长期支持(Long-Term -Support, LTS)版本,Java 9、10 则成了过渡版本(non‑LTS),因此,陈楚晖不建议用户在生产中使用 Java 9、10。在他看来,小版本升级相对风险是比较小的,而大版本变更则会有可能需要更改大量的代码,这也是为什么这么多人还在坚持用 Java8,而不去更新 Java 11、12、或者 13 的原因。

    对于开发者升级 Java 动力不足的原因,李三红的解释更为详细,他认为有两个原因:

    敏捷的基础底层架构对软件升级的支持,企业对底层架构的重视程度也是 Java 升级的一个很关键原因。中国的企业业务发展都很快,但是其实很多对底层架构的支持和重视是不足够的。底层架构是否在企业内部被统一强管控,是否很容易支持不同软件版本的灰度,并能通过有效的预发测试,覆盖软件升级不兼容等带来的不确定性,这都考验着软件升级的难度。

    另外一点,如果企业享受不到技术升级带来的红利,包括性能、编程效率等多方面提升,势必也影响升级的积极性。

    从此次 InfoQ 面向开发者的调研来看,对于目前 Java 的新特性和发展方向,56% 的开发者认为可以解决当前的主要业务挑战,24% 开发者的观点是不能。这也从另一层面表明:Java 经常被吐槽演进太慢,但是业界对新版本的采用并不十分积极,这可能反映了 Java/JVM 发展与开发者的实际需求存在某种脱节。

    OpenJDK 定制版或者公开发行版

    由于 Oracle 宣布 2019 年伊始,Oracle JDK 8 以及更⾼版本在服务器端部署不再免费,因此 OpenJDK 就成为了大多数 Java 用户的选项。根据《JVM 生态系统报告 2018》调查显示,70% 的开发者选择使用 Oracle JDK,21% 的开发者选择使用 OpenJDK。 陈楚晖也介绍了国内的情况:目前国内开发者使用最多的依旧是 Oracle JDK,其次是 IBM JDK,也有部分企业采用 OpenJDK。

    对于 OpenJDK 的技术采用生命周期划分,专家们有一些观点上的不一致,杨晓峰认为虽然国内很多头部厂商都在定制 OpenJDK,但是目前定制 OpenJDK 被采用范围还都有限,这也跟上文数据结果吻合,所以他会把 OpenJDK 归在创新者阶段。

    但是对于参与 OpenJDK 的国内厂商来说,可能看法更加积极。在李三红看来:厂商是否转向 OpenJDK,还有一个重要考量因素就是看他们是否愿意付费使用 OracleJDK,如果不是的话,未来 OpenJDK 可能会逐渐取代 Oracle JDK,目前国内头部厂商都在 OpenJDK 上有所动作,所以他把 OpenJDK 定义在早期大众阶段。阿里巴巴使用并开源了 OpenJDK 长期支持版本 Dragonwell,目前阿里巴巴大部分的应用运行在 Dragonwell 8,  有些已经运行在 Dragonwell 11。

    据来自美团的吴革介绍:美团现阶段正在测试基于 OpenJDK 的 MtJDK,作为美团 JDK 基础服务。此外,美团主要会关注 Redhat 和 Amazon 的升级。由于 Azul 没有公开 OpenJDK 源代码,所以美团没有基于 Azul 进行研发。

    来自小米的黄飞也介绍了小米对于 OpenJDK 的应用情况:小米主要使用 OpenJDK8 以及 11 版本,目前对 OpenJDK 主要还是以使用为主。

    从现有的 OpenJDK 阵营来看,目前分为两类,一类是 IT 和云厂商,他们对外提供发布、销售的 OpenJDK 版本——Amazon、Redhat、Azul 、阿里巴巴、腾讯都在自己生产(除了微软分发 Azul);另外就是技术上的强需求导致自身有定制 OpenJDK 的公司,他们的 OpenJDK 产品较难突破内部使用的范围,比如我们采访调研的美团、小米。

    对于这样的一个阵营划分,杨晓峰有一个观点:从 OpenJDK 发布版的竞争格局来看,最终会演变为云的格局,坚持下来的会是头部云厂商或与其合作的软件厂商。换句话说大家在公有云、私有云等方面的竞争格局,深刻影响着在 OpenJDK 上的竞争格局。毕竟对于企业来说,做 OpenJDK 也需要有利可图,没有广泛的用户群体和对等的收益,很难支撑基础软件的长期演进。

    我们把以上观点抛给了此次调研采访对象——IT 公司和云厂商阵营的代表李三红,在他看来:在 Java 收费的情况下,OpenJDK 一定是大势所趋,Java 会越来越开放,深度参与 OpenJDK 也是为了通过社区驱动 Java 往前走;另外,在当前企业上云的大趋势下,如果客户的现有系统是用 Java 写的,云厂商在为客户提供服务的时候势必要考虑如何让 Java 生态变得更好,这也是符合客户的诉求。

    不过杨晓峰也表示:从企业 IT 决策角度来说,相当一部分企业更加看重的是长期可信的支持、及时的安全漏洞和 bug 修复等。也会有可观的企业会决定风险自负,直接获取免费、自由的 OpenJDK 发行版,并不会购买支持服务,甚至不考虑升级 JDK,直到今天 JDK 7 等历史版本仍有可观的占有率,正是说明了这一点。

    非 Hotspot JDK 生产实践——Graal VM、IBM OpenJ9

    Graal VM 被列为早期采用者阶段,对此李三红表示:Graal VM 已经在 Oracle Cloud 生产环境大规模使用,TCK 兼容。值得一提的是,Graal VM 下的静态编译 SVM 造成了 Java 语言一些方面的不兼容, 这个也是整个社区担心的地方。如何让 SVM/ 静态编译能纳入到 Java Language/JVM Specification 里来?值得关注。

    杨晓峰的看法更加极端:在国内,怀疑 Graal VM、IBM OpenJ9 进入普遍生产实践的可能性会比较低。怀疑它们可能不会再走到下个阶段,很难跨越技术鸿沟。提及原因,他认为主要是国内公司大都在强调业务创新的速度,没有做如此深度的底层更新的耐心和业务必要性。而且从技术上来看,在动态特性支持等需求没有平滑解决方案之前,迁移难度很高,会带来很高的开发和运维成本。

    所以对于国内普通企业用户来说,没有单独关注的价值。未来更加现实的技术采用路径是,用户使用集成了 Graal VM 先进技术的 OpenJDK 主分支。同样,IBM OpenJ9 有很多独到的技术,如果能够合并入 OpenJDK 主分支,更能创造普遍的生产价值,否则难免会被局限在 IBM 中间件等用户群内部。另外,订阅 Graal VM 服务的具体信息可能在今年 Code One 会有说明,大家有兴趣可以关注。

    Lambda /Stream、Vector API 等语法与特性

    对于 Lambda /Stream 等语法与特性,采访调研专家认为应该归类在晚期大众阶段。小马哥认为这些语法与特性在开发人员的⽇常⼯作中⼴泛地运用,并且没有看到语法回退的趋势。吴革表示:在美团内部,目前已经大量使用 Lambda 和 Stream 表达式。

    而对于 Vector API 等前沿版本特性,杨晓峰认为还只在个别头部公司处于原型阶段,应该被归在创新者阶段。

    Kotlin、Scala

    对于 Kotlin 和 Scala,我们也采访调研了两位 Kotlin 和 Scala 领域的专家。

    在今年 5 月份的 Google I/O 大会上,Google 官方正式宣布:Kotlin 是 Android 应用程序开发人员的首选语言。这是否意味着 Java 占据 Android 开发绝对统治的时代一去不复返了?

    虽然身为 Kotlin 专家,但是张涛的观点还是很理性而客观的,他表示:每几年都会有语言号称要取代 Java,但是从诞生到现在,好像依然没有语言能取代它。这主要源于 Java 在服务端的稳固地位,没有语言能够做到 Java 这样完善的社区、用户群和三方库支持。

    张涛认为 :Kotlin 在国内应该处于早期大众向晚期大众过渡阶段,在未来一两年内,会有大部分的 JVM 平台开发者开始使用 Kotlin。

    在 2017 年年底,张涛曾经做过一次调查,邀请将近 1000 名 Android 开发者,了解他们的项目中是否使用了 Kotlin。当时的结果是 30% 的人使用过 Kotlin,60% 的人听说过 Kotlin, 还有 80 多人没有听说过。他相信目前国内的 Android 应用应该 90% 都包含有 Kotlin 代码。

    此前 InfoQ 曾对字节跳动大数据工程师、Scala 程序员王石冲以及另外几位来自 Scala 社区的专家进行过一次访谈,了解 Scala 在国内的发展情况。对于有人认为的 Scala 难成主流的说法,王石冲表示:Scala 为什么非要成为主流呢?它在自己适合的领域做王者就够了,主流不主流其实并不是那么重要。

    王石冲把 Scala 归在早期大众或者晚期大众阶段:Scala 在可预见的未来都会是小众——有一少部分人非常喜爱它;有一少部分团队或公司在使用它;大部分人最多只是听说过它而已。Scala 无论是在国内还是在国外,都称不上是主流语言。不过有部分团队水平很高的公司,还是深度应用 Scala 来做事情。

    成名的例子就有 Twitter、LinkedIn、Verizon 等。金融行业则有摩根士丹利、渣打等(但是他们作为闷声发大财的典型,很少对外宣传自己的技术选型)。而很多硅谷的初创团队早期为了快速开发,也是采用的 Scala。在国内,除了小米、阿里和腾讯的部分团队以及类似于 GrowingIO、水滴这样的初创公司和一些广告公司外,大部分开发者都是应用 Scala 来做 Spark 开发。因为没有典型的、具有号召力的大公司主导,所以 Scala 在社区方面做得也一般。

    Spring Boot/Cloud、Apache Dubbo、TARS、ServiceComb 等微服务框架

    对于微服务框架的技术采用生命周期的划分,我们分别采访调研了阿里、腾讯、华为等几家大厂的专家,这几家大厂都拥有各自的微服务框架解决方案。不过微服务框架的王者依旧非 Spring Boot 和 Spring Cloud 莫属,对于这一点大家也达成了共识——Spring Boot/Cloud 处于晚期采用者阶段,拥有大量用户。从 InfoQ 此次面向开发者的调研来看,选择 Spring Boot/Cloud 的开发者占到 70%;其次是 Apache Dubbo,占到 20%;其他微服务框架的占比都还不太高。

    田晓亮表示:Spring Cloud 社区依然在蓬勃发展,也开始为云厂商创造商业机会,如何与 Spring Cloud 结合,成为了云厂商要解决的关键问题之一。

    虽然越来越多的企业选择了 ServiceComb 进行微服务转型,并获得了成功,但并未普及到早期大众阶段。ServiceComb 中微服务框架与 Service Mesh 可以融合使用,让用户有了灵活的选择。

    Java 依然是最流行的语言,但企业也终于能够选择其他语言进行微服务开发了。同时提供 Spring Cloud 的组件可以使其接入到 ServiceComb 中,帮助 Spring Cloud 用户平滑向多语言转型,Java 不再是微服务唯一的选择。

    Apache Dubbo 一开始并不叫这个名字,Dubbo 一开始只是阿里内部的一个系统,2010 年 Dubbo 项目进行重构,2018 年初,Dubbo 项目正式进入 Apache 孵化器。在小马哥看来,Apache Dubbo 属于晚期大众阶段,不过最新的 Apache Dubbo ECO System(生态系统)则是一个基于 Apache Dubbo 衍进的 Cloud Native 解决方案,目前尚未枝叶茂盛,处于创新者阵营。

    对于 Apache Dubbo,黄飞表示:它在 RPC 中间件这个领域可以算得上引领者之一。Apache Dubbo 的服务注册与发现、服务治理相对完善,支持灰度发布,智能的负载均衡策略、可视化的服务治理与运维工具便于开发人员上手。可以说 Dubbo/Dubbox 在 RPC 框架 / 微服务领域已经展露头脚甚至在某些方面已经形成优势。

    TARS 在腾讯内部叫 TAF(Tencent Application Framework),是腾讯应用产品最多、最广泛的微服务开发框架,并且已经在腾讯大规模应用了超过十年。2017 年中旬,腾讯正式将 TARS 开源,开源后一年便成为 Linux 基金会开源项目。由于相对其他微服务项目开源晚,错过了很多社区发展红利。

    对于 TARS,据单致豪介绍,不同的微服务主流框架可以满足不同的应用痛点,TARS 则原生专注多语言和高性能。他认为 TARS 已经有大型互联网公司广泛使用,已经从早期采用者阶段迈过了鸿沟,进入了早期大众阶段。

    **Java 应用实践**


    InfoQ:您的企业使用的 JDK 版本情况,是否采用了某个 OpenJDK 发行版?您如何看待 OpenJDK 在国内的发展?(如果没有采用,原因以及后续计划?)

    阿里巴巴李三红:目前阿里巴巴大部分的应用运行在 Dragonwell  8,有些已经运行在了 Dragonwell 11, 我们正在逐步推动从 Java8 到 Java11 的升级,充分享受技术红利。

    美团吴革:美团现阶段主要使用 Java8,很少一部分是 Java7。部分核心团队正在尝试 Java 11。在美团内部采用的开发版本 JDK 主要还是 Oracle JDK。我们在服务器上的 JDK 版本主要是美团自己的 MtJDK 和 Oracle JDK。美团现阶段正在测试基于 OpenJDK 的 MtJDK,作为美团 JDK 基础服务。

    MtJDK 主要基于 OpenJDK 构建,现阶段主要针对补丁和安全性进行维护。现阶段在特定业务线内部进行测试和应用。未来配合 Serverless 等基础服务升级,MtJDK 会在 JDK 启动性能和增强应用之间的隔离进行深度定制。

    小米黄飞:小米主要使用 OpenJDK8 以及 11 版本。目前对 OpenJDK 主要还是以使用为主,主要的业务关注点在于这个版本是否为长期支持;是否有更加高效易用的特征,例如 GC 算法由 CMS、G1 升级到 ZGC 等;开源社区是否活跃;以及对遇到的问题是否有足够丰富的资料与讨论等。 Java 作为使用最为广泛的语言,最近几年还是有比较大进步的,无论从语法的易用性上还是性能上都有很大程度的提升。吸收了函数式编程的思想,lambda 表达式、Parallem stream、Var 变量等提升了开发人员的效率与代码的简洁性。ZGC 无疑是一项重大的改进,在一定程度上解决了 Java 天生的 GC 问题。

    InfoQ:您的企业目前在支持 Java 技术栈方面的策略是什么?计划和目标是什么?相关的核心痛点或者业务需求是什么?

    腾讯单致豪:腾讯内部占领导地位的开发者是 C++,同时有大量的 Node.Js、Golang、Java、PHP、Python 开发者,当然也有少量的 Rust、C# 的开发者。我们在海量用户的后端大部分采用 C++ 和 Golang,Java 在前端和大数据方面有广泛使用,在对外 ToB 的交付中也大量采用。

    由于腾讯的开发者使用了多种开发语言,而且不同开发语言在不同领域有不同优势,所以当前要解决的问题是多语言开发的服务互通问题,一套支持多语言的微服务开发框架是必需品,TARS 也是在这样的多语言背景下诞生。

    美团吴革:美团的 Java 技术栈策略偏向稳定,在稳定的基础之上推动技术升级。Java 核心痛点就是依赖升级,当一个 jar 包升级,必须一个服务一个服务升级,不能自动化整体升级,所以对于美团来说,正在解决相关依赖升级的问题。

    红帽陈楚晖:红帽主要采用市场流行的 Java 技术栈。大部分的项目都会采用 Java 进行开发,主要是因为 Java 比较成熟,有很多成熟的技术框架可以直接使用,同时也有很多类似的代码可以重用,也比较容易找到熟悉 Java 的技术人员。这样开发的速度和效率会比较高,以及成本会比较低。

    InfoQ:请介绍您的企业是否进行了微服务实践?如果是,在整体系统架构中的比例是多少?如果不是,是否有相关计划?

    阿里巴巴小马哥:大多数应用已实施微服务架构,微服务应用的比重达 80% 以上。

    腾讯单致豪:早在 2008 年以前,腾讯已经开始实践“大系统小做”的海量服务之道理念,大量的服务已经是遵循微服务理念开发。因为腾讯要支持快速迭代和敏捷研发,所以微服务比例占比在 95% 以上。核心业务模块因为要支持海量用户的巨大流量,100% 都是微服务。腾讯内部使用 TARS 开发的微服务已经超数十万个节点,在规模上来看,是全球最大的微服务集群之一。

    美团吴革:美团在 2015 年开始微服务架构演进,核心系统已经 100% 微服务化。

    红帽陈楚晖:已经进行了微服务实践,在整体系统架构中占比不超过 30%。

    华为田晓亮:华为云的所有服务都采用微服务架构,但并非所有服务都用了某种微服务解决方案——比如 ServiceComb,Istio 或者 Spring cloud,各服务主要是自行实践微服务设计模式。但几乎所有应用服务都采用了华为云容器服务 CCE(Cloud Container Engine) 的 kubernetes 集群。

    InfoQ:您所采用的主要微服务框架是什么?如何判断国内该领域的技术发展情况?您认为微服务主流框架的争夺是否尘埃落定?

    阿里巴巴小马哥:2015 年初开始,阿里巴巴集团的应用架构逐渐由 SOA 衍生至微服务,所使用的微服务框架主要以 Spring Boot / Spring Cloud 和 Apache Dubbo(HSF)为主,涵盖所有 Java 中间件核心基础设施、九成以上的内部系统,以及阿里云商户应用等。

    同时,基于 Spring Cloud API,阿里巴巴衍生并开源出一套全新的微服务框架 - Spring Cloud Alibaba,并且正走向下一代 “云原生” 架构,越来越多的应用开始尝试 Serverless 以及 Service Mesh 等前沿技术。相信未来微服务在不同语言和平台上将会提供更多的选择,至于那时谁是王者或主流框架,这个问题的答案已经不再重要。

    腾讯单致豪:不同的微服务主流框架可以满足不用的应用痛点,比如 SpringCloud、Dubbo 专注 Java 领域,TARS 则专注于多语言和高性能,充分发挥 C++ 的高性能、Go 的性能与高效兼顾、Java 的全能、Python 丰富基础库尤其是 AI 方面、Node.Js 和 PHP 便捷全面为 Web 而生等等优势。

    目前中国和美国大厂开源的微服务框架(腾讯的 TARS、阿里的 Dubbo、百度的 brpc、谷歌的 gRPC、Facebook 的 Thrift、Pivotal 的 SpringCloud)基本能覆盖所有用户的痛点,企业直接从开源社区选型能解决自己痛点的开发框架即可。

    美团吴革:主要采用自研 OCTO 和 Pigeon,现在正在开发 Service Mesh 服务。现在国内主要是基于 Dubbo、Spring Cloud、Google gRPC 作为基础进行二次封装,主流框架选型已经相对成熟。

    红帽陈楚晖:主要采用 Spring Cloud 的微服务框架,也对 Service Mesh(Istio)有研究。由于现有的微服务框架需要开发人员过多的介入,需要有大量的开发,所以目前大家比较看好 Istio。但是由于 Istio 还不够成熟,因此大家都还处于预研阶段。

    华为田晓亮:华为许多的云服务和内部项目采用了 ServiceComb 的微服务解决方案,比如消费者云,在全世界运行着数千微服务实例来为手机用户提供服务。此外,华为云的音视频服务也运行着数千的微服务实例,来提供视频通话、音视频解码等服务。并且我们也向社区(通过 ServiceComb)和商业用户(通过 ServiceStage)提供解决方案。

    InfoQ:您如何看待 Service Mesh 在国内的发展现状和发展前景?

    阿里巴巴小马哥:个⼈对 Service Mesh 的看法是乐观偏谨慎的,一⽅⾯,作为从业人员,对于技术总有猎奇的心态。另外一⽅⾯,这个技术在设计上存在一些理想主义,比如,性能损耗以及稳定性,并且分布式场景中的典型问题并没有得到解决和改善,比如数据一致性、分布式事务等。 据我所知,国内不少的互联⽹公司,如阿⾥巴巴、蚂蚁⾦服以及美团等已经开始在生产环境试点 Service Mesh,听起来这是一件好事。前沿的技术总需要有⼈去探险,如果成功,前人栽树,后人乘凉。至于它能否成功,主要看市场是否愿意买单。

    美团吴革:未来 Service Mesh 会在跨语言场景下大放异彩。Service Mesh 主要是基于云平台和多技术栈场景下的痛点进行的开发,短时间内不会有爆发性的增长。但是基于原生云架构系统的增多,未来 Service Mesh 会不断演进,最终变为云原生架构下的网络基础服务。

    腾讯单致豪:Service Mesh 目前还处在早期发展阶段,其理念设计已经决定了性能及维护性上会是它最突出的短板。但有部分企业包括腾讯已经尝鲜,也有小量周边不重要非核心业务在上面跑。Service Mesh 有着优美的架构理念,但性能确实让人担忧,社区生态也至少需要三年以上的发展时间。

    华为田晓亮:大环境来看,传统企业面临的挑战依然是业务系统如何向微服务转型,以构建自己的业务平台,在这其中微服务框架是一种手段。为了寻求更快速地微服务化,开发人员就会避免学习陡峭的开发框架,而转向使用 Service Mesh。开发者将结合轻量的 SDK(例如对接监控系统、配置管理、AI 平台,而不是微服务框架)与 Service Mesh 来实现自己的业务系统,从繁重的架构工作中解放出来。这个发展历程在我看来大概需要 2-3 年的时间。

    而且,在我看来,最终站上舞台的并不是 Service Mesh,而是底层由 Service Mesh 提供支持的 Serverless 平台,用户感知不到 Service Mesh 技术的复杂性,否则将面临比开发框架更繁重的基础设施运维挑战。所以 Service Mesh 其实和 Serverless 的发展是绑定在一起的。Serverless 的普及和使用必然会帮助 Service Mesh 进行发展。

    InfoQ:对于当前 Java 的整体发展情况,您有什么感想?

    杨晓峰:在可预见的将来,Java 依旧是企业软件、大数据、电商等等最核心的技术栈。但是目前 Java/JVM 能力在云时代有一定局限性,比如云里强调的无服务器、微服务等场景,Java/JVM 都有一定短板。 另外 Java 新版本采用速度这么慢,本身就说明,Java 创新和实际需求存在某种程度的脱节——一方面大量创新会带来兼容性和版本混乱的问题;另外创新带来的优点却需要极大增大开发运维成本,这也让部分创新的价值被抵消了。 但是 Java 会被取代吗?应该也不会,目前在社区、工具、类库等等方面,Java 还没有真正意义的对手,但是最大的威胁是新的需求浪潮是否与你有关。我们可以看下 GitHub 上 Java 新项目的趋势,一定程度上可以佐证 Java 坚实的基本面和不可忽视的隐忧。

    阿里巴巴李三红:从技术角度来看,Java(JDK)这二十几年的发展一直试图在 Productivity 以及 Performance 之间做最好的平衡。Java 是静态类型语言,但是为了生产效率提供了大量动态的特性比如 Bytecode Instrument、Dynamic Class Loading、Metaprogramming(Annotation、Reflection 等 ,这些形成了 Java 在运维、生产监控等领域的基石技术。 同时由于 Java 大量的动态特性存在,使得它在面向云原生、Serverless 计算时 Memory Footprint、Startup 方面被人所诟病。这也是整个 Java 社区,当然包括 Alibaba Dragonwell 所试图解决的问题。

    阿里巴巴小马哥:Java 目前仍具在编程语言排⾏榜上夺魁的能力,不过在整体比重上微幅下滑。个⼈看来,未来这个趋势还将持续。究其原因,一⽅⾯是由于新语种出现的中短期效应,一方面是 Java 的编程复杂度并没有明显的降低,比如 I/O 处理、并发 / 并⾏计算,以及类加载等等。再者是 Java 与操作系统之间的交互仍不够充分,尽管 Java 9 开始提供了不少的 API,然⽽了解和使用的群体不⾜。Java 在这方面明显不及 GO 语言。

    从语⾔层⾯来看,Java 正在向主流非 Java 语⾔融合,解决其中鸿沟的关键是语法的变化,比如 Java 8 的 Lambda 表达式 和 Java 10 的局部变量类型( var )等。个人认为这是一件好事,未来前后端不分家,相互渗透,对于彼此语言都是良性发展。

    除此之外,个人比较期待的是 GraalVM 对 Java 的改变,传统 Java 应用必须依赖 JVM 进程加载字节码后解释执行,无法保证所有的代码能够在运行期编程完成,不免有运⾏时编译所带来的性能开销,从而影响 JVM 的启停时间。简单地说,这种方式不够 Native,对于云原生或许不够友好。如果未来 GraalVM 的社区版也能够像 OpenJDK 那般“亲民”,那么,Java 的变化将是颠覆性的。

    美团吴革:当前 Java 已经发展成为一个庞然大物,语言上基本不会有太多突破,更多是借鉴和兼容。随着 GC 算法的升级和编译器换代,面对 Go 等新一代语言挑战,还有一战之力。

    腾讯单致豪:毋庸置疑,Java 语言依然活力十足,但在某些方面已经失去优势,如云原生领域现在出现了更具活力的 Go 语言。纷繁的世界必定会出现多语言并存、不断替代的现象。回顾历史发展进程,一种语言要从出现到早期大众使用基本都需要十年时间,能历经十年磨砺生存下来的开发语言,必定是有很强的生命力,而且都会有不同的企业构筑其生态。正如上文所说:不同语言也会在自己优势之处持续发展,形成很强的竞争壁垒。

    字节跳动王石冲:Scala 语言目前有两个大的目标运行平台——JVM 和 js,所以 Scala 作为一个语言和生态并不敢完全投资在单一目标平台上。虽然 JVM 本身在不断进步,但是 Java 已经被同平台的多种语言赶超,比如 Kotlin、Clojure、Groovy。

    报告参与者介绍

    杨晓峰,Java 技术专家,OpenJDK Committer。

    李三红,阿里云智能资深技术专家,2014 年加入蚂蚁金服,现为阿里 / 蚂蚁 Java 技术负责人,有超过 10 年的 Java 开发经验。活跃于 Java 技术社区,在 Java 虚拟机领域拥有多项技术专利。

    小马哥(@mercyblitz),《Spring Boot 编程思想》作者、Apache Dubbo PMC 和 Spring-Cloud-Alibaba Architect。

    田晓亮,华为云 ServiceStage 首席工程师和 Apache ServiceComb PMC,7 年云计算领域工作经验,在 PaaS,混合云,DevOps,微服务,APM 方面有多年的实践经验。

    单致豪,腾讯技术委员会和腾讯开源办公室成员,负责微服务框架 TARS 的开源生态,并将项目捐赠 Linux 基金会。云原生产业联盟专家顾问,DevOps 标准专家,GOPS 大会主席团。

    吴革,美团点评高级技术专家,现在主要负责美团点评小象事业部系统架构工作。陈楚晖,红帽 AppDev 首席架构师,开源技术专家,熟悉多种开源中间件,长期就职于国际知名软件公司,二十年中间件工作经验,拥有丰富的电信运营商、政府企业、金融等行业的系统集成、IT 项目管理经验,具有丰富的一线实践经验。

    王石冲,字节跳动大数据工程师,Scala 程序员。译著有《反应式设计模式》。主要专注于基于 Scala 构建的反应式架构以及相关应用的实现。之前在从事中小型企业的实时数据流分析系统的开发。第四届阿里中间件性能大赛优胜奖,第一届阿里云 PolarDB 性能大赛季军。

    张涛,网名 kymjs,Android 技术专家,“开源实验室”博主,Kotlin 技术推广者,四年前开始接触和使用 Kotlin 语言。带过团队,做过架构,写过应用,做过开源社区。曾先后在沪江、饿了么、携程工作,目前在一条生活馆负责移动开发管理工作。

    黄飞,小米互联网商业部技术主管,在互联网商业化变现方面有丰富经验,负责小米互联网广告业务引擎与算法架构工程研发,在高并发分布式推荐系统有多年的实践经验。

    展开全文
  • Java过去和未来发展的6大趋势

    千次阅读 2019-07-02 22:01:35
    Java一直位居编程语言的榜上首位,最近的排行榜显示的使用率又有大幅增长。这个20多年的语言在焕发第二春。 回首Java过去的20年,首先是经历了微机时代的兴与衰,然后进入服务器领域及智能电话领域,继而在DHS的“不...

    Java一直位居编程语言的榜上首位,最近的排行榜显示的使用率又有大幅增长。这个20多年的语言在焕发第二春。

    回首Java过去的20年,首先是经历了微机时代的兴与衰,然后进入服务器领域及智能电话领域,继而在DHS的“不安全”定义下艰难前行,最后投入Oracle怀抱。

    Java的诞生

    1991年,James Gosling带领着名为“Green Team”的团队着手研发一种新的语言以及专为下一代数字设备和计算机使用的网络系统。历时4年辛勤工作后,该项目发布,取名为Java。

    Java有着类似于C的语法并有“一次编译,随处运行”的灵便性。透过虚拟机机制,可以使代码在底层平台进行运行时编译。回首Java过去的20年,首先是经历了微机时代的兴与衰,然后进入服务器领域及智能电话领域,继而在DHS(美国土安全部)的“不安全”定义下艰难前行,最后投入甲骨文(Oracle)怀抱现正蓄势迸发第二春。

    Java推出后,Sun发现市场上存在着一个问题 —— 计算机领域与非计算机领域彼此是隔断的。Sun认为这是一个机遇,如果能把两者连接起来将会带来一场计算机革命。当时的市场,两个领域的厂家各自为政,没有形成统一的网络。因此很多时候不得不重复大量的实验,问题的所在是电子消费品制造者没有考虑使用网络,例如跨平台的公共APIs或者代码复用。所有软件都只能不断地被重复创建,Java提出的模块概念将改变这一局面。

    成功非坦途

    Java面世的头五年,成为当之无愧的编译器高性能代言人。而过后五年,所有人都把重心转向了企业应用。在90年代,大多数开发者都把精力投入到桌面应用的编写之上。到了2000年,Pet.com的成功吸引了大批的跟风者。业界又把焦点从桌面转移到了HTML应用。随着智能电话和平板的到来,基于触摸屏的移动应用又站在了风口。

    Java 2 Micro Edition(J2ME)在1998年引入并把Java划分了三个平台:Java 2 Standard Edition(J2SE)、J2ME以及Java 2 Enterprise Edition(J2EE)。ME的意思是小型设备和嵌入系统。ME在翻盖手机上得到推广,成为当时的标配。Gosling说,“ME已经做得足够好了,在当时是最强大的智能电话开发平台。不过现在渐渐被遗忘,因为Android太耀眼了。”

    作为一个独立平台,Java ME被边缘化了。

    陷入低谷

    随着Sun在最近10年的低迷,Java也不能幸免地经历着蹉跎岁月。IBM报价65亿美元,Sun没答应,74亿美元,Oracle得到了Sun。

    在Oracle管理下,头几年Java表现良好,以0重大失误成为安全的代名词。

    在2013年1月情况开始变坏,美国土安全部(DHS)建议人们尽量不要使用Java。作为面向企业的软件公司,打补丁修复Bug的速度是Oracle的短板,根本无法与面向大众消费者的微软或Adobe相比。别人是以小时或天来计,而Oracle是以月为基本单位。

    Purdy认为Oracle已经尽了最大的努力去修补并清楚这个短板的重要性。问题的关键是如何打造一支能独当一面的团队。他说,“我们听到了不少质疑之声,但其实我们一直都在不断加入投入的力度并努力寻求解决的方案。”

    浴火重生

    DHS的公开声明不啻是压垮Java的最后一根稻草,很多人都预言Java将风光不再。然而事情慢慢得到转机,不少Java粉丝开始出来捍卫Java的名声。

    在Oracle接管Java的头五年,Oracle重新打造了一支Java开发团队。花了大量时间来审视整个过程以确定如何进行Bug修复,从输入到发布机制,回顾了大量的代码。最后列出了一个长长的错误修复表。

    安全曾让Java蒙羞,安全也让Java重获新生。在2014 Pwn20wn黑客大会上,Java成为唯一没有被攻破的平台。而在2015的会议中,Pwn20wn甚至没有把Java列在攻击名单上。

    未来趋势1 Java9的发布,形成更好复用性

    Java 9将是自被Oracle收购后发布的首个重大版本。Java 9的最主要目标是最大限度实现模块化以帮助人们实现积木式的应用编写。

    目的是帮助人们从JAR的束缚中解脱出来。该特性将贯穿整个Java库,并以单依赖图的方式重新整理依赖。

    Java 9会把所有三个Java开发平台统一起来,模块化特性会使得Java ME的可复用性得到增强,这将是反击Android和iOS的有力武器。

    新的APIs和性能特性:

    1、轻量级的JSON API

    2、HTTP 2Client支持HTTP 2.0和WebSockets,替代传统的HttpURLConnection

    3、Process API更新提升对操作系统进程的控制和管理

    此外还有一些小的特性和性能提升:

    1、Improvecontended locking,提升访问对象时的线程竞争处理

    2、Segmentedcode cache更好的性能、更短的扫描时间,更少的碎片

    3、Smart Java compiler,或者叫sjavac,用于更大项目的构建

    Java的本地接口也被重新作为Java Native Runtimeproject的一部分,将支持多GB堆和一个自调整的JVM。

    模块化的源码

    如果你对上述特性不感兴趣,Oracle还承诺modular source code,目的是重新组织JDK的源码,使之模块化,以及项目Jigsaw的结构化实现。

    未来趋势2 Java对物联网的支持越来越好

    为了进入物联网领域,Java升级了CLDC和Netbean,直接从J2ME升级到JavaME8。而在近期更是推出了一款非常精巧且可以运行Java语言的物联网模块:Cinterion EHS5,这款模块是专门为物联网而定制,运行功耗非常低,具备了完整的通讯模块与协议,不仅有着强大的云平台支持,而且可以用Eclipse编译并下载代码。作为Java向物联网进军的重要武器,Cinterion为开发者提供了大量强大的开发软件,让开发者能够方便迅速的把自己的想法变成实际的产品,其易用性令非计算机专业人士都可以轻松上手。

    虽然现在的Java技术还不能完全满足物联网发展的需求,但是物联网为Java带来了新的希望,让已经边缘化的J2ME再次看到了曙光,作为物联网中跨平台的解决方案,J2ME拥有着得天独厚的优势。Java的跨平台兼容性、为数众多的开发者群体、活跃的技术社区和“沙箱”模型等优点,都使得它成为了物联网应用开发平台的最佳选择。

    作为用户而言,大家都希望能将物联网应用采集到的大数据集成到企业的客户端系统,让这些数据变成企业的数据资源,输出到企业的ERP、CRM等管理系统之中,对此Oracle采取了端到端的战略,即Device to Datacenter,将采集到的大数据经过网关、云端存储,进入企业的大数据中心进行商业分析,生成事件并产生信号,再返回到终端上,改变终端的控制方式。

    未来趋势3 Spring框架在大量应用中升级到Spring 4

    Spring框架最初发布于2004年,距今已经过去10多年了。在过去的10年间,Spring随着Java的变迁也得到了长足的发展,从一开始的IoC与AOP框架到现在涵盖各个业务领域、各种技术场景的一站式服务平台。目前的Spring拥有众多子项目,如Spring Batch、Spring Data、Spring Mobile、Spring Boot、Spring Security等等,基本上针对各种业务场景都提供了相应的解决方案。

    有必要将系统升级到Spring 4的五个原因:

    使用Java 8进行更快的开发,Java 8发布于2014年,它是Java自1.5以来变化最大的一次升级。毫无疑问,你应该考虑将所用的JDK升级到Java 8。

    提升生产力,Spring的每一次发布都带来了大量的改进,这些改进可以简化我们的开发工作。

    与时俱进,Spring框架能与其他很多框架和第三方库共存,并且还可以将其集成进来。当使用了Spring 4后,其相应的依赖也会一并得到更新,这样就可以使用最新的库了。

    不再有JAR地狱的烦恼,由于升级依赖版本时可能会出现一些问题,这导致一些开发者不敢轻易尝试。不过,借助于Spring IO Platform,这些担忧都将烟消云散。

    做一个开心的程序员,很多开发者都喜欢使用最新的技术。将所用的框架升级到最新版会激发他们的生产力,他们也会因此学习到新的技术并改进自己的技能。

    未来趋势4 Java微框架逐步流行

    随着语言的成熟,每次发布都会增加一些库。时间一久,对于大部分项目而言,包含在这些库中的许多功能都不是它们真正需要的。微框架就是要解决这个问题,其思想是:创建一个专用而又灵活的解决方案,满足生产过程的基本需求。

    三种当前较为流行的Java微框架。

    Ninja是一个用于创建Web Service和应用程序的全栈Java微框架。它综合Play和Ruby on Rails的优点,并以纯Java格式提供。作为一个综合性软件栈,Ninja提供了大量开箱即用的功能,如JSON解析、HTML渲染,使得它简单易用。在扩展性方面,Ninja采用了无状态设计,只需要增加服务器就可以实现横向扩展。不过,内置大量功能和简单易用的代价是,用户选择减少,工具本身占用空间较大。总之,Ninja重新设计了Java框架,提供了简单、可扩展、易于使用的功能。

    Spark(注意不要同Apache Spark混淆)的设计初衷是,可以简单容易地创建REST API或Web应用程序。它是一个灵活、简洁的框架,大小只有1MB。Spark允许用户自己选择设计应用程序的模板引擎以及选择最适合他们项目的库,比如,HTML解析功能就有Freemarker、Mustaches、Velocity、Jade、Handlebars、Pebble或Water等选项可供选择,而且很少需要配置或样板文件。不过,灵活简单的代价是,用户可选的功能减少。总之,Spark剔除了许多Java的臃肿之物,提供了一个最小化的、灵活的Web框架。但由于精简程度较高,它缺少了一些功能,不适合用于大型Web应用程序的开发。

    Jodd是一个Java微框架、工具和公用程序的集合。所以,它同上面两个框架可能不具有直接可比性,比如,Spark可以作为Jodd的一个组件。Jodd的目标是减少许多Java工具和框架的空间占用,提高它们的速度,提供一个超级轻量级的框架和工具精选集合。Jodd中的每个库都是单独提供的,用户可以选择使用。这样一个提供若干功能的框架集合似乎与微框架背道而驰,但实际上,Jodd大小总共不过1.5MB。总之,Jodd是一个框架和工具的集合,用户可以对它们自由组合,形成自己的解决方案。但同时,这种灵活性也增加了使用的复杂度。

    未来趋势5 Java促进大数据的大发展

    没有Java,甚至不会有大数据的大发展,Hadoop本身就是用Java编写的。当你需要在运行MapReduce的服务器集群上发布新功能时,你需要进行动态的部署,而这正是Java所擅长的。

    大数据领域支持Java的主流开源工具:

    1. HDFS

    HDFS是Hadoop应用程序中主要的分布式储存系统, HDFS集群包含了一个NameNode(主节点),这个节点负责管理所有文件系统的元数据及存储了真实数据的DataNode(数据节点,可以有很多)。HDFS针对海量数据所设计,所以相比传统文件系统在大批量小文件上的优化,HDFS优化的则是对小批量大型文件的访问和存储。

    1. MapReduce

    Hadoop MapReduce是一个软件框架,用以轻松编写处理海量(TB级)数据的并行应用程序,以可靠和容错的方式连接大型集群中上万个节点(商用硬件)。

    1. HBase

    Apache HBase是Hadoop数据库,一个分布式、可扩展的大数据存储。它提供了大数据集上随机和实时的读/写访问,并针对了商用服务器集群上的大型表格做出优化——上百亿行,上千万列。其核心是Google Bigtable论文的开源实现,分布式列式存储。就像Bigtable利用GFS(Google File System)提供的分布式数据存储一样,它是Apache Hadoop在HDFS基础上提供的一个类Bigatable。

    1. Cassandra

    Apache Cassandra是一个高性能、可线性扩展、高有效性数据库,可以运行在商用硬件或云基础设施上打造完美的任务关键性数据平台。在横跨数据中心的复制中,Cassandra同类最佳,为用户提供更低的延时以及更可靠的灾难备份。通过log-structured update、反规范化和物化视图的强支持以及强大的内置缓存,Cassandra的数据模型提供了方便的二级索引(column indexe)。

    1. Hive

    Apache Hive是Hadoop的一个数据仓库系统,促进了数据的综述(将结构化的数据文件映射为一张数据库表)、即席查询以及存储在Hadoop兼容系统中的大型数据集分析。Hive提供完整的SQL查询功能——HiveQL语言,同时当使用这个语言表达一个逻辑变得低效和繁琐时,HiveQL还允许传统的Map/Reduce程序员使用自己定制的Mapper和Reducer。

    1. Pig

    Apache Pig是一个用于大型数据集分析的平台,它包含了一个用于数据分析应用的高级语言以及评估这些应用的基础设施。Pig应用的闪光特性在于它们的结构经得起大量的并行,也就是说让它们支撑起非常大的数据集。Pig的基础设施层包含了产生Map-Reduce任务的编译器。Pig的语言层当前包含了一个原生语言——Pig Latin,开发的初衷是易于编程和保证可扩展性。

    1. Chukwa

    Apache Chukwa是个开源的数据收集系统,用以监视大型分布系统。建立于HDFS和Map/Reduce框架之上,继承了Hadoop的可扩展性和稳定性。Chukwa同样包含了一个灵活和强大的工具包,用以显示、监视和分析结果,以保证数据的使用达到最佳效果。

    1. Ambari

    Apache Ambari是一个基于web的工具,用于配置、管理和监视Apache Hadoop集群,支持Hadoop HDFS,、Hadoop MapReduce、Hive、HCatalog,、HBase、ZooKeeper、Oozie、Pig和Sqoop。Ambari同样还提供了集群状况仪表盘,比如heatmaps和查看MapReduce、Pig、Hive应用程序的能力,以友好的用户界面对它们的性能特性进行诊断。

    1. ZooKeeper

    Apache ZooKeeper是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、命名服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

    1. Sqoop

    Sqoop是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库中数据导入Hadoop的HDFS中,也可以将HDFS中数据导入关系型数据库中。

    1. Oozie

    Apache Oozie是一个可扩展、可靠及可扩充的工作流调度系统,用以管理Hadoop作业。Oozie Workflow作业是活动的Directed Acyclical Graphs(DAGs)。Oozie Coordinator作业是由周期性的Oozie Workflow作业触发,周期一般决定于时间(频率)和数据可用性。Oozie与余下的Hadoop堆栈结合使用,开箱即用的支持多种类型Hadoop作业(比如:Java map-reduce、Streaming map-reduce、Pig、 Hive、Sqoop和Distcp)以及其它系统作业(比如Java程序和Shell脚本)。

    1. Mahout

    Apache Mahout是个可扩展的机器学习和数据挖掘库,当前Mahout支持主要的4个用例:

    推荐挖掘:搜集用户动作并以此给用户推荐可能喜欢的事物。

    聚集:收集文件并进行相关文件分组。

    分类:从现有的分类文档中学习,寻找文档中的相似特征,并为无标签的文档进行正确的归类。

    频繁项集挖掘:将一组项分组,并识别哪些个别项会经常一起出现。

    1. HCatalog

    Apache HCatalog是Hadoop建立数据的映射表和存储管理服务,它包括:

    提供一个共享模式和数据类型机制。

    提供一个抽象表,这样用户就不需要关注数据存储的方式和地址。

    为类似Pig、MapReduce及Hive这些数据处理工具提供互操作性。

    未来趋势6 Java嵌入式系统将进入黄金时代

    在1998或1999年的嵌入式系统研讨会上,由太阳微系统公司发布的轰轰烈烈的媒体活动。Java当时成为了研讨会的热门话题,巨幅Java标语飞扬在活动的现场。然而,随着2006年的结束,C/C++依然是硬件实时系统设计所采用的主要语言。最近的调查显示,人们仍然认为Java太大、太慢,不能满足各种实时约束的要求,不能执行低层次的操作,并且启动时间太长。

    为了矫正早期人们对Java形成的种种负面印象,现在是重新审视最新Java发展趋势的时候了。

    最近,洛克希德马丁公司已经采用Java来处理Aegis武器系统方面的可预测的性能,美国国家油井Varco正采用Java来管理机器人自动钻井,L-3 Communication公司的Telemetry-West部门选择Java来实现他们的实时数据采集系统,美国波音公司正利用Java来开发联合无人作战空中系统(J-UCAS)的X”45C计划。

    目前,以不同实现方案提出的各种标准已经准备就绪。Java硬实时(JSR-000001:Java实时规范)和安全紧要的(JSR 302:安全紧要的Java技术)标准目前正在发挥作用,并且各种产品几乎准备就绪推向市场,从而为这些新兴的标准带来生命力。

    这些产品当中,有些产品的性能可与C/C++媲美,具有低级器件访问和小的占位空间。此外,另外一些产品把大量Java标准版库的高生产率引入到嵌入式开发领域。所有这些产品都避免了C/C++编程所存在的错误高发的情况。

    而市场研究则显示,全球已经交付使用的嵌入式虚拟机的数量超过了1百万,并正以24.5%的复合年增长率发展。

    最终来看,从Java切入嵌入式系统的领地算起的大约5~7年之后,针对硬实时和深度嵌入式系统的Java产品已经呈现一片生机盎然的景象。针对嵌入式系统的Java有可能迎来它的黄金时代。

    展开全文
  • 没有Java,甚至不会有大数据的大发展,Hadoop本身就是用Java编写的。当你需要在运行MapReduce的服务器集群上发布新功能时,你需 要进行动态的部署,而这正是Java所擅长的。 大数据领域支持...
  • 2021 年 Java 相关技术的发展趋势 1. Java 版本 根据 JetBrains 公司的调查,我们发现,尽管时隔多年,但 Java 8 仍然是最受欢迎的 LTS(长期支持)版本,而且比例高达参访者的 70% 以上! 超好用的集成开发...
  • 大数据分析Java未来5年发展趋势 近些年的技术圈,单以计算机语言界来说,稳坐第一把太师椅的 Java “或将被取代”、迎接转折点、Java 项目工程师风光不再等言论不绝于耳。在焦虑的大环境下,所有人好像都看起来很...
  • 毕业展望未来 在这篇文章中,我们将发表一篇有关2019年Java开发趋势的综合文章。您是否知道Java自上世纪问世以来,现在已在100亿个设备上运行? 它是数十年来最受欢迎的编码语言,但是在最近几个月中,Java经历了...
  • 程序员的空缺总是强调需要了解一种特定的编程语言。 如此之多,以至于哪种语言技能最赚钱的... 在一个有用的信息图中,我们显示了一些最受欢迎的编程语言(包括Java)有多少空缺,Java平均年收入约为84,000美元。...
  • 在这篇文章中,我们将发表一篇有关2019年Java开发趋势的综合文章。您是否知道Java自上世纪问世以来,现在已在100亿个设备上运行 ? 它是数十年来最受欢迎的编码语言,但是在最近几个月中,Java经历了一些重要的变化...
  • 2021年Java发展前景?当今社会,软件产业已经充斥在我们工作和生活中的各种角落。Java开发语言一直以来都是世界上数一数二的开发语言,在整个互联网下也占了很大的份额。因此,作为开发软件的软件工程师成为最...
  • java发展前景 ppt

    2018-10-30 15:13:01
    java发展前景 ppt 一个简单的10几页的ppt,大概讲了一下java的概念还有发展前景,适用于宣讲java的情况。
  • 原标题:Java和Python哪个未来前景好?对于学习计算机专业的小伙伴,面对选课开始陷入Java和python的纠结中,从以后的发展来看,这两个编程语言肯定是要通吃的,但前期的学习,可以有一个侧重点,不如听听千锋的一些...
  • Java未来的应用前景

    千次阅读 2017-03-13 11:08:48
    Java未来的应用前景,从历史来看,Java技术自1995年问世以来,在我国的应用和开发也得到了迅速普及,总体来看,这些应用主要集中于企业应用开发。据有关单位调查显示,从开发领域的分布情况上看Web开发占了一半以上...
  • 本文由5月28日的中国Java开发者大会特约编撰。 Java一直位居编程语言的榜上首位,最近的排行榜显示的使用率又有大幅增长。这个20多年的语言在焕发第二春。 回首Java过去的20年,首先是经历了微机时代的兴与衰,...
  • 从事软件开发多年,java代码写得稍微多点,python只是在作为脚本处理一些数据的时候用到,不过从目前的编程语言的发展态势看,python的风头更加强劲一些,更加符合当前编程语言的发展趋势,而且现在人工智能的发展也...
  • 小编带你1分钟解读java大数据开发的就业前景及未来趋势,作为大数据岗位中的 “大熊猫”,大数据工程师的收入待遇可以说达到了同类的顶级。java大数据开发的就业前景及未来趋势会怎么样? “不参与大数据建设,10...
  • 很多的人想要学习Java,但是却又担心Java未来前景,但是很多人不明白互联网时代,瞬息万变。所以我们没办法去预测任何行业、任何职业未来十年会怎么样。只能说,只要互联网存在的任何一天,IT技术工程师就是一个...
  • 小编带你1分钟解读java大数据开发的就业前景及未来趋势,作为大数据岗位中的 “大熊猫”,大数据工程师的收入待遇可以说达到了同类的顶级。java大数据开发的就业前景及未来趋势会怎么样? “不参与大数据建设,10...
  • java本身是一门很好的语言,应用场景广泛,包括现在的大数据,就是被称为java大数据也不为过,人工智能同样要学java,不是java未来会往哪个方向发展,而是你自己的职业规划想往什么方向发展,哪怕你只是做传统的企业...
  • Java 技术书籍大全

    千次阅读 多人点赞 2019-08-11 20:38:49
    本文档目前已收录 277本 Java相关领域经典技术书籍,从初级开发者到资深架构师,涵盖 Java 从业者的各个阶段。 涵盖领域:Java入门书籍,Java基础及进阶书籍,框架与中间件,架构设计,设计模式,数学与算法,JVM...
  • Java几乎无处不在,无论在智能手机、台式机、游戏设备还是科学超级计算机上,处处都有Java的影子。全世界有数百万的Java程序员在开发基于Java的产品。 然而,如此激烈的竞争,意味着Java开发人员必须时刻保持领先...
  • 2020Java技术的最新趋势

    千次阅读 2019-12-23 16:45:57
    当前,计算机网站和应用程序的世界已经变得非常依赖Java,以至于大多数网站和应用程序都需要...显而易见,在过去的20年中,该软件一直在不断开发,并且仍在开发中,几乎每天都有崭新的趋势出现。印度的Java开发也已...
  • Java语言发展至今,面对发展势头迅猛又十分简单易学的python,以及各种层出不穷的高级语言,Java程序员的份额已经逐步下降,那它是否还能在未来保持领先的优势呢?本文就主要从Java语言所不擅长的领域,以及它在...
  • OpenCV3.2 Java图像处理视频学习教程

    千人学习 2017-09-04 18:08:38
    OpenCV3.2 Java图像处理视频培训课程:基于OpenCV新版本3.2.0详细讲述Java OpenCV图像处理部分内容,包括Mat对象使用、图像读写、 基于常用核心API讲述基本原理、使用方法、参数、代码演示、图像处理思路与流程讲授...
  • 在这篇文章中,我们将发表一篇有关2019年Java开发趋势的综合文章。您是否知道Java自上世纪问世以来,现在已在100亿个设备上运行 ? 它是数十年来最受欢迎的编码语言,但在最近几个月中,Java经历了一些重要的变化 。...
  • java grpc框架

    2018-10-15 00:15:48
    java grpc框架,未来趋势,非常适合java开发者使用;下载后,解压,直接install即可用,非常方便
  • 目前绝大部分的Java程序员都是处于增删改查的阶段,但是到了这个阶段后就应该考虑下一个层次的突破了,总不能做一辈子的crud吧… **以目前IT行业的发展趋势以及就业情况来看,**市场早已经不缺初级开发了,对于中...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 43,588
精华内容 17,435
关键字:

java未来的趋势

java 订阅