【Java基础教程】(一)入门介绍篇 · 上:快速掌握核心概念,开启Java世界的探索之旅!这篇Java入门宝典助你翱翔~

news2024/10/7 8:23:29

Java基础教程之入门介绍 · 上

  • 本节学习目标
  • 1️⃣ Java发展简史
    • 1.1 诞生
    • 1.2 发展
    • 1.3 分支
  • 2️⃣ 特征
  • 3️⃣ 代码执行过程
  • 🌾 总结

在这里插入图片描述

本节学习目标

  • 清楚Java语言的发展历史以及语言主要特点;
  • 清楚Java代码从源文件到解释执行的大致过程;
  • 理解Java实现可移植性的实现原理;

1️⃣ Java发展简史

1.1 诞生

Java,这个酷炫的编程语言!它发展到如今已经成为了编程世界一个真正意义上的标杆。老实说,在技术开发公司里,大家为了让用户更方便地写程序,都选择用Java作为应用层的代表,通过Java来调用一些底层操作。比如现在流行的Android开发,就是通过Java调用Linux内核操作来搞定的!

如果你之前学过CC++的话,学Java会觉得眼前一亮!因为Java的语法结构和这些语言超级像!这样的天然优势,正是Java风靡全球的原因之一。没错,Java成了主流应用真的不冤枉。

而要了解Java的发展历程,我们先得回到1991年的那个“GREEN” 项目。当时电子邮件正在风靡一时,有个想法就是利用邮件控制家电设备的运行(有点像现在的物联网概念)。最初,SUN公司的工程师们打算使用C++来开发这个项目,但后来他们发现C++的复杂性过高,于是他们创造出了一个新平台——OAK(橡树)平台。

OAK是为网络而设计的一种精巧且安全的语言,主要由詹姆斯·高斯林设计(见图1)。SUN公司曾用OAK投标一个交互式电视项目,但遗憾的是输给了SGI(硅图)公司。此时的OAK几乎无处可去,然而马克·安德里森所开发的Mosaic(马赛克)和Netscape(网景)却给了OAK项目组以启示。SUN公司的工程师们用Java编写了HotJava浏览器,并得到了公司CEO史考特·麦克里尼(Scott McNealy)的支持,于是引领Java踏上了征服互联网的道路。

图1 Java之父:詹姆斯·高斯林

1.2 发展

1995年,为了推广Java编程语言,SUN公司正式将OAK改名为Java(咖啡),与此同时,随着互联网的迅猛发展,Java也开始在更多的网络项目中广泛使用。Java的发展历程可以概括为以下阶段:

  • 第一阶段(完善期):从JDK1.0(于1995年发布)到JDK1.2(于1998年发布,Java更名为Java2)。这个阶段主要着重于完善Java语言本身并增强开发工具和类库,重要的更新包括内部类、AWT/Swing GUI库、JDBC数据库访问等;

  • 第二阶段(平稳期):从JDK1.3到JDK1.4。这个阶段注重于提高性能和稳定性,而少有大规模破坏性改变。重要的更新包括垃圾回收器性能改进、Java Web Start、XML处理API等;

  • 第三阶段(发展期):从JDK1.5(于2005年发布)到JDK1.7(Oracle收购之后发布)。这个阶段标志着Java全面迈入成熟和创新的阶段,引入了许多重要的新技术和特性。其中最显著的包括泛型、注解、枚举、自动装箱拆箱、增强的循环语法(for-each)、并发编程API(如并发集合类和线程池)、JVM参数调优、更快的JIT编译器等。在Oracle(见图2)接手后,Java的发展仍在继续;

  • 第四阶段(现代化期):JDK1.8,也被称为Java 8,是Java发展历史上的一个重要里程碑。它引入了许多创新的特性,其中最著名的是函数式编程风格的Lambda表达式和流(Stream) API。Java 8还改进了日期和时间API(java.time包)、默认方法、Optional类等;

  • 第五阶段(演进期):JDK9至JDK11,在这个阶段,Java继续向前发展并引入一些重要特性,如模块系统(Java Platform Module System),使得更好的组织和管理代码。其他关键更新包括HTTP/2客户端支持、改进的集合工厂方法、响应式流程处理API(Reactive Streams)和JShell交互式编程工具等;

  • 第六阶段(持续演进期):JDK12以及之后的版本,Java持续演进并在每个版本中加入一些小而有用的特性改进。这些改进包括代码分段(Switch Expressions)、紧凑型数字格式化、预测能力增强等。

