Java 仍然是当今最具影响力的编程语言之一。它只是最近才从 GitHub 上使用量第二的编程语言降至第三。编程语言。您可能会说使用量并非一切,但 Java 仍然很受欢迎。根据 Stack Overflow 2019 年开发者调查结果,Java 是第五大最受欢迎的编程语言。它于 1998 年首次公开发布,并且在经历了这么长时间后,仍然在使用率和受欢迎程度方面名列前茅。造成这一事实的一个重要原因是,自发布以来,Java 已经发展和演变了很多。作为一种强类型语言,Java 继续推动面向对象编程 (OOP) 范例的发展,并不断用于实现新的概念和技术。
为了证明其持续的受欢迎程度,Opensource.com 发表了许多关于该语言的优秀文章。以下七篇是 Opensource.com 2019 年阅读量最高的 Java 文章。
什么是 Java 中的对象?
Chris Hermansen 在《什么是 Java 中的对象?》一文中深入探讨了 OOP 范例及其对 Java 开发的重要性。OOP 基于数据和程序都应被视为“对象”的理念。每个对象都有属性和行为,用于描述它在程序中的使用方式。
有许多原则定义了 OOP 及其在编程各个方面对对象的使用。这些原则包括:
- 继承: 这是分层使用对象,用于从父对象到子对象变异和重用对象属性和行为。
- 类型: 静态和强类型表示在编译时,类型应被定义且恒定,除非显式转换或更改,这有助于调试和一致的功能。
- 类和原始类型: 在 OOP 语言中原生实现的对象称为“原始类型”,包括 int、long 等;但是,使用类声明并通过将属性和行为分配给原始类型而设计和实现的对象称为类。
- Object 类: 在 Java 中,Object 类是所有类都继承的父类。它允许使用基本函数和属性,包括比较和 hashCode 功能。
总而言之,对象是 Java 开发的基础,Chris 在他的深度文章中对此进行了阐述。
什么是 Java 构造函数?
作为对 Chris Hermansen Java 对象概述的绝佳后续,我建议阅读《什么是 Java 构造函数?》。构造函数是在 OOP 和 Java 领域工作时需要理解的重要概念,Seth Kenlon 在这篇易于理解的指南中介绍了它。Java(和大多数 OOP 语言)中的构造函数是您实例化或创建您已定义对象的实例的地方。在许多语言中,实例是使用 new 关键字和您要创建的对象创建的。例如,Dog fluffy = new Dog(); 将创建一个新的 Dog 实例。构造函数还可以在您正在实例化的对象中设置属性;因此,如果您有一个构造函数的实现来设置对象的大小、高度和类型,您可以从构造函数中设置所有这些属性。默认情况下,Java 允许使用 new 关键字实例化对象,而无需定义显式构造函数,并在编译时创建它们。
在 Java 中初始化数组
数组是一种历史悠久的数据结构,起源于早期的数学概念。在计算机科学中,正如 Chris Hermansen 在《在 Java 中初始化数组》中所说,它代表“……一块连续的内存,其中每个位置都是某种类型”,可以是任何类型——从原始类型(int、long 等)到自定义对象(Dog、Cat、Car)。数组使用特定类型的构造函数初始化,该构造函数保留数组的固定长度;换句话说,它是数组保留的已定义内存量。它看起来像这样:int[] a = new int[15]。与实例化新对象非常相似,数组在形式和功能上都很相似。此外,由于数组继承自 Object 类,因此它们可以利用与 Object 类关联的方法和属性,包括 GetClass()。
除了简单数组之外,Java 默认还实现了 ArrayLists 和 Map 对象。这两种集合类型都允许动态添加或删除元素;无需手动设置每个元素的大小。ArrayList 允许在代码运行时动态添加、检索和删除元素。这些列表必须是一种类型,在实例化时定义。Map 允许创建字典对象,这意味着每个索引或“键”都连接到另一个对象。例如,Map<string, Integer> scores = new Map<String, Integer>() 允许您插入学生的成绩,键是他们的姓名,使用 scores.put("Stephon", 50)。数组、ArrayLists 和 Maps 是在 Java 应用程序中存储、检索和操作数据的绝佳方法。
Java 开发人员区块链入门
区块链是密码学、计算机科学、加密货币和许多其他领域的融合。它是比特币和其他加密货币的核心技术,但它可以独立存在,并且与其他概念结合使用时功能强大。正如 Bilgin Ibrayam 在《Java 开发人员区块链入门》中所写,“大多数人熟悉的技术,例如 Java、.NET 和关系数据库,在区块链领域并不常见;相反,区块链主要由服务器端的 C、Go 和 Rust 以及客户端的 JavaScript 占据主导地位。”但是,这不应阻止您使用 Java 开发区块链项目,Ibrayam 提供了七种基于 Java 的开源技术,这些技术利用 Java 语言和 Java 虚拟机 (JVM) 进行区块链开发。
他介绍的七种技术是:Corda,一种以业务为中心的区块链技术,专注于构建智能合约以处理和简化链上的业务交易;Hyperledger 的 Pantheon(或 Besu),一个以太坊客户端,支持使用私有和公共网络,旨在向 Java 开发人员介绍区块链开发;Bitcoinj,比特币协议的 Java 实现,允许在没有 Bitcoin Core 的情况下使用钱包和交易;Web3j,一个轻量级的以太坊客户端,为 Android 和 Java 智能合约开发都提供了实现;Hyperledger Fabric SDK,一个完整的解决方案,用于构建和为本地化或分布式区块链提供安全性;FundRequest,一个去中心化平台/市场,支持请求开源工作,并且完全在以太坊网络之上用 Java 实现;以及 Eventeum,它允许监控以太坊网络并将事件及其详细信息存储在 Kafka 或 RabbitMQ 等消息服务器上。
给 Java 新开发人员的 7 个技巧
在学习一门新语言时,总会遇到障碍,无论是语法差异还是整个开发范式的转变。Seth Kenlon 提供了《给 Java 新开发人员的 7 个技巧》,重点介绍了在深入 Java 编程时需要注意的事项。安装 Java 和 Java 开发工具包 (JDK) 是 Java 开发的第一步。大多数计算机可能已经安装了 Java 和 JVM,但您需要 JDK 才能开始编程。
简而言之,Seth 的技巧是:
- 大多数其他语言允许导入和导出库或您在开发项目时可能需要的其他代码。Java 包是需要管理的外部或内部库。包按命名空间分隔和组织,命名空间就像用于组织代码的存储桶。
- 包使用 import 的简单语法以及库的命名空间导入。
- 声明类允许您在程序中创建对象。这些类可以使用不同的访问修饰符;在类中是属性和方法或函数,它们也可以具有访问修饰符,用于定义它们是否只能在类内部使用、在具有继承类的类外部使用或被任何其他类使用。
- 类修饰符 Static 允许使用属性或函数,而无需实例化或创建对象的实例。
- 代码最终会出现错误;这是不可避免的。“Try and catch”流控制允许您捕获错误和异常,并实现恢复和日志记录机制。
- 要在集成开发环境 (IDE)(如 Netbeans 或 Eclipse)之外运行 Java 应用程序,请从命令行导航到您的 Java 项目文件夹,然后键入 java <文件名.java>,或者,如果应用程序已编译为 .jar 文件,则键入 java -jar <文件名.jar>。
使用 Java 持久性 API
《使用 Java 持久性 API》(JPA) 是我将 Java 连接到各种数据持久性解决方案的入门,无论它们是关系型、NoSQL 还是系统中的基本文件表示形式。Java 提供了一个广泛的接口,允许连接到任何类型的持久性解决方案。本教程将引导您使用常用库创建应用程序,包括 Spring Boot(一个用于在 Java 中快速配置应用程序的模块/模板);Maven(Java 的包管理器);Lombok(一个简化定义对象访问器/修改器的库);以及 Netbeans(一个流行的 Java 开发 IDE)。
本教程使用这些库为虚构的自行车商店数据库创建模型。模型的访问器/修改器使用 Lombok 定义,并提供在持久化到选定数据库时使用的数据注释。然后,通过 application.properties 文件设置和配置数据库,JPA 读取该文件以连接和持久化数据。持久化和获取实现主要使用 Spring 框架 для Mongo 完成;但是,您也可以覆盖函数,以便在查找、更新或持久化对象时更好地控制应获取的内容。在几分钟内,您将能够定义对象并在本地数据库上调用基本函数,而无需太多样板代码。
如何在 Java 中比较字符串
灵活性通常被认为是礼物,虽然静态类型语言和动态类型语言之间存在权衡,但 Java 的优势之一是它比较类型和类型相等性的能力。事实上,Girish Managoli 在《如何在 Java 中比较字符串》中解释说,在 Java 中有六种不同的方法来比较不可变的字符串类型。
双等号运算符 (==) 比较内存位置而不是字符串内容。当编译器看到两个相等的字符串时,它会为两者分配相同的内存。如果实例化一个新字符串,它将不共享相同的内存位置或对象引用。
equals 方法比较字符串区分大小写的内容,而不是对象信息。例如,如果您使用 equals 比较 Dog 和 Dog,即使它们是两个不同的对象,结果也将为 true;但是,dog 和 Dog 将为 false,因为该函数区分大小写。equalsIgnoreCase 函数与 equals 相同,只是它删除了大小写敏感性;因此,比较 dog 和 Dog 将为 true。compareTo 和 compareToIgnoreCase 函数基于字符串中每个字符的 Unicode 值比较字符串;它们将总值与另一个字符串进行比较,并返回两者之间的总词汇值差异(分别区分大小写和不区分大小写)。最后但并非最不重要的一点是,Objects equals 函数允许比较两个字符串对象引用和空值。
Java:仍在发展和演变
Java 仍然在蓬勃发展、不断演变并在经历了这么长时间后保持相关性,并且对其增长仍然持乐观态度。自发布以来,Java 平台一直在与时俱进地变化,从 OpenJDK 到发布时间表更改,并突破了您可以使用它完成的任务的界限。
正如您从 Opensource.com 2019 年的顶级 Java 文章中看到的那样,了解这门语言永远不会有坏处,因为您永远不知道在哪里可以使用它来完成您的下一个项目。对于我这个从高等教育转型而来的新开发人员来说,这些(以及其他)Opensource.com 文章真的很有帮助。我期待在 2020 年阅读和分享更多内容,我希望您也能加入我。
评论已关闭。