前言
C: Hi,大家好!从本篇起,查老师将开拓一个新的专栏《Java 语言入门》,这个专栏初期将涵盖 Java 语法、Java OOP、Java 高级个性三大部分。
当然了,此类教程在网络上举不胜举,查老师在以前也是比拟举荐大家去看谁谁谁的什么什么文章,但起初发现,这些常识是分布在网络间的,所以扩散是第一个大问题;而且因为工夫和作者等因素,有些内容至今还没有失去更新,这就导致一个常识的滞后性。
所以,查老师再开拓此专栏的目标,就是为了持续做好常识更新连续和流传,将来对这些内容还会持续编辑更新,仅仅心愿能让后辈在学习 Java 语言的路上能够走的顺畅一些,也能够在后期少走一些弯路。
系列浏览
- 《Java 语法 | Java 概述》
- 《Java 语法 | 开发环境搭建》
- 《Java 语法 | 第一个 Java 程序》
程序概述
好了,言归正传。从看到本篇的那一刻起,你就曾经推开了 IT 编程的大门。自此,程序一词或将扭转你将来的人生轨迹。将来的你,按键行云流水,脑内 CPU 高速运转,屏幕切换间,高可用、高扩大、高安全性的”完满”程序,将由你所著。[将来的你]
首先咱们来看看程序的概念,程序在现世纪存在两种含意,即生存中的程序和计算机中的程序。
生存中程序
生存中的程序: 咱们去银行办理业务或者在学校时因事销假再或者在工作中去办理报销,这些场景咱们都不生疏。咱们一遍一遍,一步一步的执行着所谓的流程和手续(套路),这就是生存中的程序。
计算机中的程序
在本世纪的明天,现实生活中的程序你可能曾经把它换了个称说,比方:流程或者手续。而程序这个概念,更多的时候曾经被你安放到了手机上的 APP,或者计算机上的 QQ 等方面。它们确实是程序,是由咱们将来的同行,前辈所发明编写,编写这些程序的过程,就是所谓的编程。
查老师有话说: 软件不是程序,软件是比应用程序更大的概念,软件是程序、数据及相干文档的残缺汇合。可延长浏览张海藩和吕云翔所著的《软件工程 第 4 版》
然而如果单单这么了解程序,可就有点小儿科了。上面的 [百度百科],解释的还挺不错!程序其实是一个 指令 的汇合。
何为指令呢? 比方说:我是一位老板(目前不是),我有个女秘书(目前没有),每天我的行程安顿或者一些繁琐的事项都交给了我秘书去做,我通知秘书去帮我邀约一位客人,她就如是去做了。我通知秘书去帮我告诉一下部门要散会了,她也会如是去告诉。这个比如里老板所通知秘书的一件件事就是一个个指令,而秘书就是接管指令而后去执行的人。
换到计算机世界的概念,咱们被称为 程序员 / 码农 ,如果想让计算机这些秘书去执行一些操作,例如在屏幕上输入一些内容或者主动绘制一个小猪佩奇图像等,就须要去给计算机下达指令。 学习编程就是在学习给计算机秘书下达指令的过程而已。
程序和程序的关系
从下面咱们了解了程序的两种含意,它们之间是否存在什么关系呢?其实计算机中的程序绝大多数都是因为事实中的某些流程 / 程序,很是麻烦,耗时或者产生一些资源的节约(纸张),所以在有了计算机帮忙之后,咱们人类就将现实生活中的这些程序,以计算机中的程序体现进去了。例如: 在线挂号,在线购物,在线选课、OA 零碎等。
一句话能够论述这个关系: 咱们编程就是将现实生活中的业务程序移植到计算机中,以计算机指令的模式体现进去。
编程语言概述
理解完程序的概念,那这些程序指令咱们是怎么通知计算机的?口头通知?脑电波交换?显然不是,那咱们写自然语言来通知计算机要做什么?不好意思的是,计算机并不能看懂,它只能看懂二进制(0 1 这种数制)。晚期的计算机从业者就是在敲打 0 1 来通知计算机须要做什么,然而对于咱们人类来讲,这一堆 0110 浏览起来太难了,所以前期的倒退中,咱们用自然语言定义了一些非凡的语法,再通过一个”翻译官”(编译器)帮咱们翻译给计算机看,这样就能实现计算机来执行咱们的指令,而且咱们本人也能看懂本人写的是什么。 上述提到的非凡语法就是编程语言,也被称为计算机语言。
支流的编程语言
编程语言太多了,怎么定义语法的都有。这也很失常,就如同当今世界,自然语言都千奇百怪呢。所以咱们不须要去过多的关注偏门的”小语种”,只须要去关注一下当今 IT 编程畛域的配角们即可。[参见 TIOBE]
下图是出名排行榜的统计数据,相似的网站有 PYPL 等。TIOBE 排行榜是依据互联网上有教训的程序员、课程和第三方厂商的数量,并应用搜索引擎(如 Google、Bing、Yahoo!)以及 Wikipedia、Amazon、YouTube 统计出排名数据,只是反映某个编程语言的热门水平,并不能阐明一门编程语言好不好,或者一门语言所编写的代码数量多少。
查老师有话说: 在查老师看来,数据还是能阐明一些语言的好坏或风行度的。截止目前,即便虚心一些,咱们要学习的 Java(爪哇 / 国内音译加哇,扎哇),它依然是最热门的编程语言之一。即使在网络上有一些人每天都在喊着不要学 Java,要学 Python,学 C,学 PHP,甚至还听过 PHP 是最好的语言,这种引战舆论。
事实上呢?哪有什么完满的编程语言?只不过是不同的场景,谁更适宜而已。而且处于当今时代的咱们,只会一种编程语言曾经无奈适应疾速迭代的互联网利用和企业须要了(全栈)。所以不学哪种编程语言自身就是个”伪命题”。
尤其对于刚踏入编程畛域的小伙伴们来讲,查老师集体认为,Java 是一门极其适合的入门和谋生语言!它在了解难度,语法标准,性能,流传广度、社区反对,企业须要和热度等方面都属于领先地位。稍后查老师就给你具体讲讲它的来历和能力。
Java 的前世今生
Java 的诞生
Java 是 SUN Microsystems(国内译为升阳公司)于 1995 年推出的高级编程语言。下图是 Java 的独特创始人之一:詹姆斯·高斯林 James Gosling(被誉为 Java 之父)。2009 年,SUN 公司被 Oracle 并购,高斯林到职。截止目前,高斯林退出了亚马逊 AWS 工作。
下图是 Java 的 Logo(一杯热气腾腾的咖啡,有传言 Java 也是因为大佬们爱喝印尼爪哇岛的咖啡而得名)。不过这两缕蒸汽是如许像大佬们头上稠密的秀发。
1991 年 4 月,由 James Gosling 博士领导的绿色打算(Green Project)开始启动,此打算的目标是开发一种可能在各种消费性电子产品(如机顶盒、冰箱、收音机等)上运行的程序架构。这个打算的产品就是 Java 语言的前身:Oak(橡树)。Oak 过后在消费品市场上并不算胜利,但随着 1995 年互联网潮流的衰亡,Oak 迅速找到了最适宜本人倒退的市场定位并变质成为 Java 语言。[1]
Java 的倒退
下图是 Java 的倒退过程,重点关注一下 1995 年,1998 年,2009 年和 2013 年中期即可,理解下它的历史,能力让咱们更好的与它 ” 对话和结伴 ”。
1995 年 5 月 23 日,Oak 语言改名为 Java,并且在 SunWorld 大会上正式公布 Java 1.0 版本。Java 语言第一次提出了“Write Once,Run Anywhere”的口号。
1996 年 1 月 23 日,JDK 1.0 公布,Java 语言有了第一个正式版本的运行环境。JDK 1.0 提供了一个纯解释执行的 Java 虚拟机实现(Sun Classic VM)。JDK 1.0 版本的代表技术包含:Java 虚拟机、Applet、AWT 等。
1998 年 12 月 4 日,JDK 迎来了一个里程碑式的版本 JDK 1.2,工程代号为 Playground(竞技场),Sun 在这个版本中把 Java 技术体系拆分为 3 个方向,别离是面向桌面利用开发的J2SE(Java 2 Platform,Standard Edition)、面向企业级开发的J2EE(Java 2 Platform,Enterprise Edition)和面向手机等挪动终端开发的J2ME(Java 2 Platform,Micro Edition)。在这个版本中呈现的代表性技术十分多,如 EJB、Java Plug-in、Java IDL、Swing 等,并且这个版本中 Java 虚拟机第一次内置了 JIT(Just In Time)编译器(JDK 1.2 中曾并存过 3 个虚拟机,Classic VM、HotSpot VM 和 Exact VM,其中 Exact VM 只在 Solaris 平台呈现过;前面两个虚拟机都是内置 JIT 编译器的,而之前版本所带的 Classic VM 只能以外挂的模式应用 JIT 编译器)。
1999 年 4 月 27 日,HotSpot 虚拟机公布,HotSpot 最后由一家名为“Longview Technologies”的小公司开发,因为 HotSpot 的优异体现,这家公司在 1997 年被 Sun 公司收买了。HotSpot 虚拟机公布时是作为 JDK 1.2 的附加程序提供的,起初它成为了 JDK 1.3 及之后所有版本的 Sun JDK 的默认虚拟机。
2009 年 2 月 19 日,工程代号为 Dolphin(海豚)的 JDK 1.7 实现了其第一个里程碑版本。依据 JDK 1.7 的性能布局,一共设置了 10 个里程碑。最初一个里程碑版本原打算于 2010 年 9 月 9 日完结,但因为各种起因,JDK 1.7 最终无奈按计划实现。在 JDK 1.7 开发期间,Sun 公司因为相继在技术竞争和商业竞争中都陷入泥潭,公司的股票市值跌至仅有顶峰期间的 3%,已有力推动 JDK 1.7 的研发工作按失常打算进行。为了尽快完结 JDK 1.7 长期“跳票”的问题,Oracle 公司收买 Sun 公司 后不久便发表将履行“B 打算”,大幅裁剪了 JDK 1.7 预约指标,以便保障 JDK 1.7 的正式版可能于 2011 年 7 月 28 日准时公布。[1]
(查老师补充)2017 年 11 月,Oracle(甲骨文)将 Java EE(Java Enterprise Edition)移交给 Eclipse 基金会,2018 年 3 月份 Eclipse 将其更名为 Jakarta EE。
Java 的能力
从 1998 年的 1.2 版本开始,Java 呈现了 3 个方向版本,下面查老师也给你摘了一部分周老师的书籍内容。这三个版本别离是:面向桌面利用开发的 J2SE(Java 2 Platform,Standard Edition)、面向企业级开发的 J2EE(Java 2 Platform,Enterprise Edition)和面向手机等挪动终端开发的 J2ME(Java 2 Platform,Micro Edition)。
Java SE 是根底外围,Java ME 和 Java EE 是外围外的两个分支。无论是走 Java ME 还是 Java EE 都须要学习 Java SE,咱们系列课程的前三小阶段就是在学习 Java SE 根底。另外当前咱们次要从事的分支就是 Java EE,典型的产品就是天猫、京东等大型分布式应用。再进阶之后咱们还能够进入热门的大数据畛域,国内当初比拟出名的大数据框架 Hadoop 就是 Java 语言编写的,而且当初国内做大数据的人才很多都是由原 Java 工程师进阶过来的。
还有十分重要的一点,Java 程序是跨平台的,即 Java 程序能够运行在任何平台上,不须要做不同零碎平台的兼容适配。“write once , run anywhere.”,稍后咱们编写完第一个 Java 程序后会介绍一下这句口号及原理。
查老师有话说:
- 因为 windows 的普及性,在桌面程序开发畛域,微软的 C# 语言更具备劣势,开发游戏方面 C 和 C ++ 性能和渲染上也更有劣势,Java 简直没有市场。
- Java ME 曾经凉凉,被 Android 等抢占了市场,不晓得你有没有用过诺基亚等老式手机?还记得 Java 2D 游戏吗?
- Android(Andorid 不是编程语言)尽管在 2017 年 Google 将 Kotlin 正式列为官网反对开发语言,但 Java 目前仍是其次要开发语言,起因是 Android 的底层有大量的 Java API(可延长浏览 Oracle 与 Google 的官司大战)。
Java 不仅仅是一门编程语言,还是一个由一系列计算机软件和标准造成的技术体系,这个技术体系提供了残缺的用于软件开发和跨平台部署的反对环境,并 广泛应用于嵌入式零碎、挪动终端、企业服务器、大型机等各种场合。时至今日,Java 技术体系曾经吸引了 900 多万软件开发者,这是寰球最大的软件开发团队。应用 Java 的设施多达几十亿台,其中包含 11 亿多台集体计算机、30 亿部移动电话及其他手持设施、数量泛滥的智能卡,以及大量机顶盒、导航系统和其余设施。[1]
参考文献
[1]周志明. 深刻了解 Java 虚拟机[M]. 第 3 版. 北京: 机械工业出版社,2019
后记
查老师有话说: 对于技术的学习,查老师一贯遵循的步骤是:先用最最简略的 demo 让它跑起来,而后学学它的最最罕用 API 和 配置让本人能用起来,最初纯熟应用的根底上,在闲暇时尝试浏览它的源码让本人可能洞彻它的运行机制,局部问题呈现的起因,同时借鉴这些技术实现来晋升本人的代码高度。
所以在查老师的文章中,后期根本都是小朱文,仅仅交叉很大量的源码钻研。当然等小朱文更新多了,你们还仍然喜爱,前期会不定时专门对局部技术的源码进行解析。