Java的7大好处

news/2024/4/23 19:52:20/

Java 的 7 大优势

当 Sun Microsystems 在 1995 年发布 Java 语言环境白皮书时,他们列出了 Java 将给软件开发领域带来的以下 7 大好处:

  1. Java 简单而熟悉。
  2. Java是面向对象的。
  3. Java 是体系结构中立的。
  4. Java 健壮且安全。
  5. Java是多线程的。
  6. Java具有高性能。
  7. Java 是静态类型和编译的

注意1995 年最初关于 Java 的 7 大优势的白皮书实际上说“Java 是解释型和动态型”,但在 1997 年不再如此。相反,我们可以说它是“静态类型化和编译型”。

问题是,Java 的 7 大优势在今天是否仍然适用,就像它们在近 30 年前首次出现时一样适用?

 

Java很简单

与当时的竞争对手相比,Java 很简单,其中包括以下语言:

  • COBOL语言
  • C 和 C++
  • 视觉基础
  • PHP
  • 帕斯卡

自 90 年代中期以来,软件开发格局发生了巨大变化,Python、JavaScript、Rust 和 Go 在软件开发领域确立了地位。

幸运的是,Java 已经发展到可以与这些语言平起平坐,新特性使 Java 与 Python 和 Rust 一样简单易学。

  • JShell 使 Java 成为一种比 Python 更简单的脚本语言。
  • Lambda 和流使 Java 中的函数式编程比 Scala 或 Clojure 更容易。
  • 对独立应用程序的支持使 Java 比 C 或 C++ 更容易构建桌面应用程序。

此外,Replit 和 Onecompiler 等在线编译器使入门和学习 Java此外,Replit 和 Onecompiler 等在线编译器使入门和学习 Java变得异常容易。

Java 仍然是一种简单的编程语言,易于学习和高级使用。简单性仍然是 Java 的一个重要优势。

Java是面向对象的

面向对象的分析和设计 (OOA&D) 仍然是解决大型企业问题的最佳方法。Java 对其面向对象根源的承诺从未动摇过。

即使在今天,执行领域驱动设计并需要强大的面向对象编程语言的组织也会选择 Java。没有其他语言比 Java 更适合 OOA&D,也没有其他语言能使它更容易。

然而,近年来出现了从 OOA&D 转向函数式编程的趋势。然而,Java 也一直处于这一趋势的顶端。

Java 引入了 lambda 表达式、流和默认接口,使得 Java 同时支持函数式编程模型和面向对象模型。

因此,Java 不仅在 OOA&D 方面仍然相关,而且已经发展到支持函数式编程,这在今天与支持面向对象编程一样重要。

Java 是架构中立的

编写一次,随处运行是互联网早期 Java 开发人员的战斗口号。

Java 仍然是跨平台和架构中立的,但是这个特性在今天不像过去那样重要。

任何可以在 Docker 容器内运行的应用程序,包括用 PHP、Ruby、Python、Go 或 Rust 编写的任何应用程序,现在都是跨平台的,因为 Docker 容器可以在任何地方运行。

Java 的跨平台特性在 1995 年是 Java 的一个主要优势,但在今天它的意义并不那么深远。

 

Java 健壮且安全

Java 应用程序,无论是在客户端机器上运行还是在服务器上运行,都是高度安全和健壮的。Java 中的这种安全性和健壮性是通过以下方式提供的:

  • 源代码的编译时检查。
  • 字节码的动态运行时检查。
  • 删除指针和指针运算的使用。
  • 外部加载代码的命名空间隔离。
  • 执行在受限沙箱内进行。

Java 的这一优势继续让网络管理员和家庭用户相信他们运行的程序不太可能安装恶意软件或受到恶意攻击。

Java 的安全性和健壮性在今天和以往一样重要。

 

Java是多线程的

令人难以置信的强大、多核、多线程计算机在 90 年代初 Java 最初构想时还不是常态。

然而,从第一天开始,Java 就有一组内置的库,使多线程和并行性非常容易实现。

除了 Java 的多线程能力外,Java 还有一个极其强大的并发 API,它允许开发人员创建以多种方式利用多核计算机的程序。

将此与 Python 进行对比,Python 是一种垃圾收集器的限制阻止多线程应用程序超越单个处理器的语言。

Java 在 1996 年发布时是多线程的,这一事实具有前瞻性和大胆性。

