文章目录

  • 前言
  • 一、了解Java发展史和其特点特性
    • 1. Java发展史
      • 1.1 起源
      • 1.2 演进
    • 2. Java特点特性
  • 二、环境搭建
    • 1. JDK安装
    • 2. Eclipse安装
    • 3. 环境变量配置
    • 4. 验证环境变量
    • 5. 验证Eclipse
  • 三、拓展知识点
    • 1. Java跨平台原理
    • 2. JVM与GC
    • 3. JDK与JRE
  • 总结

前言

从今天开始,就要步入新的征程啦。哪怕你有一定的Java基础哦,但是哈,既然选择了从头开始,那么就好好夯实基础吧。阅读本篇文章的小伙伴们,希望你能够跟着我的步伐走下去哦,加油~


提示:本系列文章是Java新手入门教程

一、了解Java发展史和其特点特性

小伙伴们,在读本小节之前,我想问你们一个问题:你们为什么要学Java呢?是因为热爱嘛,或是因为就业需求嘛,亦或是其他原因等等呀?好吧,无论因为什么原因,你在这里跟Java结识啦。那在此,我希望你能够把Java当成你的好朋友,热爱它,喜爱它,对它有足够的了解,假以时日呀,Java也会接纳你成为好朋友哦。哈哈,那下面我们来了解一下它吧。

1. Java发展史

1.1 起源

20世纪90年代,单片式计算机系统诞生,单片式计算机系统不仅廉价,而且功能强大,使用它可以大幅度提升消费性电子产品的智能化程度。

SUN 公司为了抢占市场先机,在1991年成立了一个由詹姆斯・高斯林 (James Gosling)领导,名为“Green"项目小组,目的是开发一种能够在各种消费性电子产品上运行的程序架构。

那么使用何种编程语言来设计,是项目小组头疼的事。当时C++较为有优势的,项目小组首先考虑的是采用它来编写程序,但C++过于复杂和庞大,再加上由于消费电子产品所采用的嵌入式处理器芯片的种类繁杂,需要让编写的程序跨平台运行,假如用 C++编写的话对程序的跨平台运行不友好。

因此最后项目小组决定: 既不用 C++编写,也不开发全新的编程语言,而是对 C++进行改造: 去除了C++复杂的指针和内存管理,并结合嵌入式系统的实时性要求,最终在1992年,他们开发了一种名为“Oak"的面向对象语言。

然而,刚起步的Oak并不是一帆风顺的。当项目小组在向硬件生产商进行演示的时候,硬件生产商对此并不感冒,使得OaK语言因为缺乏硬件的支持而无法进入市场,从而被搁置一旁。

不过,在1994年,项目小组看到了浏览器在未来的发展前景,于是决定将OaK应用于万维网。1995年,他们用 OaK语言研发了一种能将小程序嵌入到网页中执行的技术——Applet,由于Applet不仅能嵌入网页,还可随同网页在网络上进行传输,这让无数的程序员看到了OaK这门语言,与此同时,OaK正式更名为Java。从此,Java在互联网的推动下火了。Java向世界宣告:它来了。

1.2 演进

1996年1月,SUN 公司推出了JDK1.0。在JDK1.0发布后,有很多程序员学习并运用Java来制作网页,JDK包括两大部分:开发工具和运行环境。 运行环境包括核心API、集成API、用户界面API、发布技术、Java虚拟机(JVM)。

JDK1.0的发布,标志着Java成为一种独立的开发工具。在同年9月,约有8.3万个网页应用了Java 技术来制作。JDK1.0的代表性技术有: Java虚拟机、Applet、AWT等。或许你听说过 “WRITE ONCE RUN EVERY WHERE”, 说的就是JVM哦。

1997年2月,SUN 公司紧接着推出了JDK 1.1,在推出后3周时间里,达到了近22万次的下载量。4月2日,首届 Java One 大会在美国旧金山召开,参加会议的人超过一万人,创造了当时全球同类会议规模最高的纪录。9月,Java Developer Connection 社区成员超过10万,同年还有10个最主要的操作系统供应商正式声明将在他们的产品中使用Java。

JDK1.1的代表性技术有:JDBC、JavaBeans、RMI、JAR 文件格式、Java 语法中的内部类和反射。

1998年12月8日,JDK1.2一第二代Java平台的企业版 J2EE 发布。

1999年6月,Sun公司把 Java 体系分为三个方向:

  • J2ME (Java2 Micro Edition, Java2平台的微型版),应用于移动、无线及有限资源的环境;
  • J2SE (Java2 Standard Edition, Java 2平台的标准版),应用于桌面环境;
  • J2EE (Java 2EnterpriseEdition,Java 2平台的企业版),应用于基于Java的应用服务器。

