【熬夜爆肝版】JAVA基础入门专栏——1.JAVA开发入门

news2025/2/23 14:20:39

JAVA开发入门

  • 1、Java概述
    • 1)起源
    • 2)特点
    • 3)应用领域
  • 2、JDK
    • 1)定义
    • 2)作用
    • 3)组成
    • 4)JDK版本与兼容性
    • 5)JDK的安装与配置
    • 6)JDK的发行版
  • 3、系统环境变量
    • 1)定义
    • 2)作用
    • 3)类型
    • 4)Windows系统中的设置方法
    • 5)常见的系统环境变量
    • 6)环境变量的读取和使用
    • 7)注意事项
  • 4、Java程序运行机制
    • 1)编写java代码
    • 2)编译Java代码
    • 3)加载字节码文件
    • 4)执行字节码文件
    • 5)JVM优化和内存管理
    • 6)运行java程序
    • 7)异常处理
  • 5、总结

前言:本章节的思维导图

在这里插入图片描述

1、Java概述

1)起源

Java是由Sun Microsystems(现在是Oracle)的詹姆斯·高斯林(James Gosling)和他的团队开发的。最初,Java是为家电设备编写控制程序而设计的,并且由于其平台无关性和面向对象的特点而受到了广泛的关注。

你知道为什么java的图标是一杯热咖啡的样子吗
在这里插入图片描述

Java的起源可以追溯到20世纪90年代初期,当时Sun Microsystems公司的一群工程师正在研究新的技术,以便在家电和计算机之间进行数据传输。这个项目被称为“绿色计划”。

在研究中,这些工程师意识到需要一种新的编程语言,可以让程序在不同的计算机和家电设备之间进行交互。他们开始着手开发一种名为Oak的语言,以便实现这个目标。

Oak最初是被设计成一种嵌入式系统的编程语言,专门用于家电和其他嵌入式设备上。但是随着Web的兴起,Oak开始吸引更广泛的开发者的注意力,Sun公司决定将它改名为Java,并将其推广为一种适用于互联网的通用编程语言。

Java的命名灵感来自于创始人James Gosling所在公司对于喝咖啡的热衷,他们认为Java这个名字听起来非常有活力和欢快,可以给人一种积极的感受。

2)特点

  1. 简单性:Java语言设计简洁、清晰,易于学习和使用。它摒弃了一些复杂的特性,注重代码的可读性和可维护性。

  2. 面向对象:Java是一种面向对象的编程语言,支持封装、继承和多态等面向对象的特性。这使得编写和管理复杂的软件项目更加方便和高效。
    在这里插入图片描述

通俗讲:面向对象就是将问题拆解成由对象组成的模块,每个对象都有自己的属性(数据)和行为(方法),并通过对象之间的交互来完成任务。可以以一个简单的例子来说明面向对象的概念。假设我们要设计一个汽车管理系统,我们可以将汽车看作是一个对象,这个对象具有一些特征(例如颜色、品牌、车速等)和行为(例如启动、加速、刹车等)。在面向对象的设计中,我们可以创建一个“汽车”类来定义汽车的属性和方法,并根据需要创建多个汽车对象。

  1. 跨平台性:Java具有很强的平台独立性,一次编写,到处运行。Java程序在不同的操作系统上可以保持良好的兼容性,只需在目标平台上安装Java虚拟机(JVM)即可运行。
    在这里插入图片描述

通俗讲:假设你开发了一个桌面应用程序,最初是为Windows操作系统设计的。但是后来,你希望这个应用程序也能在Mac操作系统上运行。如果你的应用程序具备跨平台性,你只需要进行少量的修改或适配,就可以使它能够在Mac上正常运行,而无需从头开始重新编写。

  1. 安全性:Java内置了许多安全机制,如内存管理、异常处理和安全沙箱等,可以有效地防止一些常见的安全漏洞和错误。

  2. 高性能:Java通过即时编译器(Just-In-Time Compiler)将字节码文件转换为本地机器码,在运行时实现高效的执行速度。此外,Java的垃圾回收机制可以自动管理内存,减轻开发人员的负担。

  3. 多线程支持:Java提供了内置的多线程支持,使得编写并发程序更加容易。多线程可以实现任务的并行执行,提高程序的执行效率。