如今,Java 的多线程特性和并发 API 使其有别于 Python、JavaScript 和 C# 等语言。

 

Java具有高性能

Java 应用程序在 JVM 上运行,JVM 是位于 CPU 和 Java 代码之间的抽象层。与任何抽象层一样,JVM 也会影响性能。

然而,考虑到优化垃圾收集、即时编译和内存管理所需的大量工作,Java 应用程序接近本机性能。

Java 程序的运行速度不如由 Rust 或 C++ 生成的接近金属的二进制文件,但它非常接近。当您考虑到 Java 的所有 7 大优势时,这种轻微的性能损失只是一个很小的代价。

Java 是解释型的和动态的

最初的 Java 白皮书承诺 Java 将被解释和动态化,以消除C 和 C++ 开发人员当时遭受的编译-链接-加载-测试-崩溃-调试循环。

该声明在 1994 年是正确的。如上所述,在 1997 年不再正确。

Java 现在是静态类型和编译的

Java 设计者在该语言的婴儿期早期就认识到,如果 Java 仍然是一种像 Python 或 JavaScript 那样的解释型语言,会对性能、多线程功能和源代码维护产生长期的负面影响。所以,他们转向了。

您可以将这种先见之明作为额外的一点添加到 Java 的 7 大优势列表中。如果语言的架构师在机会出现时看到改进语言的机会,他们会迅速适应。


http://www.ppmy.cn/news/46796.html

相关文章

哈希表题目:在系统中查找重复文件

文章目录 题目标题和出处难度题目描述要求示例数据范围进阶 解法思路和算法代码复杂度分析 进阶问题答案后记 题目 标题和出处 标题:在系统中查找重复文件 出处:609. 在系统中查找重复文件 难度 6 级 题目描述 要求 给定一个目录信息列表 paths…

入门神经网络——浅层神经网络

文章目录 一、基础知识1.浅层神经网络介绍2.浅层神经网络的正向传播3.反向传播 二、浅层神经网络代码实例 一、基础知识 1.浅层神经网络介绍 此次构件浅层神经网络,相比于单神经元,浅层神经网络拥有多个神经元,因此又可以称为多神经元网络&…

Ubuntu 自带截图工具快捷键盘

PrtSc – 获取整个屏幕的截图并保存到 Pictures 目录。 Shift PrtSc – 获取屏幕的某个区域截图并保存到 Pictures 目录。 Alt PrtSc –获取当前窗口的截图并保存到 Pictures 目录。 Ctrl PrtSc – 获取整个屏幕的截图并存放到剪贴板。 Shift Ctrl PrtSc – 获取屏幕的某个…

【消费战略】解读100个食品品牌丨王小卤 4年10亿爆品破局

爆品破局 王小卤的聚焦发展! 王小卤创建于 2016 年,与饮料行业的独角兽元气森林同年。 相较于元气森林的快速增长,王小卤历经 三年坎坷之路,直至 2019 年才踏上高增长的赛道,实现四年十亿的增长。 “所有的消费品都值得重新 做…

SSM框架MyBatis 三种分页查询 PageHlper的使用以及五个参数的简单解释

SSM框架MyBatis 三种简单的分页查询 1. 基础分页查询(环境在第一天的配置中有) mapper也就是dao //查询总数Select("select count(*) from book;")int selectCount();//分页查询Select("select * from book limit #{currpage},#{size}&q…

KD2684S电机匝间耐电压测试仪

一、产品简介 试验仪适用于电机、变压器、电器线圈等这些由漆包线绕制的产品。因漆包线的绝缘涂敷层本身存在着质量问题,以及在绕线、嵌线、刮线、接头端部整形、绝缘浸漆、装配等工序工艺中不慎而引起绝缘层的损伤等,都会造成线圈层间或匝间绝缘层的绝缘…

NIFI从MySql中离线读取数据再导入到MySql中_03_来吧用NIFI实现_数据分页获取功能---大数据之Nifi工作笔记0038

之前使用querydatabasetable处理器来获取mysql中的数据,我们只能写死一个sql的查询语句,但是 实际引用环境中,我们的一张mysql的表,可能有上千万的数据,那么,不可能,我们把sql查询语句写死,这样一次性如果获取所有数据,那么压力太大了,我们怎么弄呢?找了很久没有找到相关教程…

Java 8 中使用 Lambda 表达式和 Stream API 解决 LeetCode 的两数之和问题

