1、语言特性。相对来说比较稳定,学习成本较低,从java1.5、1.6、java8,语法变化不大,原来的写法一直是兼容的,不像nodejs、python换一个版本区别太大、依赖库也变化太大。

2、开发环境。开发环境很成熟,各种开发工具、框架、类库、jar包很齐全。

3、运行环境。各种容器,很容易获得,或用打包工具打成一个jar,基本上只依赖于几个M的一个jre,很轻量级,当然和go这样完全编译成一个exe的话言相比,运行环境略重。

4、应用生态。如果开发企业应用软件或行业软件,大部分得用java,虽然java虚拟机有点吃内存,对CPU占用也高,但现在基本上用k8s等容器管理应用,动态扩容,对机器的要求可忽略不计。用的人多,知识容易获得。

C++ 之父 Bjarne Stroustrup 说:“世界上只有两种语言,一种饱受诟病,另一种没人使用。” 作为一门十多年来经久不衰的语言,Java 难免会饱受诟病。

但是,正如 Java 之父 James Gosling 在 The Feel of Java 中所说的那样:

“Java 是一门蓝领语言。它不是博士学位论文的材料,而是用于工作的语言。”

现实情况也是这样,Java 已经被大量的公司大规模使用:Google、Amazon、Netflix、Alibaba、Baidu、Tencent、ByteDance等。

Java 拥有良好的生态,拥有大量第三方库以及企业级框架。例如,在 Web 服务器方面,有 Apache Tomcat 、Eclipse Jetty 这样的被广泛使用的成熟项目;在大数据领域,Apache Hadoop、Apache Spark、Apache Kafka 等优秀项目都是使用 Java 开发的;在 Web 应用中,Spring MVC、Spring Boot、Spring Cloud 这样框架已经被大量企业大规模使用。

语言的生态显然是极其重要的,在软件工程领域,复用是一个重要的思想,绝大多数软件开发者都必须站在巨人的肩膀上,借助前人写好的“轮子”,来快速可靠地组装自己想要实现的那辆“汽车”

Java 是一门有着 20 多年历史的编程语言,或许有人会对 Java 嗤之以鼻,认为 Java 太过陈旧、太过笨重、已经不值得深入学习了。实际上,并不是这样的,无论你学或不学,Java 一直都站在那;无论你关心或不关心,Java 也一直在发展。

从 Java 诞生之初到今天,世界上已经有太多的语言变得不再流行了,例如:Pascal、Delphi、COBOL、Ada。但是,Java 不仅活了下来,而且成功地抢占了编程生态系统中的大片位置。

有句俗语叫做:“富不过三代。”Java 能取得今天的成就,固然与先天的优势有关,但更与后天的努力密不可分。例如,Java 5 引入的注解极大地简化了开发工作,使得依赖注入成为了可能;Java 7 中添加了 Fork/Join 框架,使得加速处理大型任务更加容易;Java 8 引入的 lambda 表达式和 Stream API 使得程序员们能够书写更简洁的代码、更容易地实现并行;Java 14 更引入了 Records 特性,让开发人员不用再编写大量的 POJO (Plain Ordinary Java Object),也不必再借助 Lombok 或者 IDE 自动生成这些机械化的代码。

同时,Java 带给人的那种“一字一板”的感觉,在软件工程领域也是非常重要的。

对于大多数开发者来说,阅读代码的时间会比写代码的时间多得多。我们不是在读自己写的代码的路上,就是在读别人写的代码的路上。Java 这种“一字一板”的语言,所带来的可读性,能够帮助我们更快地理解代码的意图,更快地去修改代码。毕竟,有时候太过简洁,写的时候可能很舒服,但会给后续的维护埋下太多的坑;而太过啰嗦,语法密度太高,又会使人摸不着头脑。所以,Java 是一门比较适合企业级大规模使用的语言。