总结来说,Java的发展可以分为这六个大的阶段,每个阶段都带来了一系列新技术和重大更新,这些阶段代表了Java不断完善与演进的历程,也使得Java成为现在广泛应用的强大编程语言。随着时间的推移,Java继续发展,并持续在各个领域和平台上焕发光彩。

🔍关于更详细的JDK各个版本的发展历史,可以参阅我的另一篇文章:
【Java基础教程】特别篇:JDK发展史详解

图2 SUN公司、ORACLE公司的LOGO

1.3 分支

Java语言在其产生以来,在许多领域都得到了广泛的技术支持。除了适用于网络应用的JavaEE(Java Enterprise Edition),它还具备强大的硬件支持。Java的开发可以分为三个主要分支:JavaEEJavaSEJavaME(见图3)。下面将对这三个分支逐一进行解释。

  • JavaSE(Java标准版): 最早称为J2SE(Java 2 Platform Standard Edition),在2005年之后更名为JavaSE。JavaSE是Java平台的核心部分,提供了完整的JVM(Java虚拟机)和标准类库,是用于构建应用程序和独立运行的标准开发工具包。无论是桌面应用程序、命令行工具还是其他通用型应用,JavaSE都提供了丰富的功能和库来支持开发;

  • JavaEE(Java企业级开发):JavaEE曾被称为J2EE(Java 2 Enterprise Edition),是针对企业级应用开发而设计的。它基于JavaSE,并在其基础上提供了一系列的API和服务,用于开发复杂的、分布式的、可伸缩性强的企业级应用程序。JavaEE提供了诸如EJB(Enterprise JavaBeans)、servlet、JDBC(Java数据库连接)、JMS(Java消息服务)等技术,用于处理事务、持久化、安全性、多线程、通信等企业级需求;

  • JavaME(Java嵌入式开发):JavaME原名Micro Edition,针对嵌入式设备和移动设备的开发而设计。它提供了一套精简的Java运行环境和类库,以满足资源有限的设备(如手机、智能卡、传感器等)的需求。JavaME适合在有限的内存和处理能力下运行,提供了移动应用开发所需的API和配置文件。

这三个分支相互补充,满足不同领域的开发需求。JavaSE是基础,JavaEE用于开发大规模的企业级应用,JavaME则专注于嵌入式和移动设备开发。通过使用这些分支,Java语言成为了一个全面的、跨平台的开发工具。

图3 JavaEE、JavaSE和JavaME间的关系及作用

2️⃣ 特征