Java 8 中使用 Lambda 表达式和 Stream API 解决 LeetCode 的两数之和问题 当我们在面对一个数列,需要查找其中两个元素的和为给定目标值时,可以使用两数之和(Two Sum)问题来解决。这个问题在 LeetCode 上有很高的重要性和普遍性&…

机器人提示词工程师 Robotics Prompt Engineer

还没毕业,在校学习的各项技能都已经没用了,也别急着焦虑和忧伤,工业时代到信息时代,信息时代到智能时代,换代对每个普通人都是非常具有挑战性的,也是新一轮洗牌的开始。 机器人提示词工程师的核心竞争力包括…

3.3 二维随机变量条件分布

学习目标: 要学习二维随机变量的条件分布,我可能会采取以下步骤: 复习边缘分布和联合分布:首先需要了解二维随机变量的边缘分布和联合分布的概念以及相应的公式。 复习条件概率:学习条件概率的定义和计算公式&#x…

nodegui搭建/你好/打包

0、github连接问题 警告:如果你的网络有任何有任何有任何有任何有任何有任何有任何有任何有任何有任何连接 github 的问题,彻底放弃该框架 请转到其他框架 electron-egg教程、electron-egg官网,或其他electron项目 Tauri教程、Tauri官网 NW.…

【python零碎】

1. 拼接字符中,插入变量 >>> shepherd "Mary" >>> age 32 >>> stuff_in_string "Shepherd {} is {} years old.".format(shepherd, age) >>> print(stuff_in_string) Shepherd Mary is 32 years old. &…

2.3 连续性随机变量

思维导图: 学习目标: 我会按照以下步骤学习连续型随机变量: 复习概率论的基础知识,包括概率、期望、方差等概念和公式,以及离散型随机变量的概率分布函数和概率质量函数的概念和性质。 学习连续型随机变量的概念和性…

【Android安全】Soot 静态分析教程

参考教程 https://github.com/noidsirius/SootTutorial Windows Soot 环境配置 下载代码 git 拷贝仓库 git init git clone https://github.com/noidsirius/SootTutorial.git ./gradlew.bat build 报错:Unsupported class file major version 57 ./gradlew.b…

编译预处理:#if

用法 #if <expression> … #elif … #end <expression> 是整数常量比较的表达式&#xff0c;例如&#xff1a; defined表达式&#xff0c;例如 defined AAA, 或者 defined(AAA), 如果AAA是一个宏定义&#xff0c;return true&#xff0c;否则&#xff0c;return…

2023年全国最新安全员精选真题及答案55

百分百题库提供安全员考试试题、建筑安全员考试预测题、建筑安全员ABC考试真题、安全员证考试题库等&#xff0c;提供在线做题刷题&#xff0c;在线模拟考试&#xff0c;助你考试轻松过关。 81.&#xff08;单选题&#xff09;扣件式钢管模板支架的剪刀撑应用旋转扣件进行固定&…

HTML—javaEE

文章目录 1.认识HTML2.HTML标签的使用2.1注释2.2标题2.3段落2.4换行2.5字体加粗、斜体字、删除线、下划线2.6图片2.7超链接2.8表格2.9列表2.10表单标签2.11div2.12span 3.HTML特殊符号 1.认识HTML &#xff08;1&#xff09;HTML是网页的编程语言&#xff0c;文件的内容主要由…

lamp 架构的搭建

php 解释动态页面 php来连接数据库 mysql 页面信息和端口信息 存放数据 apache 前端web服务器&#xff0c;展现页面 源码编译安装这三个服务 配置下载apache: systemctl stop firewalld 关闭安全机制&#xff0c;防火墙 可以一条命令:systemctl is-enabled firewalld 和 s…

计组2.3——浮点数的表示和运算

计组2.3 浮点数 #mermaid-svg-hwjyO2bt7hFXy1eD {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-hwjyO2bt7hFXy1eD .error-icon{fill:#552222;}#mermaid-svg-hwjyO2bt7hFXy1eD .error-text{fill:#552222;stroke:#552…

Python Web 深度学习实用指南:第三部分

原文&#xff1a;Hands-On Python Deep Learning for the Web 协议&#xff1a;CC BY-NC-SA 4.0 译者&#xff1a;飞龙 本文来自【ApacheCN 深度学习 译文集】&#xff0c;采用译后编辑&#xff08;MTPE&#xff09;流程来尽可能提升效率。 不要担心自己的形象&#xff0c;只关…