2024年,在风云际会的编程世界里,窥探Java的前世今生,都说它穷途末路,我认为是柳暗花明!

文编|JavaBuild

哈喽,大家好呀!我是JavaBuild,以后可以喊我鸟哥,嘿嘿!俺滴座右铭是不在沉默中爆发,就在沉默中灭亡,一起加油学习,珍惜现在来之不易的学习时光,等工作之后,你就会发现,想学习真的需要挤时间,厚积薄发啦!

截止2024年1月,全球程序员人数预计达到2800万,其中热门的程序语言高达几十种,在此之中包含着太多太多的传奇故事,作为程序员,鸟哥想说:工欲善其事必先利其器!想要真正掌握一门语言,必须要先了解它的历史,今天!作为Java语言的追随者,想和大家聊一聊Java的前世今生!

“Java”名字的由来

Java是一个简单、健壮、可移植、安全、高性能、面向对象的编程语言,于1995年由Sun公司牵头开发。

Java期初并非叫Java,甚至于这个名字都没有进入备选前三行列,最初架构搭建的时候这套语言被命名为“Greentalk”,因为,当时这个项目组的名字叫Green很随意的起名。

后来改名为Oak,翻译成中文为橡树,在欧美很多国家,橡树因其高大、强壮、枝繁叶茂被视为国树,而恰巧的是,詹姆斯.高林斯( James Gosling) 的窗外就有一颗,什么?詹姆斯.高林斯是谁?



不会吧不会吧,准备学Java了还不认识他?那就附个图出来吧,就是下图这位红光满面,大脑袋锃亮的大叔,Java的主要开发者,被誉为“Java之父”



因此,Java的第二个名字就应运而生了,天公不作美,Oak已经被其他公司捷足先登了,无奈之下高林斯团队只能重新起名,新名字需要具备dynamic(动态的)、revolutionary(革命性的)、Silk(像丝绸一样柔软的)、Cool(炫酷的)等特点,有人说用“Silk”,也有人说用“Lyric”,但最终都没有被律师团队认可。

有一天,团队中的一个工程师Mark Opperman去咖啡店喝咖啡,得到启发想将他们的语言命名为“Java”,这个单词在英文中的意思是印度尼西亚爪哇岛,而比较巧的是,这个地方盛产咖啡。

马克回去将自己想到的名字与团队成员分享之后,大家一拍即合,Java之名从此诞生,并寓意:希望后世之人可以通过Java过上舒适,惬意的生活。

Java的版本变更史

上个世纪90年代,单片计算机诞生,推动了电子产品的智能化,为抢占市场,Sun公司高层紧急会议,推出“Green”计划(绿色计划),由詹姆斯·高斯林(James Gosling)牵头,开发出一种可以在多种电子产品上运行的程序架构。

由此Green项目组正式成立,决定采用C++进行程序开发,但随着项目深度的进行,大家逐渐发现了C++的弊端, 庞大且复杂的C++无法满足他们丰富的跨平台需求,高林斯项目组经过深度讨论,最终咬牙跺脚,决定以C++为底层开发出一套简单,高效,跨平台的程序语言。

1992年Oak雏形诞生(此时的Java还要这个名儿),东西搞出来了,Sun公司经过多方洽谈,联系了不少的硬件公司进行商业展示,悲伤的是这一次Oak没有让金主爸爸们满意。

时间很快来到了1994年(这一年,鸟哥出生啦),Green项目用Oak开发出了可以在网页上嵌入小程序的Applet技术,此举让很多公司看到了Oak的价值,Oak活了下来。

1995年,Sun公司将Oak正式更名为Java,同年发布了Java1.0版本,提出了那句“Write Once, Run anywhere”,一次编译,随处运行,这句口号注定会写入世界编程史。而这一年也成为了Java的元年,此后Java正式进入了版本迭代时代。下图为鸟哥整理的Java版本发展的时间轴。



现在Java基本稳定在了每半年一个版本,每三年一个LTS(长期维护版本),如今仅Java8,Java11,Java17,和去年9月发布的Java21为LTS版,其他版本皆属于过渡版,使用者不多。

Java的特点

那么作为编程语言界的常青树,Java究竟有哪些魅力呢?

  1. 简单易学(哈哈,这个俺不好评价,反正Java之父的发量在众多语言创始人中数得着的稀疏)
  2. 面向对象(封装,继承,多态)
  3. 平台无关性( JVM实现平台无关性),一次编译,随处运行
  4. 支持多线程
  5. 可靠性,安全性,高效性
  6. 支持网络编程
  7. 编译与解释并存
  8. 以上种种,在下看来都不足以让它经久不衰,强大的生态才是它的立身之本!

Java的应用

那么学了Java之后可以从事哪些工作呢?也是大家最关心,也是最重要的问题。鸟哥大致将Java的应用分为如下几点:

  • 桌面应用程序
  • Web应用
  • 企业级应用
  • 移动端,主要为安卓开发
  • 嵌入式系统
  • 游戏开发
  • 金融数据服务
  • 物联网
  • 大数据
  • 机器人

    如上行业均可,但不止于此哈

Java的钱途

除了学了能干啥之外,还有个更重要的问题是,干了能赚到米吗?答案是肯定的!如下2023年Java秋招的薪资待遇水平,可以作为参考。

但最近也在很多平台看到大量唱衰Java的文章,确实随着其他语言的强势崛起,以及很多应用场景的逐渐升级,Java的热度确实在降。

这份统计图统计的是近三年受欢迎编程语言排行,由此可看出,Java的排名逐年下降,但!目前在国内,Java仍然是使用人数最多的语言,仍旧拥有着庞大的市场。对于每年都要凉一次的Java,我们应给予足够的信心(当然,这里也想吐槽Oracle公司,商业化没问题,想赚钱也理所当然,但请你吃相好点!)