通俗讲:我们可以将线程理解为程序中独立执行的一段代码,每个线程都有自己的指令序列和执行上下文。在单线程编程中,程序按照顺序依次执行每条指令,只能顺序地执行任务,如果遇到耗时的操作,程序会被阻塞住,不能进行其他操作。而在多线程编程中,程序可以创建多个线程,在同一时刻并发地执行多个任务,不会出现阻塞的情况。

  1. 大型生态系统:Java拥有庞大且活跃的开发社区和生态系统,有着丰富的开发工具、框架和第三方库供开发者使用,能够满足各种不同需求的应用开发。

3)应用领域

  • 企业级应用开发:Java EE(Enterprise Edition)提供了一系列的技术和规范,用于开发大型企业级应用。

例如:电子电子、人力资源管理系统、大数据分析平台、企业资源计划系统等等

  • 桌面应用程序:Java提供了AWT、Swing和JavaFX等库,用于开发图形用户界面的桌面应用程序。

例如:音视频播放器、邮件客户端等等

  • 移动应用开发:通过Java ME(Micro Edition),可以开发运行在移动设备上的应用程序,如手机、PDA等。
  • 嵌入式系统开发:Java可以用于开发嵌入式系统,如家电、智能卡等。
  • Web应用开发:Java提供了各种用于开发Web应用的技术和框架,如Servlet、JSP、Spring、Hibernate等。

2、JDK

在这里插入图片描述

1)定义

JDK(Java Development Kit)是Java开发工具包的缩写,它是Java开发的核心组件之一

2)作用

JDK是用于开发和编译Java应用程序的软件包。它包含了Java编译器(javac)、Java运行时环境(JRE)以及一系列辅助工具和类库

3)组成

  • Java编译器(javac):用于将Java源代码编译为字节码文件(.class文件),供Java虚拟机(JVM)执行。
  • Java运行时环境(JRE):包含了Java虚拟机(JVM)和Java类库,用于执行和运行Java程序。
  • 辅助工具:JDK包含了一些实用的辅助工具,如Java文档生成工具(javadoc)、Java调试器(jdb)等。
  • 类库:JDK提供了丰富的类库,包括Java标准库(如java.lang、java.util等)、Java图形界面库(如AWT、Swing)以及其他各种扩展库。

4)JDK版本与兼容性

JDK有多个版本,每个版本都有不同的功能和改进。新版本的JDK通常向后兼容旧版本的代码,但也可能引入一些不兼容的变化。为了确保稳定和兼容性,开发人员应该选择适合自己项目的JDK版本,并遵循相应的迁移和升级策略。

5)JDK的安装与配置

要使用JDK进行Java开发,需要先安装JDK并正确配置开发环境。其中包括设置JDK的路径、设置Java开发工具(如Eclipse、IntelliJ IDEA等)的相关配置、配置编译选项等。

下载
官网

  • 在官网首页菜单栏,点击Products,在Software中找到Java,单击该选项
  • 在界面中往下滑,选择Java SE,找到Oracle JDK,点击进入JDK下载界面
  • 在该界面可以找到各种版本的JDK,选择自己需要的版本进行下载即可

安装

  • 下载完JDK到本地后,找到该文件,双击运行JDK安装程序
  • 注意安装的路径不能带有中文
  • 自行找一个教程来进行安装即可,网上很多

6)JDK的发行版

  • Oracle JDK:Oracle公司是Java的主要维护者和发布者,他们提供了Oracle JDK,是Java开发中最常用和官方支持的版本。
  • OpenJDK:OpenJDK是一个开源的JDK实现,由Java社区开发和维护。很多Linux发行版都使用OpenJDK作为默认的Java开发工具。

3、系统环境变量

1)定义

系统环境变量指的是在操作系统中定义的一些全局变量,它们的值可被所有进程共享和访问。也就是说,在你的电脑上配置了某个环境变量,那么在任意目录下终端都可以执行相对应的命令,比如说,你配置了java_JDK的环境变量,那么可以使用java -version命令在任何目录下打开的终端来查看jdk版本。没有配置系统环境变量的话,只能在安装jdk的目录下打开终端执行相关的命令。

