2024年,在风云际会的编程世界里,窥探Java的前世今生,都说它穷途末路,我认为是柳暗花明!
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究竟有哪些魅力呢?
- 简单易学(哈哈,这个俺不好评价,反正Java之父的发量在众多语言创始人中数得着的稀疏)
- 面向对象(封装,继承,多态)
- 平台无关性( JVM实现平台无关性),一次编译,随处运行
- 支持多线程
- 可靠性,安全性,高效性
- 支持网络编程
- 编译与解释并存
- 以上种种,在下看来都不足以让它经久不衰,强大的生态才是它的立身之本!
Java的应用
那么学了Java之后可以从事哪些工作呢?也是大家最关心,也是最重要的问题。鸟哥大致将Java的应用分为如下几点:
- 桌面应用程序
- Web应用
- 企业级应用
- 移动端,主要为安卓开发
- 嵌入式系统
- 游戏开发
- 金融数据服务
- 物联网
- 大数据
- 机器人
如上行业均可,但不止于此哈
Java的钱途
除了学了能干啥之外,还有个更重要的问题是,干了能赚到米吗?答案是肯定的!如下2023年Java秋招的薪资待遇水平,可以作为参考。
但最近也在很多平台看到大量唱衰Java的文章,确实随着其他语言的强势崛起,以及很多应用场景的逐渐升级,Java的热度确实在降。
这份统计图统计的是近三年受欢迎编程语言排行,由此可看出,Java的排名逐年下降,但!目前在国内,Java仍然是使用人数最多的语言,仍旧拥有着庞大的市场。对于每年都要凉一次的Java,我们应给予足够的信心(当然,这里也想吐槽Oracle公司,商业化没问题,想赚钱也理所当然,但请你吃相好点!)
最后,用标题的一句话总结此篇:2024年,在风云际会的编程世界里,窥探Java的前世今生,都说它穷途末路,我认为是柳暗花明!
2024年,在风云际会的编程世界里,窥探Java的前世今生,都说它穷途末路,我认为是柳暗花明!的更多相关文章
- 【scratch3.0教程】1.1 走进编程世界
第一章 认识Scratch 第1课 走进编程世界 大家认识下图中的人物吗? 史蒂夫·乔布斯 比尔·盖茨 ●Elon Musk,特斯拉.Space X火箭公司创始人,9岁学习 ...
- Android NFC开发(二)——Android世界里的NFC所具备的条件以及使用方法
Android NFC开发(二)--Android世界里的NFC所具备的条件以及使用方法 NFC的应用比较广泛,而且知识面也是比较广的,所以就多啰嗦了几句,我还还是得跟着官方文档:http://dev ...
- VRChat简易教程3-往世界里导入模型和VRC接口初探
一.准备工作 按前面的教程新建一个project,导入sdk并创建地面(Terrain)和VRCWorld. 本教程中我们学习如何导入别人做好的模型并使用VRC提供的接口来实现物品的抓取,模型素材(小 ...
- Cocos2d-js官方完整项目教程翻译:六、添加Chipmunk物理引擎在我们的游戏世界里
添加Chipmunk物理引擎在我们的游戏世界里 一.简介 cocos2d JS能给我们力量来创造令人印象深刻的游戏世界.但缺乏某种现实. ...
- python世界里的局部变量和全局变量: 潜规则太重要了!!!
python世界里的局部变量和全局变量: 潜规则太重要了!!! 先上代码: def fun(): def test_global(): ''' 内层和外层都需要声明为global, 才能彻底打通变量名 ...
- 编程基础——C/C++,Java,ObjC讨论回调模式
什么是回调? 因为它是从C开始进入编程世界.术语改只是口.叫习惯了.java里通常叫listener(监听器).C/C++里通常叫callback(回调),ObjC里面叫delegate(托付) 回调 ...
- 并发编程(十三)—— Java 线程池 实现原理与源码深度解析 之 Executors(三)
前两篇文章讲了线程池的源码分析,再来看这篇文章就比较简单了, 本文主要讲解 Executors 这个工具类,看看长江创建线程池的几种方法. newFixedThreadPool 生成一个固定大小的线程 ...
- [Java并发编程(五)] Java volatile 的实现原理
[Java并发编程(五)] Java volatile 的实现原理 简介 在多线程并发编程中 synchronized 和 volatile 都扮演着重要的角色,volatile 是轻量级的 sync ...
- [Java并发编程(三)] Java volatile 关键字介绍
[Java并发编程(三)] Java volatile 关键字介绍 摘要 Java volatile 关键字是用来标记 Java 变量,并表示变量 "存储于主内存中" .更准确的说 ...
- 世界时区和Java时区详解
0.引言 Druid中时区的问题一直困扰着我们,所以我专门去研究了一下世界时区和Java中的时区,对使用Druid很用帮助. 1.UTC时间&GMT时间 UTC时间是时间标准时间(Univer ...
随机推荐
- LSP 链路状态协议
转载请注明出处: 链路状态协议(Link State Protocol)是一种在计算机网络中用于动态计算路由的协议.它的主要作用是收集网络拓扑信息,为每个节点构建一个准确的网络图,并基于这些信息计算出 ...
- Django框架项目之上线——docker、部署上线
文章目录 Docker CentOS安装Docker 设置管理Docker的仓库 安装Docker Engine-Community Docker基础命令 开启关闭 镜像操作 容器操作 Docker安 ...
- DELL R750
两种情况不常见 1.如果R750的配置单里提到 跳线-C13/C14.0.6M.250V.10A(中国.韩国) 要注意里面写的0.6M,表示这个线是0.6米的,较短,客户机房环境复杂的情况下,很可 ...
- Super Apps 超级应用们背后的道家哲学
众所周知,Elon Musk 想将 Twitter 重新设计定位成一款"超级应用 - X"的野心已经不再是秘密.伴随着应用商店中 Twitter 标志性的蓝鸟 Logo 被 X 取 ...
- VMPFC可以融合既有的片段信息来模拟出将来的情感场景
Ventromedial prefrontal cortex supports affective future simulation by integrating distributed knowl ...
- WebViewJavascriptBridge.js代码学习
//notation: js file can only use this kind of comments //since comments will cause error when use in ...
- 深入理解JMeter中的JSON Extractor
Apache JMeter是一款出色的开源性能和功能测试工具,这款工具提供了丰富的功能和强大的扩展性,可以应对各种复杂的测试需求.当我们在进行接口测试时,经常会遇到需要从接口响应中提取信息并在后续请求 ...
- 视觉BEV基本原理和方案解析
BEV(Bird's-Eye-View)是一种鸟瞰视图的传感器数据表示方法,它的相关技术在自动驾驶领域已经成了"标配",纷纷在新能源汽车.芯片设计等行业相继量产落地.BEV同样在高 ...
- JavaSript 数组
添加数组 push是添加在数组的末位,unshift是添加在首位 let arr= ['a','b','c'] arr.push('d') arr.unshift('E')
- 在Linux平台下使用.NET Core访问Access数据库读取mdb文件数据
在 Linux平台下使用 .NET Core 访问 Access数据库 读取 mdb文件 数据 今天有群友在群里问 C# 能不能在 Linux 下访问 Access数据库? 我觉得这很有趣,因此研究折 ...