最后,用标题的一句话总结此篇:2024年,在风云际会的编程世界里,窥探Java的前世今生,都说它穷途末路,我认为是柳暗花明!

2024年,在风云际会的编程世界里,窥探Java的前世今生,都说它穷途末路,我认为是柳暗花明!的更多相关文章

  1. 【scratch3.0教程】1.1 走进编程世界

    第一章 认识Scratch 第1课   走进编程世界 大家认识下图中的人物吗? 史蒂夫·乔布斯             比尔·盖茨 ●Elon Musk,特斯拉.Space X火箭公司创始人,9岁学习 ...

  2. Android NFC开发(二)——Android世界里的NFC所具备的条件以及使用方法

    Android NFC开发(二)--Android世界里的NFC所具备的条件以及使用方法 NFC的应用比较广泛,而且知识面也是比较广的,所以就多啰嗦了几句,我还还是得跟着官方文档:http://dev ...

  3. VRChat简易教程3-往世界里导入模型和VRC接口初探

    一.准备工作 按前面的教程新建一个project,导入sdk并创建地面(Terrain)和VRCWorld. 本教程中我们学习如何导入别人做好的模型并使用VRC提供的接口来实现物品的抓取,模型素材(小 ...

  4. Cocos2d-js官方完整项目教程翻译:六、添加Chipmunk物理引擎在我们的游戏世界里

    添加Chipmunk物理引擎在我们的游戏世界里         一.简介                   cocos2d JS能给我们力量来创造令人印象深刻的游戏世界.但缺乏某种现实.       ...

  5. python世界里的局部变量和全局变量: 潜规则太重要了!!!

    python世界里的局部变量和全局变量: 潜规则太重要了!!! 先上代码: def fun(): def test_global(): ''' 内层和外层都需要声明为global, 才能彻底打通变量名 ...

  6. 编程基础——C/C++,Java,ObjC讨论回调模式

    什么是回调? 因为它是从C开始进入编程世界.术语改只是口.叫习惯了.java里通常叫listener(监听器).C/C++里通常叫callback(回调),ObjC里面叫delegate(托付) 回调 ...

  7. 并发编程(十三)—— Java 线程池 实现原理与源码深度解析 之 Executors(三)

    前两篇文章讲了线程池的源码分析,再来看这篇文章就比较简单了, 本文主要讲解 Executors 这个工具类,看看长江创建线程池的几种方法. newFixedThreadPool 生成一个固定大小的线程 ...

  8. [Java并发编程(五)] Java volatile 的实现原理

    [Java并发编程(五)] Java volatile 的实现原理 简介 在多线程并发编程中 synchronized 和 volatile 都扮演着重要的角色,volatile 是轻量级的 sync ...

  9. [Java并发编程(三)] Java volatile 关键字介绍

    [Java并发编程(三)] Java volatile 关键字介绍 摘要 Java volatile 关键字是用来标记 Java 变量,并表示变量 "存储于主内存中" .更准确的说 ...

  10. 世界时区和Java时区详解

    0.引言 Druid中时区的问题一直困扰着我们,所以我专门去研究了一下世界时区和Java中的时区,对使用Druid很用帮助. 1.UTC时间&GMT时间 UTC时间是时间标准时间(Univer ...

随机推荐

  1. LSP 链路状态协议

    转载请注明出处: 链路状态协议(Link State Protocol)是一种在计算机网络中用于动态计算路由的协议.它的主要作用是收集网络拓扑信息,为每个节点构建一个准确的网络图,并基于这些信息计算出 ...

  2. Django框架项目之上线——docker、部署上线

    文章目录 Docker CentOS安装Docker 设置管理Docker的仓库 安装Docker Engine-Community Docker基础命令 开启关闭 镜像操作 容器操作 Docker安 ...

  3. DELL R750

    两种情况不常见 1.如果R750的配置单里提到 跳线-C13/C14.0.6M.250V.10A(中国.韩国)   要注意里面写的0.6M,表示这个线是0.6米的,较短,客户机房环境复杂的情况下,很可 ...

  4. Super Apps 超级应用们背后的道家哲学

    众所周知,Elon Musk 想将 Twitter 重新设计定位成一款"超级应用 - X"的野心已经不再是秘密.伴随着应用商店中 Twitter 标志性的蓝鸟 Logo 被 X 取 ...

  5. VMPFC可以融合既有的片段信息来模拟出将来的情感场景

    Ventromedial prefrontal cortex supports affective future simulation by integrating distributed knowl ...

  6. WebViewJavascriptBridge.js代码学习

    //notation: js file can only use this kind of comments //since comments will cause error when use in ...

  7. 深入理解JMeter中的JSON Extractor

    Apache JMeter是一款出色的开源性能和功能测试工具,这款工具提供了丰富的功能和强大的扩展性,可以应对各种复杂的测试需求.当我们在进行接口测试时,经常会遇到需要从接口响应中提取信息并在后续请求 ...

  8. 视觉BEV基本原理和方案解析

    BEV(Bird's-Eye-View)是一种鸟瞰视图的传感器数据表示方法,它的相关技术在自动驾驶领域已经成了"标配",纷纷在新能源汽车.芯片设计等行业相继量产落地.BEV同样在高 ...

  9. JavaSript 数组

    添加数组 push是添加在数组的末位,unshift是添加在首位 let arr= ['a','b','c'] arr.push('d') arr.unshift('E')

  10. 在Linux平台下使用.NET Core访问Access数据库读取mdb文件数据

    在 Linux平台下使用 .NET Core 访问 Access数据库 读取 mdb文件 数据 今天有群友在群里问 C# 能不能在 Linux 下访问 Access数据库? 我觉得这很有趣,因此研究折 ...