2)作用

环境变量可以设置一些全局的配置信息,如程序存放路径、默认字体、编码等。它们用于告诉操作系统和应用程序在执行时需要哪些配置信息和资源。

3)类型

  • 系统环境变量:系统级别的环境变量,对所有用户有效,包括操作系统和安装的软件。
  • 用户环境变量:每个用户都有一个独立的环境变量,只对当前用户有效,不影响其他用户。

4)Windows系统中的设置方法

window11为例

  • 在“我的电脑”属性页面中,点击“高级系统设置”;

![[Pasted image 20231006154311.png]]

  • 在“高级”选项卡中,点击“环境变量”;

![[Pasted image 20231006154351.png]]

  • 在“系统变量”中添加、编辑或删除变量。

![[Pasted image 20231006154442.png]]

5)常见的系统环境变量

  • PATH定义系统搜索执行文件的路径。在Windows中,当输入命令时,系统会按照PATH环境变量中的路径依次查找对应的可执行文件。

  • HOME定义当前用户的主目录。

  • TEMP定义系统临时文件存放的目录,一些程序在运行过程中需要创建临时文件,可以使用该环境变量指定保存位置。

  • USERPROFILE定义当前用户的个人资料文件夹路径。

  • JAVA_HOME定义Java开发环境的安装路径,一些Java相关的应用程序会使用该环境变量来查找JRE或JDK的路径。

  • CLASSPATH定义Java类的搜索路径,当Java虚拟机需要加载类时,会按照CLASSPATH环境变量中指定的路径依次查找。

  • OS定义操作系统类型,值可以是Windows、Linux、Unix等。

  • PATHEX定义系统的可执行文件后缀名,默认情况下Windows中包含.exe、.bat、.cmd等后缀名。

6)环境变量的读取和使用

在应用程序中可以通过编程方式读取环境变量的值,如使用System.getenv()方法读取环境变量。读取后可以根据不同的需求使用环境变量的值,如拼接路径、加载库文件等。

7)注意事项

  • 修改环境变量时需谨慎,错误的修改可能会影响系统或造成软件无法正常工作;
  • 环境变量的使用需要依据具体操作系统和应用程序进行设置和调整;
  • 环境变量是全局的,因此需注意变量名的唯一性,避免重复或冲突。
    在这里插入图片描述

4、Java程序运行机制

在这里插入图片描述

1)编写java代码

开发人员使用Java编程语言编写源代码文件(.java文件),其中包含类、方法和变量等程序逻辑。

2)编译Java代码

使用Java编译器(javac)将源代码文件编译成字节码文件(.class文件)。字节码文件是Java虚拟机(JVM)可执行的中间代码,它包含了与特定平台无关的指令序列。对源文件进行错误排查的过程,编译后将生成后缀名为.class的字节码文件,该文件可以被Java虚拟机(JVM)的解释器正常读取。

3)加载字节码文件

Java虚拟机负责将字节码文件加载到内存中,并对类进行解析、验证和准备工作。这些步骤包括检查字节码文件的格式和语义规则,确保代码的正确性和安全性。

4)执行字节码文件

Java虚拟机通过解释器或即时编译器将字节码文件转换成机器代码,并执行程序逻辑。解释器逐条解释字节码指令,逐步执行程序;而即时编译器在运行时将热点代码(经常执行的代码)编译成本地机器代码,以提高执行效率。

5)JVM优化和内存管理

Java虚拟机通过各种优化技术(如逃逸分析、即时编译等)来提高程序的执行效率。同时,JVM还负责自动管理内存,包括垃圾回收和内存分配等。

6)运行java程序

在Java虚拟机上运行的Java程序可以是独立的应用程序,也可以是在Web容器中执行的Web应用程序。Java提供了丰富的类库和API,可以用于开发各种类型的应用,包括桌面应用、移动应用、Web应用和企业级应用等。

独立的Java应用程序需要使用命令行来启动,通常为java命令加上带有main方法的类名。而Web应用程序则需要部署到Web服务器中,如Tomcat、Jetty等,由Web服务器来管理Java虚拟机的运行环境,通过HTTP协议与客户端进行交互,实现Web应用的访问和响应。