随着供应商的不同,Java的API也分为三大类:

  • Java Core API: Java核心类库;
  • Java Optional API: 对之前API的扩充;
  • 特殊API: 由特殊厂商或组织提供的API。

Java2平台的发布,是Java发展过程中最重要的一个里程碑,标志着Java的应用开始普及。JKD1.2的代表性技术有:Swing、Java IDL、EJB、Java Plug-in等,在API文档中,添加了strictfp关键字和 Collections 集合类。

1999年4月27日, HotSpot虚拟机发布。HotSpot 是由一家叫“Longview Technologies”的小公司开发的,后来被 SUN 公司收购。HotSpot虚拟机发布时是作为JDK 1.2的附加程序提供的,后来它成为了JDK 1.3及之后所有版本的 Sun JDK的默认虚拟机。

2000年5月,JDK1.3、JDK1.4 和 J2SE1.3相继发布,J2SE1.3是对 J2SE1.2的补充和扩展,从应用领域的角度分析,JavaSE1.3已经涵盖了数据库、WEB、网络、图形、多媒体、电话、影像等大部分的信息技术领域。

2002年2月26日,J2SE1.4发布。与J2SE1.3相比,多了近62%的类和接口。在这些新特性当中,还提供了广泛的XML支持、安全套接字(Socket) 支持(通过SSL与TLS协议)、全新的I/OAPI、正则表达式、日志与断言。

2004年9月30日,J2SE1.5发布,成为Java语言发展史上的又一里程碑。为了表示该版本的重要性,J2SE 1.5更名为Java SE 5.0(内部版本号1.5.0)。Java SE 5.0包含了从1996年发布1.0版本以来的最重大的更新,其中包括泛型支持、基本类型的自动装箱、改进的循环、枚举类型、格式化I/O及可变参数

2005年6月,在Java One大会上,Sun 公司发布了Java SE 6。此时,Java的各种版本已经更名,已取消其中的数字2,如 J2EE 更名为JavaEE, J2SE更名为JavaSE, J2ME更名为JavaME。

2011年7月28日,收购Sun公司的Oracle 发布了Java SE7,引入了二进制整数、支持字符串的switch语句、棱形语法、多异常捕抓、自动关闭资源的try语言等新特性。

2014年3月18日, Oracle 公司发布 Java SE8,这次版本升级为Java带来了全新的Lambda表达式、流式编程等大量新特性,这些新特性使得Java变得更加强大。

2017年9月22日, Oracle 公司发布 Java SE 9,这次版本升级强化了Java的模块化系统,让 Java语言更轻量化,且采用了更高效、更智能的GI垃圾回收器,并在核心类库上进行大量更新,可进一步简化编程。

2018年3月21日,Java SE 10发布,Java 10 版本带来了很多新特性,其中最备受广大开发者关注的莫过于局部变量类型推断。此外,还包垃圾收集器改善、GC改进、性能提升、线程管控等新特性。

2018年9月26日,Java SE 11发布。这是Java大版本周期变化后的第一个长期支持版本 (LTS版本持续支持到2026年9月)。Java11 带来了ZGC、Http Client等重要特性,一共包含17个JEP(JDK Enhancement Proposals, JDK增强提案)。

2019年3月20日,Java SE 12发布。Java 12是短期支持版本,可在下一个版本发布之前获得Oracle的商业支持。

2019年9月23日, Java SE 13 发布,此版本中添加了“文本块”,文本块是一个多行字符串文字,避免对大多数转义序列的需要,以可预测的方式自动格式化字符串,并在需要时让开发人员控制格式。

2. Java特点特性

  • 一种纯面向对象的编程语言。
  • 一种与平台无关(跨平台)的语言。(它提供了在不同平台下运行的解释环境)
  • 一种健壮的语言,吸收了C/C++语言的优点。
  • 有较高的安全性。(自动回收垃圾,强制类型检查,取消指针)

二、环境搭建

1. JDK安装

步骤1: 去Oracle官网 https://www.oracle.com/index.html
步骤2: 注册并登陆
步骤3: 跳转到下载界面 https://www.oracle.com/java/technologies/javase-jdk11-downloads.html
步骤4: 选择对应的版本下载

步骤5: 安装

2. Eclipse安装

步骤1: 去Eclipse官网 https://www.eclipse.org/
步骤2: 跳转到下载界面 https://www.eclipse.org/downloads/packages/
步骤3: 选择对应的版本下载

步骤4: 安装

3. 环境变量配置

我本机电脑是Mac OS,所以大家可以按照截图内容,自己配置,需要配置的环境变量主要是JAVA_HOME、CLASSPATH。为什么要配置这两个变量呢?想要了解的在后续的章节中可以告诉你们哦,提前透露一下,这里的两个环境变量是与JVM的类加载机制有关哦。

4. 验证环境变量

可以通过java、javac命令来验证是否配置成功 (我这里用的JDK8,没有用JDK11)

