向Java致敬

作者: C语言学习圈1 | 来源:发表于2019-02-27 21:14 被阅读1次

    Java-bashing是一个流行的过去时期,我也不例外,但Java目前是许多措施的顶级编程语言。无论人们是否认为Java现在正在增长,停滞或死亡,我们必须承认Java已经真正彻底改革并且已经定义了我们所知道的XXI Century的编程。Java已经结合并为大众带来了大量有用的编程语言功能,这些功能以前只能单独使用或以各种小众语言提供。

    盗梦空间

    Java在20世纪90年代后期的出现被许多竞争所包围。Haskell,Delphi,Python,Ruby,JavaScript,Lua和PHP都是在那个时候开发的。Java正在努力成为“互动网络”的语言,但它最终失去了对JavaScript及其亲属的这场战争,尽管这场战争中Java最大的损失因为(现已解散)Flash而遭受损失。

    然而,Java在桌面应用程序开发中获得了强有力的立足点,并成为企业后端开发的首选语言。

    托管内存和桌面

    回想起来,Java桌面的兴起是合乎逻辑的。大型应用程序的开发始终依赖于(并且仍然依赖于)静态类型语言,以至于术语“动态类型语言”通常与“ 脚本语言 ” 的概念相混淆,并保留用于休闲,小规模,或快速周转的发展。

    Java当时最强大的桌面开发竞争对手是C ++和Delphi,而Java是游戏中唯一具有内存安全性和自动垃圾收集功能的语言。事实证明,这对于开发人员的工作效率至关重要,特别是对于当时流行的基于事件的UI风格。Java程序在大型团队中编写的错误更少。Java程序中的各种引用和与数组相关的故障通常更容易识别和排除故障。Java的这些安全功能在CPU和内存消耗方面并不是免费的,但它不是一个显示器,而是大型桌面应用程序的礼物。

    具有高级JIT的跨平台

    Java被编译为跨平台字节码,稍后在目标机器上执行。这为跨平台库和工具生态系统的开发提供了显着的优势,因为库作者不必担心每个当前和未来目标体系结构的编译,但他们仍然可以分发某种“二进制文件”,而不是资源。它对于通常是专有的业务/企业软件和库非常重要。

    字节码是当时使用的编程语言的常见做法,尽管通常会对性能造成很大的损害。然而,Java的执行很快从字节码解释发展到高级即时编译,到了广泛的算法性能与最先进的C ++优化器竞争的程度。这定义了Java 的真正普遍性。随着时间的推移,Java运行时库中用1.0版本用C / C ++编写的大多数核心算法都是用Java本身重写的,而不会丢失(并经常获得)性能。

    C / C ++世界中的配置文件引导优化仍然很难使用,但在Java世界中,随着HotSpot在世纪之交的引入,它基本上以无障碍的方式为大众提供,仅用于额外启动时间的成本。

    应用服务器和动态加载

    Java能够动态加载代码,同时维护丰富的面向对象的二进制兼容API,最初是为“交互式Web”设计的,但事实证明它对后端非常有用。术语“应用程序服务器”已成为“Java应用程序服务器”的同义词。应用程序服务器统治了后端世界,直到出现了向微服务架构转变的虚拟化和容器。

    对于现代观察者而言,Java在后端的立足点也是其跨平台产品的一个功能。Linux不是一个占主导地位的后端操作系统,而x86当时并不是一个占主导地位的处理器架构。有各种各样的,特别是在商业世界。没有REST,甚至刚刚引入了SOAP。在SOAP之前有CORBA,但它同样重,并且它现在没有像REST / JSON那样普及。因此,每当您必须与其他人的API集成时,通常意味着使用专有的第三方代码。

    在C / C ++世界中查找可在系统上使用的二进制文件总是非常麻烦。即使您可以说服您的业务合作伙伴为您的目标编译它们,任何错误都会不可避免地导致您的代码崩溃。Java的业务集成故事非常引人注目。

    IDE和重构

    正如我们所知,Java已经启用并创建了丰富的集成开发环境(IDE)。别误会我的意思。IDE之前已存在许多不同的语言,它们也用许多不同的语言编写。然而,IDE作为具有许多插件的大型桌面UI应用程序,从Java的静态类型,托管内存,动态代码加载和跨平台的组合中获益匪浅。现代IDE,如IntelliJ IDEA以及基于IntelliJ平台的其他产品,包含近1000万行代码和十多年的遗产。IDEA,Eclipse和Netbeans之间的XXI Century的大型“IDE战争”是在基于Java的桌面IDE之间进行的。这创建了一个反馈循环,Java IDE允许扩展开发,从而创建更复杂,功能更丰富的IDE。

    在世纪之交,Martin Fowler发表关于改进现有代码设计的重构书。它为软件开发人员的词汇添加了一个新词。IDE已经赶上并实施了全自动重构支持,最终彻底改变了软件编写的方式。曾经是这样的情况,你必须提前仔细考虑代码的细节和结构,因为未能预见到需要将某个逻辑提取到一个函数或一个类中,选择错误的名称或者其他一些抽象失败,会导致后来成本高昂,单调且完全无趣的返工。不再。通过IDE支持的重构,您可以开始以自上而下的方式编写代码,引入抽象并在发现需要时对其进行重命名。我要说这是XXI Century软件开发人员生产力的最大改进之一。

    Java的独特定位是通过纯粹的机会获得自动重构的最大好处。最初的Java语言设计不包括任何类型的宏系统或预处理器,因为它需要简单和跨平台。这些决定被证明是金,并使Java语言非常适合IDE中的安全和自动重构。

    总和大于零件

    它是所有那些“正确的东西”的组合,其中一些我已经提到过,它很快将Java推向编程语言中的黄金地段。其他语言试图复制Java的成功,例如微软的C#,它继承了几乎所有Java的优势。但是,它最初将其用户锁定在Microsoft平台上,未能认识到Java提供的跨平台功能的重要性。在其他一些方面,这是一个代价高昂的错误,需要花费数年时间才能实现,并且大大削弱了C#的潜力。

    底线

    软件开发格局正在发生变化。Java已经捕获并彻底改变的领域正在转变。桌面开发正在缩减为专业和企业软件,而大众市场消费者则非常依赖网络和移动应用程序。后端正在被微服务重塑。然而,Java及其生态系统不会很快变得无关紧要。此外,Java对软件工程的巨大影响将继续保留在未来某一天将主导该领域的语言中。

    人们可以认识到Java在几乎所有语言和生态系统中教给我们的课程,现在正在争夺现代世界的顶尖人才。以今天的基于JavaScript的Web应用程序及其基于Electron的亲属为例。你会看到几乎所有相同的成分都会在千禧年的桌面上推动Java的采用。Java万岁!、

    另外本人从事在线教育多年,将自己的资料整合建了一个公众号(yunxijava)对于有兴趣一起交流学习java,这里面有大神会给予解答,也会有许多的资源可以供大家学习分享,欢迎大家前来一起学习进步!

    相关文章

      网友评论

        本文标题:向Java致敬

        本文链接:https://www.haomeiwen.com/subject/hqyquqtx.html