7)异常处理

在Java应用程序的开发过程中,异常处理十分重要,Java程序在运行过程中可能抛出异常,如空指针异常、数组越界异常等。开发人员可以使用try-catch语句来捕获并处理这些异常,保证程序的稳定性和可靠性。

5、总结

以上主要介绍java入门的一些需要了解的知识点,对于以上,只需要懂得下载安装jdk并进行系统环境变量配置,下载自己进行java开发所用的编辑器,如:IDEA、eclipse、等,这里推荐入门是社区版的IDEA。在了解以上就可以继续学习了。
在这里插入图片描述

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

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

相关文章

【Java项目推荐之黑马头条】你的登录鉴权业务是怎么实现的?

前言 在学习Java的路上还是遇到了很多不错的好项目的,今天分享给大家,希望能对大家面试有所帮助! 后续会继续推荐其他好的项目,这次推荐的是B站开源的视频黑马头条项目,来吧学会它一起去虐面试官!&#x…

【C语言初阶】初识C语言

目录 一、什么是C语言 二、第一个C语言程序 三、数据类型 类型的使用: 四、变量、常量 4.1 定义变量的方法 4.2 变量的命名 4.3 变量的分类 4.4 变量的使用 4.5 变量的作用域和生命周期 4.5.1 作用域 4.5.2 生命周期 4.6 常量 五、字符串转义字符注释 …

【计算机组成 课程笔记】7.2 DRAM和SRAM

课程链接: 计算机组成_北京大学_中国大学MOOC(慕课) 7 - 2 - 702-DRAM和SRAM(13-22--)_哔哩哔哩_bilibili 从【计算机组成 课程笔记】7.1 存储层次结构概况_Elaine_Bao的博客-CSDN博客中,我们了解到:SRAM比较快&#x…

x64内核实验5-API进0环

x64内核实验5-API进0环 今天开始我们来分析系统api进0环的过程 系统调用3环部分的过程分析 先写一个应用程序然后我们调用一个readprocessmemory的系统api #include <Windows.h> #include <stdio.h>DWORD32 testVal 111;int main() {HANDLE h GetCurrentProc…

DatenLord前沿技术分享 No.36

达坦科技专注于打造新一代开源跨云存储平台DatenLord&#xff0c;通过软硬件深度融合的方式打通云云壁垒&#xff0c;致力于解决多云架构、多数据中心场景下异构存储、数据统一管理需求等问题&#xff0c;以满足不同行业客户对海量数据跨云、跨数据中心高性能访问的需求。在本周…

ChatGPT已进化到会看图和说话了,上教程

HI&#xff0c;同学们&#xff0c;我是赤辰&#xff0c;本期是第14篇AI工具类教程&#xff0c;文章底部准备了粉丝福利&#xff0c;看完后可领取&#xff01; ChatGPT又又又升级&#xff01;这次是支持语音聊天和图像问答。 这意味着用户现在除了键盘文本输入外&#xff0c;还可…

【JavaEE】多线程进阶(一)饿汉模式和懒汉模式

多线程进阶&#xff08;一&#xff09; 文章目录 多线程进阶&#xff08;一&#xff09;单例模式饿汉模式懒汉模式 本篇主要引入多线程进阶的单例模式&#xff0c;为后面的大冰山做铺垫 代码案例介绍 单例模式 非常经典的设计模式 啥是设计模式 设计模式好比象棋中的 “棋谱”…

三一充填泵:煤矿矸石无害化充填,煤炭绿色高效开采的破局利器

富煤贫油少气是我国的能源禀赋特征&#xff0c;决定了我国以煤炭为主的能源结构&#xff0c;煤炭为国民经济发展提供了重要的基础。煤炭开采过程会对土地、地下水、空气等环境造成较大的污染&#xff0c;但大宗固废煤矸石无害化充填的技术手段可以有效改善这样的情况&#xff0…

LabVIEW使用机器学习分类模型探索基于技能课程的学习