Java语言具有许多强大的特性,吸引了众多程序员。以下是对这些特性进行详细介绍:

  1. 简洁有效:Java语言注重简洁性和可读性,采用清晰的语法和面向对象的编程范式,使得代码易于编写、理解和维护。Java还提供了丰富的类库和工具,使开发变得高效和快速。

  2. 可移植性:Java被设计为一种可移植的语言,可以在不同平台上运行,如Windows、Mac、Linux等,而无需修改源代码。这得益于Java虚拟机(JVM)的存在,它提供了一个独立于操作系统的执行环境。

  3. 面向对象:Java是一种纯粹的面向对象编程语言,所有的代码必须位于类中。这种编程范式使得代码结构清晰且易于扩展,促进了可重用性和模块化开发。

  4. 解释型:Java使用解释器直接将源代码转换为字节码,并由JVM动态地解释执行字节码。这种特性使得Java具有跨平台的能力,同时也为动态性和灵活性提供了基础。

  5. 适合分布式计算:Java内置了用于网络通信的行业标准API,如SocketRMI(远程方法调用)、CORBA(公共对象请求代理体系结构)等。这使得Java成为开发分布式应用和网络服务的强大工具。

  6. 较好的性能:Java通过JIT(即时编译)将热门的字节码编译为本地机器代码,提高了执行速度。此外,Java使用垃圾回收器自动管理内存,减轻了开发者负担,并且可优化内存使用效率。

  7. 健壮性:Java具备强大的异常处理机制,可以有效地处理错误和异常情况,增加程序的稳定性。此外,Java还提供了严格的类型检查和内存管理,减少了潜在的运行时错误。

  8. 多线程处理能力:Java天生支持多线程编程,提供了丰富的并发编程库和工具,使得开发者可以轻松创建并发应用。多线程能力有助于提高程序的响应性和资源利用率。

  9. 高安全性:Java内置了一些安全性特性,如沙箱安全模型、类加载检查、安全管理器等。这使得Java在 Internet环境下能够安全地执行代码,防止恶意行为和安全漏洞。

  10. 动态语言:Java虚拟机(JVM)支持动态语言功能,允许对字节码进行动态生成和修改。这为Java提供了动态加载、反射、代理等强大的能力,使得开发更加灵活和可扩展。

  11. 丰富的类库:Java拥有庞大的类库生态系统,既包含核心类库(如集合、IO、网络等),也有第三方库和框架(如SpringHibernate等)。这些类库为开发者提供了广泛的功能组件和工具,简化了开发过程,提升了开发效率。

这些特性共同构成了Java的优势,使其成为一种广泛应用和受欢迎的编程语言。

3️⃣ 代码执行过程

清楚了以上Java语言的主要特点后,下面再来看一下Java语言的运行机制。首先计算机高级语言类型主要有编译型和解释型两种:

🔍关于编译型语言和解释性语言的区别

计算机不能直接的理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言的编写的程序。翻译的方式有两种,一个是编译,一个是解释。

  • 解释性语言是指它常用的执行机制是使用一个“解释器”来执行,解释器对于程序是一句一句“翻译”成机器语言来执行,例如shell脚本语言;
  • 编译型语言是指它常用的执行机制是使用一个“编译器”来编译成机器语言,然后就可直接执行这个编译好的“可执行文件”,例如C语言。

不管是解释性语言还是编译型都可编译或解释,前提是有这样的编译器或解释器。所以各种编程语言本质没什么不同,所谓的“解释性”和“编译”指的是执行机制上的不同。

而Java是两种类型的集合,Java中处理代码的过程(如图4)如下:

图4 Java的代码执行过程

Java程序文件的后缀是“*.java”,而任何一个*.java程序首先必须经过编译,编译之后会形成一个*.class的文件(字节码文件),而后在计算机上执行,但是解释程序的计算机并不是一台真正意义上的计算机,而是一台由软件和硬件模拟出来的计算机——Java虚拟机(JavaVirtualMachine,JVM)。

在Java中所有的程序都是在JVM上运行的,Java虚拟机(JVM)读取并处理经过编译的与平台无关的字节码*.class文件。Java解释器负责将Java虚拟机的代码在特定的平台上运行。JVM实现可移植性的原理(如图5)如下:

图5 JVM实现可移植性的原理

Java虚拟机的最大作用体现在平台的支持上,通过图5可以发现,所有要解释的程序都要在JVM上执行,并且由不同版本的JVM匹配不同的操作系统,这样只要JVM的支持不变,程序就可以任意地在不同的操作系统上运行。但是这种运行方式很明显没有直接运行在操作系统上性能高,不过随着硬件技术的发展,这些问题几乎可以忽略。

🌾 总结

本文回顾了Java语言的发展历史、主要特点以及代码从源文件到解释执行的过程,同时介绍了Java实现可移植性的原理。

