教妹学Java(三):Java 为什么如此流行?
小伙伴们,大家好,我是沉默王二,一枚沉默但有趣的程序员。这是《教妹学 Java》专栏的第三篇文章,我们来谈谈“Java 为什么如此流行?”
我准备了 51 本 Java 必读电子书和 7 张高清 Java 工程师进阶之路思维导图,微信搜索“沉默王二”回复关键字“Java”,即可免费获取。
发第一篇文章的时候,就有小伙伴留言说,“教妹学”很适合她,虽然最后有个“狗头”,但我还是开心了很久,淡淡的笑容在我的脸上经久不衰。专栏名是不是很带劲?对,力求超凡脱俗,我相信小伙伴们在阅读的过程中一定能感受到思维的乐趣,还能真的学习到知识。
强调一点,《教妹学 Java》专栏面向的是零基础的 Java 学习者,我希望这个专栏能够带领 Java 初学者轻松迈进编程世界的大门,并且能够读写编写出规范、有用的 Java 代码。同时,为后续的深入学习打下坚实的基础。
我妹(亲妹)今年上大学了,学的计算机编程,立志像我一样做一名正儿八经的 Java 程序员。我一开始极力反对,因为程序员这行业容易掉头发,作为一名需要美貌的女生,掉头发可不太妙。
但我妹说了一句略带嘲讽的话“二哥,你为啥发量那么茂密?”,我顿时无言以对。那不如做点更积极的事情吧,比如说写点有趣的文章,教我妹更快地掌握 Java 这门编程语言。
------正儿八经的分割线--------
“二哥,开讲吧,我准备好了。”三妹咪了一口奶茶后对我说。
“好的,三妹,这就开始。”三妹喝的是我最喜欢的布丁奶茶,我也好想来一口,但突然莫名其妙地想到了发福后的周杰伦,不得已把口水咽回去了。
尽管 Java 已经 25 岁了,但仍然“宝刀未老”。在 Stack Overflow 2019 年流行编程语言调查报告中,Java 位居第 5 位,有 41% 的受调开发者认为 Java 仍然是一门受欢迎的编程语言。
很多大型的互联网公司都在使用 Java,国内最有名的当属阿里巴巴,国外最有名的当属谷歌。那为什么 Java 如此流行呢?
1)简单性
Java 为开发者提供了简单易用的用户体验,与其他面向对象编程语言相比,Java 的设计和生态库具有巨大的优势。Java 剔除了 C++ 中很少使用、难以理解、易混淆的特别,比如说指针运算、操作符重载,内存管理等。
Java 可以做到堆栈分配、垃圾回收和自动内存管理,在一定程度上为开发者减轻了入门的难度。
2)可移植性
如果 Java 直接编译成操作系统能识的二进制码,可能一个标识在 Windows 操作系统下是1100,而 Linux 下是 1001,这样的话,在 Windows 操作系统下可以运行的程序到了 Linux 环境下就无法运行。
为了解决这个问题,Java 先编译生成字节码,再由 JVM(Java 虚拟机)来解释执行,目的就是将统一的字节码转成操作系统可以识别的二进制码,然后执行。而针对不同的操作系统,都有相应版本的 JVM,所以 Java 就实现了可移植性。
3)安全性
Java 适用于网络/分布式环境,为了达到这个目标,在安全方面投入了巨大的精力。使用 Java 可以构建防病毒、防篡改的程序。
从一开始,Java 就设计了很多可以防范攻击的机制,比如说:
运行时堆栈溢出,这是蠕虫病毒常用的攻击手段。
字节码验证,可以确保代码符合 JVM 规范并防止恶意代码破坏运行时环境。
安全的类加载,可以防止不受信任的代码干扰 Java 程序的运行。
全面的 API 支持广泛的加密服务,包括数字签名、消息摘要、(对称、非对称)密码、密钥生成器。
安全通信,支持 HTTPS、SSL,保护传输的数据完整性和隐私性。
4)并发性
Java 在多线程方面做得非常突出,只要操作系统支持,Java 中的线程就可以利用多个处理器,带来了更好的交互响应和实时行为。
“二哥,那 Java 还会继续流行下去吗?”三妹眨了眨她的长睫毛,对我说。
“当然。”我斩钉截铁地回答到。
大数据领域:
与 Python 一样,Java 在大数据领域占据着主导地位,很多用于处理大规模数据的框架都是基于 Java 开发的。
Apache Hadoop,用于在分布式环境中处理大规模数据集。Hadoop 采用了主副架构模式,其中主节点负责控制整个分布式计算栈。Hadoop 在需要处理和分析大规模数据的公司当中很流行。
Apache Spark,大型的 ETL(数据仓库技术)、预测分析和报表程序经常使用到 Spark。
Apache Mahout,用于机器学习,比如分类、聚类和推荐。
JFreechart,用于可视化数据,可以用它制作各种图表,比如饼图、柱状图、线图、散点图、盒状图、直方图等等。
Deeplearning4j,用于构建各种类型的神经网络,可以与 Spark 集成,运行在 GPU(图形处理器)上。
Apache Storm,用于处理实时数据流,一个 Storm 节点可以在秒级处理数百万个作业。
物联网(IoT)领域:
Oracle 表示,灵活性和流行度是 IoT 程序员选择 Java 的主要原因。Java 提供了大量的 API 库,可以很容易应用到嵌入式应用程序中。相比其他编程语言,比如 C 语言,Java 在切换平台时更加顺畅,不容易出错。
金融服务领域:
聊天机器人,由于可移植性、可维护性、可视化等诸多方面的因素,Java 成了开发聊天机器人最好的工具。
欺诈检测和管理,银行和金融公司使用 AI(人工智能)工具来进行金融欺诈和信用卡欺诈检测,而 Java 常用来开发这些 AI 工具。
交易系统,Java 虚拟机提供的动态运行时编译优化在很多情况下比编译型语言(如 C++)具有更好的性能,让交易系统运行得更顺畅。
移动钱包,基于 AI 和 Java 算法开发的移动钱包,可以帮助用户在花钱时做出更智能的决策。
Web 领域:
Java 技术对 Web 领域的发展注入了强大的动力,主流的 Java Web 开发框架有很多:
Spring 框架,一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架,渗透了 Java EE 技术的方方面面,绝大部分 Java 应用都可以从 Spring 框架中受益。
Spring MVC 框架,是一种基于 Java 实现的 MVC(Model-View-Controller)设计模式的请求驱动类型的轻量级 Web 框架。
MyBatis 框架,一个优秀的数据持久层框架,可在实体类和 SQL 语句之间建立映射关系,是一种半自动化的 ORM(Object Relational Mapping,对象关系映射)实现。
JavaServer Faces 框架,由 Oracle 开发,能够将表示层与应用程序代码轻松连接,它提供了一个 API 集,用于表示和管理 UI 组件。
总之,Oracle 宣称,Java 正运行在 97% 的企业计算机上——有点厉害的样子。
“好了,三妹,今天我们就学到这吧。”晃动一下僵硬的脖子后,我对三妹说。
“好的,二哥,我再重温一遍今天学习的内容,感觉 Java 学起来还是很有前途的。”三妹似乎对未来充满了希望,这正是我想看到的。
这是《教妹学 Java》专栏的第三篇文章,能看到这里的小伙伴都是最帅的,最美的,升职加薪就是你了?。
写这个专栏的初衷就是为了帮助那些零基础学 Java,或者自学 Java 感觉特别痛苦,特别难入门的小伙伴。
另外,我还创建了一些「技术交流群」,群里氛围很不错,有不少小伙伴会分享一些校招或者社招经验,更重要的是,群里时不时会有「红包」等福利,当然,群里不允许任何形式的广告。扫描下方的二维码,回复「加群」即可。