LabVIEW使用机器学习分类模型探索基于技能课程的学习 教育中的学习评估对教育工作者来说是一项繁琐的工作&#xff0c;但评估的好处是显着的。由于其开放性和复杂性&#xff0c;使用传统的评估方法为学生提供及时的支持一直具有挑战性。在Covid-19大流行期间突然转向在线学习&…

总结二:linux面经

文章目录 1、 Linux中查看进程运行状态的指令、查看内存使用情况的指令、tar解压文件的参数。2、文件权限怎么修改&#xff1f;3、说说常用的Linux命令&#xff1f;4、说说如何以root权限运行某个程序&#xff1f;5、 说说软链接和硬链接的区别&#xff1f;6、说说静态库和动态…

QT聊天室阶段性记录(完善中:注册功能,数据库存储)

server.h #ifndef SERVERDEMO_H #define SERVERDEMO_H#include <QObject> #include <QTcpServer> #include <QMap> #include <QSqlDatabase> //数据库管理类 #include <QSqlQuery> //执行sql语句的类 #include <QSqlRecord> //数据库…

最全MacBook选购指南 | 看完你就知道怎么买

最全MacBook选购指南 | 看完你就知道怎么买 作为MacBook的老用户大大小小的型号也都用了不少 那这么多台MacBook到底怎么选呢&#x1f4a1; . ☑️M1和Intel的MacBook有什么差别呢&#xff1f; 下半年苹果发布的两款MacBook都是苹果自研的芯片M1。在此之前苹果一直用的都是Inte…

解决报错:模块“react-redux“没有导出的成员“TypedUseSelectorHook”

在react整合typescript,redux时&#xff0c;写hook.ts时报这个错&#xff1a;模块"react-redux"没有导出的成员“TypedUseSelectorHook” 现象如下&#xff1a; 原因&#xff1a;react-redux版本太低&#xff0c;至少要升级到7.2.3以后才能包含TypedUseSelectorHook…

Clion中使用C/C++开发stm32程序

前言 从刚开始学习阶段&#xff0c;一直是用的keil5开发stm32程序&#xff0c;自从看到稚晖君推荐的CLion开发嵌入式程序后&#xff0c;这次尝试在CLion上开发stm32程序。 1、配置CLion用于STM32开发的环境 这里我就不详细写了&#xff0c;没必要重新写&#xff0c;网上教程很多…

【Java项目推荐之黑马头条】自媒体文章实现异步上下架(使用Kafka中间件实现)

自媒体文章上下架功能完成 需求分析 流程说明 接口定义 说明接口路径/api/v1/news/down_or_up请求方式POST参数DTO响应结果ResponseResult DTO Data public class WmNewsDto {private Integer id;/*** 是否上架 0 下架 1 上架*/private Short enable;}ResponseResult 自媒…

哈希/散列--哈希表[思想到结构][==完结版==]

文章目录 1.何为哈希?1.1百度搜索1.2自身理解1.3哈希方法/散列方法1.4哈希冲突/哈希碰撞1.5如何解决?哈希函数的设计 2.闭散列和开散列2.1闭散列/开放定址法2.2开散列/链地址法/开链法1.概念2.容量问题3.字符串问题4.开散列性能测试5.开散列与闭散列比较 3.代码实现[配备详细…

【Luckfox pico入门记录(一)】开发环境与工具链

写在前面 最近刷bilibili发现微雪电子关于luckyfox pico的介绍视频&#xff0c;感叹linux开发板居然可以把价格缩到100RMB以内&#xff0c;也正巧结束了复旦微比赛&#xff0c;受够了FM33LC046N的低性能&#xff0c;来玩点便宜又高性能的板子。   开发板型号&#xff1a;luck…

【JavaEE】_构造HTTP请求与HTTPS

目录 1. 构造HTTP请求 1.1 form标签构造HTTP请求 1.1.1 form标签构造GET请求 1.1.2 form标签构造POST请求 1.2 通过ajax构造HTTP请求 1.3 form与ajax 1.4 使用ajax构造HTTP请求 2.HTTPS 2.1 对称加密 2.2 非对称加密 2.3 证书 1. 构造HTTP请求 1.1 form标签构造HTT…

软考高项-第五章:信息系统工程

重点知识点&#xff1a; 以上总结&#xff0c;仅供参考。