可以知道Java语言经历了多个阶段的发展,不断引入新技术和特性。从JDK1.0到现在的最新版本,Java变得更加强大、成熟和全面。它具有简洁有效、可移植性、面向对象、健壮性、高安全性以及动态语言等重要特点。

而代码从源文件到解释执行,首先会通过编译器将源文件转换为字节码文件(以.class为扩展名)。然后,Java虚拟机(JVM)将字节码加载到内存中,并通过解释器逐行执行字节码。同时,JVM还使用即时编译器(JIT)将热门的字节码编译为本地机器代码,提高代码执行效率。

而Java实现可移植性得益于两个主要因素。首先,Java采用了字节码的形式,它是一种与具体操作系统和硬件无关的中间代码。其次,Java虚拟机(JVM)作为一个在目标操作系统上运行的软件层,它负责将字节码转换为适合不同操作系统执行的指令,实现了解释执行的跨平台特性。

通过这篇文章的介绍,我们可以看到Java语言在发展历史中经历了多个阶段,并拥有许多强大的特点。同时,Java代码的解释执行过程以及Java实现可移植性的原理也被详细解释。这使得Java成为了一种广泛应用的编程语言,被开发者广泛接受和使用。


本文图片来源:
禅与计算机程序设计艺术:Java 之父 James Gosling 最新访谈:JI
甲骨文收购sun,甲骨文为什么收购sun
JAVA系统学习之三大版本JavaSE、javaEE、javaME
Java的前生今世(上)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/717866.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

react—Hook(1)

1. useState——见react语法(2) 2. useEffect——见react语法(2) 3. useRef—获取页面元素 用来获取页面中的元素,这样就可以对这个元素进行操作。获取元素需要使用.current才能获取到页面中的具体元素。 定义&…

thinkphp6使用think-queue实现普通队列和延迟队列

Redis的延迟队列可以用于以下场景: 需求说明: 当用户申请售后,商家未在n小时内处理,系统自动进行退款。 商家拒绝后,用户可申请客服介入,客服x天内超时未处理,系统自动退款。 用户收到货物&…

Xray-基础详细使用

一:Xray介绍 Xray 是一款功能强大的安全评估工具,由多名经验丰富的一线安全从业者呕心打造而成,可支持与AWVS,BP等众多安全工具联合使用。 二:Xray简易架构: 说明:了解 Xray 的整体架构可以更…

python语法 变量、print、注释和运算符

文章目录 1. 变量1.1 变量名1.2 变量值1.3 查看变量类型 2. print2.1 常规使用2.2 格式化操作符 %2.2.1 格式化符号2.2.2 格式化操作符的辅助指令2.2.3 转义字符 2.2 .format() 3. 注释4. 算术运算符5. 逻辑运算符6. 按位操作符7. 比较运算符8. 复合赋值运算符5. 成员操作符 1.…

Spring 最全入门教程详解

目录 一、Spring Framwork简介1. Spring Framework五大功能模块2. Spring Framework特性 二、IOC容器1. IOC思想2. IOC容器在Spring中的实现3.基于xml管理Bean3.1 引入依赖3.2 创建类3.3 创建Spring的配置文件3.4 创建测试类3.5 总结 4.DI依赖注入4.1 setter注入4.2 构造器注入…

基于Java电脑配件销售系统设计实现(源码+lw+部署文档+讲解等)

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

Vue脚手架开发入门

Vue脚手架开发入门 安装脚手架及初始化项目 略过 后续使用的项目就是新搭建的一个项目 组件间的通信 父传子 查看《Vue初始化项目加载逻辑》这篇文章即可 父组件 子组件 子传父 场景:例如你的购物车,里面有很多商品,每个商品是一个…

PoseiSwap 治理通证POSE登录PancakeSwap,开盘涨幅超2100%