5. 验证Eclipse

小伙伴们,其实呀,没有Eclipse也是可以编写Java程序的哦,那用什么呢?用记事本、notepad、sublime等等都可以。例如,下面所示
那怎么运行呢?还记得java、javac命令不,我带你试一下

       如上所示,不用Eclipse就可以呀。但是为什么建议还是要用Eclipse,或是IDEA呢?因为呀,这些集成开发工具,能够极大地便捷我们开发的流程,还有专门的项目管理界面,快捷键等功能,让我们能够对于项目的业务开发达到事半功倍的效果,所以,有必要用好一个工具哦,选择你喜欢的一个吧,这里介绍Eclipse。

步骤1: 打开Eclipse
步骤2: 选择一个工作环境

步骤3: Lanuch
步骤4: 创建一个Java项目

步骤5: 创建Hello.java文件

步骤6: 执行Hello.java文件

三、拓展知识点

小伙伴们,再坚持一下哈,这块拓展知识点有助于帮助你们理解这门Java语言哦。

1. Java跨平台原理

小伙伴们,我之前在介绍Java历史的时候,提到过Java这门语言具有跨平台的特性。但是你们知道Java为什么能够跨平台嘛?其实呀,Java能够跨平台不是这门语言本身的功劳,而是其内置的JVM所带来的哦,虽然不同平台的JVM不同,但不同平台上生成的.class文件一样哦。

你可以把JVM理解成一个可运行Java字节码的虚拟计算机系统。它有一个解释器组件,可以实现Java字节码和计算机操作系统之间的通信。对于不同的运行平台,有不同的JVM。JVM屏蔽了底层运行平台的差别,实现了“一次编译,随处运行”。

其实呀,对于Java而言,一个Java源代码文件经过编译,生成对应的class字节码文件,然后class字节码文件被加载到JVM中解析执行,生成结果。流程如下:

       通过上图你会发现当用javac编译.java文件后,是不是生成了对应的.class文件呀, .class文件能够被JVM加载(实际上是有三个环节的: 加载、链接、初始化),并被JIT(Just In Time)执行引擎执行,显示了执行结果,对吧。那你是不是想问,那这样的话,我换一种语言,只要能够解析成.class文件,是不是也能在JVM上面运行呢?你回答对啦!是的,前提是你必须遵循JVM规范,生成的.class文件符合规范所规定的要求,就可以啦。目前呀,市面上有好多语言就是这样弄得哦 ,例如:Java、Scala、Kotlin、Groovy。

通过上面的解释,小伙伴们,是不是对Java的跨平台原理有个更清晰地认识呢,继续加油哦。附一张较为详细的图:

2. JVM与GC

小伙伴们,我给你们再介绍一个很重要的知识点哈,JVM与GC的关系。GC是什么呢?GC全英文名为Garbage Collector,垃圾收集器,这个东西是干嘛呢?不知道小伙伴们,你们有没有C/C++的开发经验,在C/C++的开发中,是不是经常要申请内存空间、释放内存空间呀。在Java中呀,程序员是不需要主动释放内存空间的哦,这个工作完全交给GC去帮我们自动完成啦,超舒服哟~
       其实呢,GC与Java 的自动内存管理有关,而Java的内存模型由5部分组成: 堆、虚拟机栈、本地方法栈、程序计数器、方法区。其中GC主要是针对对象内存的回收。一般而言,对象主要存放在堆中,也就是说GC与堆的内存分配息息相关。由于刚刚开始,就不详细解释啦,这里先抛出几个问题,如下所示,等后面的章节中,给小伙伴们讲解哦。

3. JDK与JRE

哈哈,JDK与JRE的关系,小伙伴们,你们是不是傻傻分不清呀,下面我来给你们简单介绍一下。

首先JDK,JDK全称Java Development Kits,中文名为Java开发工具集,里面包含了JRE(Java Runtime Environment,Java运行时环境)和Java编译器javac、Java运行时解释器java、Java文档化工具javadoc及其它工具及资源。如果说,要进行Java程序的开发,那么JDK是必不可少的。

其次JRE。JRE上面介绍过,是Java运行时环境,如其名所示,如果不进行Java程序的开发,只是运行Java程序的话,有JRE足够了。JRE里面包含了JVM、Java API(应用程序编程接口)。

JRE有三项主要功能

  • 加载代码:由类加载器(class loader)完成;
  • 校验代码:由字节码校验器(byte code verifier)完成;
  • 执行代码:由运行时解释器(runtime interpreter)完成。

总结

小伙伴们,第一节内容结束啦。通过学习,我们了解到Java的发展史,搭建了Java的开发环境,同时呢,还拓展了几块知识点,帮助大家理解。那今天,就到这了哦,下一小节内容继续~