java是否过于笨重?相关推荐

  1. 解决uni-app创建的H5项目只使用v-loading,避免引入element-ui过于笨重问题

    1.准备loading.js import Vue from 'vue'/*** 插入loading*/ const insertDom = (el) => {let dom =`<div ...

  2. java中的console是干什么的_[Java教程]javascript中,你真的会用console吗?

    [Java教程]javascript中,你真的会用console吗? 0 2015-08-11 17:00:09 使用console进行性能测试和计算代码运行时间 对于前端开发人员,在开发过程中经常需 ...

  3. P3-weixin-2.0.1 版本发布,JAVA微信插件框架

    P3-weixin-2.0.1版本发布(JAVA微信插件框架) P3-Weixin是轻量级Java插件开发框架,采用主流JAVA技术,集成强大代码生成器,增删改查一键生成,封装统一后台管理系统,不仅适 ...

  4. Java 并发编程阅读笔记

    第一章 原子性 可见性 有序性 1.1原子性 即某个正在执行的操作不能中断,不能被分割,要么就不执行,要么就执行完毕. 正如我们所知道的synchronized代码块,这块里面的东西要么就是被执行完毕 ...

  5. 轻量级java snmp设备网管软件开发技术

    Java技术,在网络管理系统中的应用已经比较普遍.网管软件的分类有很多种,有侧重于业务应用的,有侧重于管理设备的,有侧重于网络的,有侧重于桌面管理的,每种网管软件虽然外在的具体表现形式都不同,但其实内 ...

  6. JAVA数组去重方法

    记录JAVA中数组去重方法 1利用Set的特性去重复 Set set = new HasSet();for (int x=0 ; x<arr.length ; x++){set.add(arr[ ...

  7. Java开发 - 不知道算不算详细的JUC详解

    前言 大概有快两周没有发文了,这段时间不断的充实自己,算算时间,也到了该收获的时候,今天带来一篇JUC详解,但说实话,我也不敢自信它详不详细.JUC说白了就是多线程,学Java不久的人知道多线程,恐怕 ...

  8. Java Web之Servlet入门

    Java Web之Servlet入门 ​ 上世纪90年代,随着Internet和浏览器的飞速发展,基于浏览器的B/S模式变得火爆起来. 最初,用户使用浏览器向WEB服务器发送的请求都是请求静态的资源, ...

  9. 微服务:Java EE的拯救者还是掘墓人?

    有人认为,微服务的大行其道是在给Java EE下达死刑判决书.也有人认为,Java EE已死的论调可笑至极.读者朋友,你们怎么看? 引言 有人说,Java确实过于臃肿,经常"小题大做&quo ...

最新文章

  1. leetcode-21 合并两个有序链表
  2. 以太坊经典逆势上涨,行情能否继续?
  3. VTK:绘图之HistogramBarChart
  4. nagios监控单网卡双IP
  5. mysql默认值无效_MySQL开发规范
  6. 英伟达:今年显卡将继续供不应求 尽量保证供应普通玩家
  7. malloc()与 alloc()区别(转)
  8. 为什么工程师要掌握FPGA开发知识?
  9. Windows server 2008文件服务器之一隐藏用户无权限访问的共享文件夹
  10. URDGN:Ultra-resolve Face Images by Discriminative Generative Networks
  11. redhat 完全卸载mysql_Linux下彻底卸载mysql数据库
  12. qcow2文件的snapshot管理
  13. Lua IDE - x-studio 强大的IDE
  14. Unity3D 模型大小,面数,贴图大小,骨骼数量规范(一)
  15. Java遍历list集合转换成PDF
  16. 【容器化】浅析容器化以及容器编排
  17. 什么叫html格式化,format是什么意思 格式化自己,只为删除你???
  18. 记第七届ACM校赛-回忆
  19. [原创]FineUI秘密花园(六) — 表单控件
  20. android-恢复出厂设置

热门文章

  1. 单目、二目、三目运算符
  2. 我爬取豆瓣影评,告诉你《复仇者联盟3》在讲什么?
  3. 如何下载原生纯净的Windows系统?(MSDN)
  4. c++游戏别踩白块课程设计
  5. 从零开始设计RISC-V处理器——单周期处理器的设计
  6. CSS flex-direction用法解释
  7. Excel技巧大杂烩
  8. C++和Rust_自从尝了Rust,Java突然不香了
  9. 那一天,我闭目在经殿的香雾中
  10. 大型项目的管理(学习)