为什么我使用Java

 2023-09-18 阅读 29 评论 0

摘要:我相信我是在1997年开始使用Java的,那是在Java 1.1逐渐消失的不久之后。 从那时起,总的来说,我真的很喜欢Java编程。 尽管我承认这几天,但我发现使用Java编写Groovy脚本的可能性很“严重”。 来自FORTRAN , PL / 1 , Pascal ÿ

我相信我是在1997年开始使用Java的,那是在Java 1.1逐渐消失的不久之后。 从那时起,总的来说,我真的很喜欢Java编程。 尽管我承认这几天,但我发现使用Java编写Groovy脚本的可能性很“严重”。

来自FORTRAN , PL / 1 , Pascal ,最后是C的背景知识,我发现了很多喜欢Java的东西。 Java是我对面向对象程序设计的第一笔重要的动手经验。 到那时,我已经进行了大约20年的编程工作,可以肯定地说我对什么重要和什么没什么有了一些想法。

调试为主要语言功能

java找不到合适的方法、 我真的很讨厌浪费时间去追踪因我的代码不小心迭代数组末尾而导致的晦涩错误,尤其是在IBM大型机上使用FORTRAN进行编程的年代。 另一个不时出现的细微问题是调用带有四个字节整数参数的子例程,该子例程期望两个字节。 在小型字节序的体系结构上,这通常是一个良性错误,但是在大型字节序的计算机上,前两个字节的值通常(但不总是)为零。

在该批处理环境中进行调试也很尴尬-遍历核心转储或插入打印语句,这些语句本身可能会移动错误,甚至使其消失。

因此,我对Pascal的早期经验(首先是在MTS上 ,然后在IBM OS / VS1上使用相同的MTS编译器)使我的生活变得更加轻松。 Pascal的强类型和静态类型是赢得胜利的重要部分,而且我使用的每个Pascal编译器都会在数组范围和范围上插入运行时检查,因此会在发生时检测到错误。 当我们在1980年代初将大部分工作移至Unix系统时,移植Pascal代码是一项简单的任务。

找到适量的语法

Java打开、 但是对于我喜欢Pascal的所有事情,我的代码都很冗长,而且语法似乎倾向于使代码有些晦涩。 例如,使用:

 if … then begin … end else … end 

代替:

 if (…) { … } else { … } 

用C和类似语言编写。 另外,在Pascal中有些事情很难做,而在C语言中则要容易得多。但是,随着我越来越多地使用C语言,我发现自己遇到了与FORTRAN中曾经犯过的同样的错误-逃跑了例如,数组的末尾-在原始错误时未检测到,仅通过程序执行后期的不利影响才检测到。 幸运的是,我不再生活在批处理环境中,并且拥有出色的调试工具。 尽管如此,C还是给了我太多灵活性,这对我自己来说是个好机会。

Java中的方法、 当我发现awk时 ,发现对C有一个很好的对立面。那时,我的很多工作都涉及转换字段数据和创建报告。 我发现使用awk以及其他Unix命令行工具,例如sort,sed,cut,join,paste,comm等,可以实现惊人的数量。 本质上,这些工具为我提供了类似文本文件的关系数据库管理器之类的东西,这些文件具有面向列的结构,这就是我们很多字段数据的输入方式。或者,如果不是完全采用这种格式,大多数数据可以从关系数据库或某种二进制格式卸载到面向列的结构中。

awk支持的字符串处理, 正则表达式和关联数组 ,以及awk的基本性质(它实际上是一个数据转换管道),非常适合我的需求。 当遇到二进制数据文件,复杂的数据结构以及绝对的性能需求时,我仍然会选择使用C语言。 但是随着我越来越多地使用awk,我发现C的非常基本的字符串支持越来越令人沮丧。 随着时间的流逝,越来越多的情况下,我只会在需要时才使用C,并且在其余时间可能过度使用aw。

Java是正确的抽象层

然后出现了Java。 它看起来非常不错-相对简洁的语法让人联想到C,或者至少比Pascal或其他任何较早的经验更使人联想。 它是强类型的,因此在编译时会捕获很多编程错误。 似乎并不需要太多的面向对象的学习,这是一件好事,因为当时我对OOP设计模式几乎不熟悉。 但是即使在最早期,我也喜欢其简化继承模型背后的想法。 (Java允许单继承与提供的接口在某种程度上丰富了范例。)

Java怎么编译、 而且它似乎带有一个功能丰富的库(“包含电池”的概念),可以在正确的级别上工作以直接满足我的需求。 最后,我发现自己很快就喜欢将数据和行为归为一组的想法。 这似乎是一种显式控制数据之间交互的好方法,比庞大的参数列表或对全局变量的不受控制的访问要好得多。

从那时起,Java成为我编程工具箱中的Helvetic军刀。 我仍然偶尔会用awk编写东西,或者使用Linux命令行实用程序(例如cut,sort或sed),它们显然是解决当前问题的直接方法。 我怀疑在过去20年中是否写过50行C。 Java已完全取代C满足我的需求。

此外,Java一直在不断改进。 首先,它变得更加高效。 并且增加了一些非常有用的功能,例如try resources ,可以很好地清除处理文件I / O过程中处理错误的冗长且有些混乱的代码。 或lambdas ,提供了声明函数并将其作为参数传递的能力,而不是旧的方法,后者需要创建类或接口来“托管”这些函数; 或流 ,它们将迭代行为封装在函数中,从而创建了以链式函数调用形式实现的高效数据转换管道。

Java越来越好

许多语言设计师已经研究了从根本上改善Java体验的方法。 对我来说,其中大多数还没有引起人们的兴趣。 再次,这更多地反映了我的典型工作流程,而(更多)则是这些语言所带来功能的功能。 但是这些进化步骤之一已经成为我的编程工具中不可缺少的一部分: Groovy 。 当我遇到需要小解决方案的小问题时,Groovy已成为我的首选解决方案。 而且,它与Java高度兼容。 对我来说,Groovy填补了Python在很多其他人身上占据的同一个优势–它紧凑,DRY(不要重复自己),并且表现力强(列表和字典具有完整的语言支持)。 我还利用Grails ,它使用Groovy为非常高性能和有用的Java Web应用程序提供了简化的Web框架。

但是Java仍然是开源的吗?

最近,对OpenJDK的日益增长的支持进一步提高了我对Java的舒适度。 许多公司以各种方式支持OpenJDK,包括AdoptOpenJDK,Amazon和Red Hat 。 在我的一个较大的长期项目中,我们使用AdoptOpenJDK 在多个桌面平台上生成自定义的运行时 。

有没有比Java更好的语言? 我确定有,取决于您的工作需要。 但是我仍然是一个非常高兴的Java用户,而且我还没有看到任何威胁将我退缩的东西。

翻译自: https://opensource.com/article/19/9/why-i-use-java

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/2/72887.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息