入门Java系列(一)——入门与学习方式相关推荐

  1. 二十天入门Java系列:第一天

    文章目录 第一天 01.01_计算机基础知识(计算机概述)(了解) 01.02_计算机基础知识(软件开发和计算机语言概述)(了解) 01.03_计算机基础知识(人机交互)(了解) 01.04_计算机基 ...

  2. java freemarker 分页_10小时入门java开发04 springboot+freemarker+bootstrap快速实现分页功能...

    本节是建立在上节的基础上,上一节给大家讲了管理后台表格如何展示数据,但是当我们的数据比较多的时候我们就需要做分页处理了.这一节给大家讲解如何实现表格数据的分页显示. 准备工作 还是老规矩,看效果图 可 ...

  3. 2022年最新最全的Java零基础入门,零基础入门springboot,MySQL的学习

    今天就来开始带领大家零基础入门Java开发 写在前面 为什么学习Java Java用途很广泛,如下图所示,Java可以做很多工作 JAVA语言发展史 2019年3月,JDK12版本发布. 2019年9 ...

  4. 【JAVA零基础入门系列】Day2 Java集成开发环境IDEA

    [JAVA零基础入门系列](已完结)导航目录 Day1 开发环境搭建 Day2 Java集成开发环境IDEA Day3 Java基本数据类型 Day4 变量与常量 Day5 Java中的运算符 Day ...

  5. 【JAVA零基础入门系列】Day14 Java对象的克隆

    [JAVA零基础入门系列](已完结)导航目录 Day1 开发环境搭建 Day2 Java集成开发环境IDEA Day3 Java基本数据类型 Day4 变量与常量 Day5 Java中的运算符 Day ...

  6. Java系列技术之JavaWeb入门-钟洪发-专题视频课程

    Java系列技术之JavaWeb入门-1193人已学习 课程介绍         JavaWeb里的基础核心技术 课程收益     把JavaWeb里的核心技术讲清楚! 讲师介绍     钟洪发更多讲 ...

  7. 1.偏头痛杨的Java入门教学系列之认识Java篇

    转载自:偏头痛杨的Java入门教学系列 地址:https://blog.csdn.net/piantoutongyang/article/details/70138697 前戏 今天我们主要来介绍一下 ...

  8. 带你Java入门(Java系列1)

    目录 前言: 1.什么是Java 2.Java的语言特点 3.初识Java的main方法 4.注释 5.标识符 6.关键字 7.1基本数据类型 7.2引用数据类型 8.变量 8.1.整形变量 8.2. ...

  9. java redis快速入门_快速入门Redis系列(3)——Redis的JavaAPI操作(附带练习)

    作为快速入门Redis系列的第三篇博客,本篇为大家带来的是Redis的JavaAPI操作. 码字不易,先赞后看! Redis的JavaAPI操作 看完了上一篇博客,相信大家对于Redis的数据类型有了 ...

最新文章

  1. linux关于bashrc与profile
  2. JSP中 input type 用法
  3. 计算机网络---TCP/UDP协议(一)
  4. unity运行环境_LG电子与Unity合作仿真软件 加速研发更安全的自动驾驶汽车系统...
  5. php面向对象编程调用结果,【PHP面向对象(OOP)编程入门教程】18.__call()处理调用错误...
  6. Spring MVC 3.2+ @ResponseBody 导致的中文乱码处理
  7. Python : async和await、asyncio与aiofiles
  8. 10.11 cocoapods安装
  9. 【车道线】车道线检测代码复现---lanenet(小白篇)
  10. 表单提交中文出现乱码-jsp中文乱码
  11. 电线电缆的基本测试方法
  12. 神经网络学习小记录61——Tensorflow2 搭建常见分类网络平台(VGG16、MobileNet、ResNet50)
  13. Windows生成SSH密钥
  14. 数据分析之大数据分析
  15. ssm+vue基本微信小程序的校园二手商城系统 计算机毕业设计
  16. powerpoint中如何使用母版
  17. 超融合走向红海,下一代超融合是新蓝海?
  18. 两化融合主要在哪些方面
  19. 【历史上的今天】6 月 19 日:iPhone 3GS 上市;帕斯卡诞生;《反恐精英》开始测试
  20. 使用Java实现上传图片到七牛云

热门文章

  1. 中柏平板u盘启动_中柏平板设置u盘启动图文教程
  2. 用计算机如何使用减法,excel减法函数怎么用使用教程
  3. Android系统手机USB驱动程序安装教程
  4. ESP32-C3入门教程 IoT篇⑧——微软云 Microsoft Azure 物联网 IoT 中心 EspAzureIoT 实战
  5. C#delegate、event、Action、EventHandler 的使用和区别
  6. nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器
  7. js 实现前端数据导出为excel表格
  8. 英利分布式:国内最高光伏空调3大亮点引关注
  9. 保险企业如何做好个人信息保护
  10. 大学计算机基础--1