在 7 月 4 日,PoseiSwap 治理通证 $POSE 上线了 BNB Chain 上的头部 DEX PancakeSwap(POSE/ZBC 交易对),在 $POSE 开盘交易的 10 分钟内,其最高涨幅达到了 2169.22%,所有的早期投资者基本都从中获得了不菲的…

测试与产品的那些撕逼大战

产品与测试,本该是一对好兄弟,一个为产品质量负责,一个为产品质量服务。但往往事与愿违,经常出现产品与测试撕逼大战。 为需求而撕逼 测试:需求不明确,测试用例写不出来! 产品:你不…

合并回文子串(区间dp)

传送门 输入两个字符串A和B,合并成一个串C,属于A和B的字符在C中顺序保持不变。如"abc"和"xyz"可以被组合成"axbycz"或"abxcyz"等。 我们定义字符串的价值为其最长回文子串的长度(回文串表示从正反两…

Dlib —— 对视频流进行人脸识别(附C++源码)

照片效果 视频效果 注意:Dlib检测人脸在Release版耗时与CPU有关,本人I7 10代约100ms左右,这里本人将人脸检测用Yolov5对人脸简单抠图训练后 使用yolov5推理检测人脸,之后将检测到的人脸输入给Dlib做特征,发现人脸特征部分耗时也较…

androidx.appcompat.widget.SearchView怎么改搜索框提交按钮

searchView.isSubmitButtonEnabled true,运动后如下图: 怎么改搜索框提交按钮,按下图操作: 或者 打开SearchView进入看,一样 搜索框提交按钮改好了,如下图:

SparkSQL的数据结构DataFrame构建方式(Python语言)

SparkSQL 是Spark的一个模块, 用于处理海量结构化数据,其提供了两个操作SparkSQL的抽象,分别是DataFrame和DataSet,spark2.0之后,统一了DataSet和DataFrame,以后只有DataSet。 以Python、R语言开发Spark,使…

BurpSutie拓展插件推荐-原始模块增强插件

为方便您的阅读,可点击下方蓝色字体,进行跳转↓↓↓ 01 Logger(1)工具介绍(2)下载地址(3)使用说明 02 HAE(1)工具介绍(2)下载地址&…

【C语言static关键字】

C语言static关键字 C语言之static1、什么是static?2、static的意义3、C/C static的属性4、static的用法4.1、static修饰局部变量例程4.2、static修饰全局变量例程4.3、static修饰函数例程 5、结束语 C语言之static 前言: 先简单了解下“三大区”&#x…

数据人一直做这四项工作,即使不被BI、AI取代,也躲不过35危机!

先说我的观点:数据分析职业不会被BI软件替代。顺便说一句,数据分析职业也不会被chatgpt取代。 大家首先要搞清楚:取代人的从来不是工具,而是会使用工具的人。 数据分析师工作内容 首先,先让我们来全面拆解一下国内数…

聊聊极限编程与测试启发

这是鼎叔的第六十五篇原创文章。行业大牛和刚毕业的小白,都可以进来聊聊。 欢迎关注本公众号《敏捷测试转型》,星标收藏,大量原创思考文章陆续推出。 继续聊聊著名的敏捷研发框架:极限编程。 极限编程(Extreme Prog…

从腾讯、阿里、联想的ESG报告,看数字企业发展的「碳门槛」

从“互联网”到“数字化”,再到“ESG”。数字化不仅帮助企业打开了从传统到现代化的通路,也帮助企业打开了从无序到环保、通往低碳的大门。 作者|斗斗 编辑|皮爷 出品|产业家 一年一度的ESG报告披露正在来临。 腾讯发布2022年ESG(即“…

一天掌握latex论文编辑,从标题作者,段落,数学公式,图片,图表,到参考文献全流程

目录 以下是一个基于SCI模板的完整LaTeX论文示例,包含注释说明 1. 创建文档: 2. 标题和作者信息: 3. 段落和文本格式: 4. 列表: 5.图片和表格: 5.1插入图片 5.2 插入表格 5.2.1 示例1 :…