兔C_Java集:Java 语言简介

news2024/11/29 2:47:28

文章目录

    • 1. Java简介
      • 历史简介
      • 问:Oracle 为什么收购 SUN 公司
      • 关于三个分支
      • 语言特性:
    • 2. JDK 的安装与配置
      • 安装的官网链接
      • 配置环境变量
    • 3. 第一个Java程序
    • 4. 第一个程序解释
      • 关于类的定义
    • 5. CLASSPATH
      • 命令自动配置
      • CLASSPATH 与 JVM 的关系
      • CLASSPATH 的手动配置
      • PATH 与 CLASSPATH两者区别

1. Java简介

Java 是一门编程语言,发展至今,已经成为一个真正意义上的语言标准,现在一些技术开发公司为了方便用户进行程序的编写,往往都使用 Java 作为应用层封装的标准,通过 Java 来调用一些底层的操作。

在这里插入图片描述

历史简介

于 1995 年,SUN 公司正式将 OAK 更名为 Java 进行推广。
随着会联网的发展,Java 的发展可以归纳为三个分支:

  1. 第一阶段(完善期):JDK 1.0,1995 年推出 —— 1992年 JDK 1.2 版本
  2. 第二阶段(平稳期):JDK 1.3 —— JDK 1.4
  3. 第三阶段(发展期):JDK 1.5,2005年推出 —— JDK 1.7,被 Orace 收购后推出

问:Oracle 为什么收购 SUN 公司

开发的结构一共分为 4 层:操作系统、数据库、中间件、编程语言。

而 Oracle 为了完成与微软对等的竞争体系,所以才收购了 SUN 公司。

No对比OracleMicrosoft
1操作系统UNIXWindows
2数据库Oracle大型数据库SQL Server 中小型数据库
3中间件OAS,收购 BEA得到WebLogicIIS
4编程语言PLSQL,收购 SUN 得到Java.NET

关于三个分支

  1. J2SE:Java 2 Platform Edition(2005年之后更名为 Java SE)。该分支包含构成Java 语言核心的类:数据库连接、接口定义、数据结构、输入/输出、网络编程
  2. J2EE:Java 2 Platform Enterprise Edition(2005年之后更名为 Java EE)。该分支 Enterprise Edition 企业版包含 J2SE 中的所有类,并且还包含用于开发企业级应用的类:EJB、Servlet、JSP、XML、事务控制,也是现在 Java应用的主要方向,一些银行或电信的系统大多基于此架构。
  3. J2ME:Java 2 Platform Micro Edition(2005年之后更名为 Java ME)。该分支用于消费类电子产品的软件开发:呼机、智能卡、手机、PDA、机顶盒。

而三个分支的共同点是都基于 JavaSE基础作为支撑。

语言特性:

简单性

Java 剔除了 C++中许多很少使用、难以理解、容易混淆的特性。Java 语法就像 C++语法的一个“纯净”版本。这里没有头文件、指针运算(甚至指针语法)、结构、联合、操作符重载、虚基类等。但设计者没有试图清楚C++中所有不适当的特性。例如:switch 语句的语法在 Java 中就没有改变。
Java 发布时,实际上 C++并不是最常用的程序设计语言。很多开发人员都在使用 Visual Basic 和它的拖放式编程环境。这些开发人员并不觉得 Java 简单。很多年之后 Java 开发环境才迎头赶上。
简单的另一个方面是小。Java的目标之一是支持开发能够在小型机器上独立运行的软件。基本的解释器以及类支持大约仅为 40KB,再加上基础的标准类库和对线程的支持(基本上是一个自包含的微内核),大约需要增加 175KB。

面向对象

面向对象是一种程序设计技术。它将重点放在数据(即对象)和对象的接口上。
Java 的面向对象特性与C++即旗鼓相当。Java与C++的主要不同点在于多继承,在 Java 中取而代之的是更简单的接口概念。

分布式

Java 有一个非常丰富的例程库,用于处理像 HTTP 和 FTP 之类的 TCP/IP 协议。Java 应用程序能够通过 URL 打开和访问网络上的对象,其便捷程度就好像访问本地文件一样。

健壮性

Java 的设计目标之一在于使得 Java 编写的程序具有多方面的特性。Java 非常强调进行早期的问题检测、后期动态的(运行时)检测,以及消除容易出错的情况…Java与C/C++最大的不同在于Java采用的指针模型可以消除重写内存和损坏数据的可能性。

安全性

Java 要适用于网络/分布式环境。为了实现这个目标,安全性颇受重视。使用 Java 可以构建防病毒、防篡改的系统。
从一开始,Java 就设计成能够防范各种攻击,其中包括:

  1. 运行时堆栈溢出,这是蠕虫和病毒常用的攻击手段。
  2. 破坏自己的进程空间之外的内存。
  3. 未经授权读写文件。

体系结构中立

编译器生成一个体系结构中立的目标文件格式,这是一种编译过的代码,只要有Java运行时环系统,这些编译后的代码可以在许多处理器上运行。Java 编译器通过生成与特定的计算机体系结构无关的字节码指令来实现这一特性。精心设计的字节码不仅可以很容易地在任何机器上解释执行,而且还可以动态地转换成本地机器代码。

在这里插入图片描述

虚拟机有一个选项,可以将执行最频繁的字节码序列转换成机器码,这一过程称为即时编译。

可移植性

与C和C++不同,Java 规范中没有“依赖具体实现”的地方。基本数据类型的大小及有关运算的行为都有明确的说明。例如:int 类型永远为 32位的整数。而在C和C++中,int 可能是16位整数,可能是32位,也可能是编译器开发商指定的任何其他大小。唯一的限制只是 int 类型的字节不能低于 short int,并且不能高于 long int。
在 Java 中,数值类型有固定的字节数,这消除了代码移植时一个令人头疼的主要问题。二进制数据以及固定的格式进行存储和传输,消除了字节顺序的困扰。字符串则采用 Unicode 格式存储。

解释型

Java 解释器可以在任何移植了解释器的机器上直接执行 Java 字节码。

高性能

尽管对解释后的字节码性能已经比较满意,但在有些场合下还需要更高的性能。
字节码可以(在运行时)动态地转换成对应运行这个应用的特点 CPU 的机器码。

多线程

线程,是一种轻量级进程,是现代程序设计中必不可少的一种特性。多线程处理能力使得程序能够具有更好的交互性、实时性。

动态性

从很多方面来看,Java与C/C++相比更加具有动态性。它能够适应不断发展的环境。库中可以自由地添加新方法和实例变量,而对客户端却没有任何响应。
当需要为正在运行时的程序增加代码时,动态性将是一个非常重要的特性。一个很好的例子是:从 Internet 下载代码,然后在浏览器上运行。如果使用 C 或 C++ ,难度很大。不过 Java 设计者很清楚动态语言可以很容易地实现运行程序的演进。最终,他们将这一种特性引入这个主流程序设计语言中。

2. JDK 的安装与配置

安装的官网链接

安装请自行至:Oracle官网网址

Java 运行环境 Java Runtime Environment,JRE,包含 Java虚拟机,Java核心类库和支持文件。它不包含开发工具——编译器、调试器和其他工具。而包含开发工具和编译器的为 JDK。

配置环境变量

JDK 安装完成之后,需要对一些操作命令进行配置。对于Java而言,主要是会使用 JDK 的 “javac.exe”、“java.exe” 两个操作命令。
由于这些命令不属于 windows 系统本身,所以想正常使用就需要路径配置,主要是配置 PATH环境变量。

配置过程如下:

  1. 选择“计算机”,右击后选择属性,打开 系统高级设置。
  2. 在这里插入图片描述
  3. 在这里插入图片描述
  4. JDK 的安装路径配置到 Path 属性中,注!不同的 Path之间用 ; 分号隔开
  5. 配置成功后,启动命令行 输入: javac

在这里插入图片描述

出现该效果说明环境变量配置成功了,因为你在本地系统上可以执行原本不属于windows 系统的命令了。

javac.exe:java本身提供的编译命令,主要目的是将 *.java 文件编译成 *.class 文件,此命令本身不属于 windows!所系使用时需要进行配置。

3. 第一个Java程序

Java 程序主要分为两种:
一种是Application 程序,另一种是 Applet 程序。其中有main方法的程序主要都是Application程序。而Applet程序主要应用在网页上。

创建一个后缀为 .java的java文件
在这里插入图片描述
其内容为:

public class Hello{ //定义一个类

	public static void main(String args[]){ //主方法,一切程序的起点
		System.out.println("Hello ~Java");	//在屏幕上打印输出
	}
}

! 当一个 *.java 程序编写完成后,可按如下步骤进行编译:

  1. 通过所编写程序的存储路径,打开命令行,并执行 javac Hello.java 进行编译。编译通过后会生成对应的 class 文件。
  2. 将生成的 Hello.class在JVM上执行,打开命令行,录入命令 java Hello

在这里插入图片描述

4. 第一个程序解释

关于类的定义

类是 Java 中的基本组成元素,而所有的 Java 程序一定要被类管理。

定义格式:

public class 类名称{}

逐个解析:
public class 定义:

类名称必须和文件名称保持一致,否则程序将无法编译。在一个 *.java 中只能有一个 public class。

class 定义:

类名称可以和文件名称不一致,但是生成的是 class 定义的名称。在一个 *. java程序中可以同时存在多个 class
定义,编译之后会分为不同的 *.class 文件。

主方法main():

主方法表示的是一个程序的起点,所有的程序代码都由此开始顺序执行,在java中主方法也要放在一个类中。

// 主方法的定义格式
public static void main(String args[]){
	//编写程序代码;
}

系统输出 System.out.println():

上述,我们的主方法中只定义两个一个 “System.out.println(“Hello ~Java”);”语句,此语句的功能是直接在屏幕上显示输出信息,而对于输出的操作也有如下两种:

System.out.println(""); // 输出加换行
System.out.print(""); // 输出后不加换行

Java的每一个完整的语句代码,都要求使用 ; 分号进行结尾。

5. CLASSPATH

被编写好的 Java 程序 在执行时,执行的是经过编译的 *.class 文件。
如果用命令行去执行程序对应的class文件,需要在程序路径下打开命令行。

但如果想要执行某个文件中的所有 class 文件,且不在相应路径下,则会出现报错信息,提示找不到这个类。

要解决这一现象,就需要配置 CLASSPATH 环境变量。

命令自动配置

//不指定路径
SET CLASSPATH = *.class 文件所在的路径

//指定路径
SET CLASSPATH = 盘符:\路径

/*
从易用性角度考虑,硬性指定设置路径是不可取的!
做好的做法是从当前所在的路径下加载所需要的 *.class文件。
设置如下:
*/
CLASSPATH=.

CLASSPATH 与 JVM 的关系

CLASSPATH 主要指的类的运行路径,实际上,在用户执行 Java 命令的时候,对于本地的操作系统来说就意味着启动一个 JVM,JVM 在运行时需要通过 CLASSPATH 加载所需要的类。默认情况下 CLASSPATH 是指向当前目录(当前命令行窗口所在目录)中的类,当改变之后 JVM 才会从用户指定的目录下进行类的加载。

CLASSPATH 的手动配置

命令行方式的手动配置是针对于一个命令行完成的,如果要针对于所有的命令行方式完成,则需要加一个新的环境属性。

步骤如下:

  1. 选择“我的电脑”,右键选择属性,进入高级选项卡,打开环境变量。
    在这里插入图片描述

  2. 在这里插入图片描述

PATH 与 CLASSPATH两者区别

PATH

操作系统的环境属性,指的是可以执行命令的程序路径。

CLASSPATH

所有 *.class 文件的执行路径,Java 命令执行时将利用此路径加载所需要的 *.class文件。

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

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

相关文章

OM3 与 OM4:主要区别和实际应用

OM3 和 OM4 都是激光优化的多模光纤,具有 50/125μm 光纤芯,专为满足 ISO 11801 标准而开发。它们在光纤连接器和应用场景上具有相似性,这往往会导致用户之间的混淆。这些光纤主要设计用于数据中心、局域网 (LAN) 和其…

500以内的不入耳运动耳机推荐,首推五大业内顶级优品

不入耳式运动耳机因其独特的佩戴方式和设计,能够在运动过程中保持对周围环境的警觉,避免因音乐沉浸而忽视潜在的安全隐患,同时它们还能有效减少对耳道的压迫,让运动更加舒适自在,接下来,就让我为大家推荐一…

MAC系统安装PHP、Java、Python、mysql、Composer等环境无权限问题的详细操作方法说明。

本篇文章主要讲解MAC系统安装PHP、Java、Python、mysql、Composer等环境无权限问题的详细操作方法说明。通过本篇文章你可以快速掌握brew安装相对应环境的能力。 作者:任聪聪 日期:2024年4月12日 一、brew介绍及安装说明 官网地址:https://b…

分布式数据库Polardb-X架构及特点

PolarDB-X架构 计算节点(Compute Node,CN)是系统的入口,采用无状态设计的sql引擎提供分布式路由和计算,包括SQL解析器、优化器、执行器等模块。负责数据分布式路由、计算及动态调度,负责分布式事务2PC协调…

VLAN Mapping原理描述

基本原理 路由器收到带Tag的数据报文后,根据配置的VLAN Mapping方式,决定替换外层Tag中的VLAN ID或优先级;然后进入MAC地址学习阶段,根据源MAC地址映射后的VLAN ID刷新MAC地址表项;根据目的MAC映射后VLAN ID查找MAC地…

【电控笔记2.3】速度回路+系统延迟

2.3.1速度回路pi控制器设计 pi伯德图近似设计(不考虑延时理想情况下) Tl:负载转矩 PI控制器的转折频率:Ki/Kp

用海豚调度器定时调度从Kafka到HDFS的kettle任务脚本

在实际项目中,从Kafka到HDFS的数据是每天自动生成一个文件,按日期区分。而且Kafka在不断生产数据,因此看看kettle是不是需要时刻运行?能不能按照每日自动生成数据文件? 为了测试实际项目中的海豚定时调度从Kafka到HDF…

Django中的定时任务与后台任务队列的实践【第164篇—Django】

👽发现宝藏 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 在Web开发中,处理定时任务和后台任务队列是很常见的需求。Django作为一个功能强…

隐私保护?还是安全漏洞?邮箱分身双重身份及创建攻略解析!

很多人只知道微信、QQ等应用分身,对于邮箱分身并不是很了解。邮箱分身和他们的不同点在于我们直接在原有邮箱的基础上创立新的虚拟邮箱地址,并且密码一致,在我们需要运营多个社交媒体账号或者管理多个项目的情况下,邮箱分身是一个…

为什么物联网安全性引发了对身份盗窃的担忧?

物联网是连接互联网的设备和传感器的统称,它代表了一个新的技术时代。这种硬件利用了连接性、硬件、小型化、云计算、数据处理、集成等方面的进步,为消费者和企业带来了好处,同样的物联网方面的威胁也是不断的在增加。 物联网是连接互联网的设…

【面试经典 150 | 链表】分隔链表

文章目录 写在前面Tag题目来源解题思路方法一:模拟 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法,两到三天更新一篇文章,欢迎催更…… 专栏内容以分析题目为主,并附带一些对于本题涉及到的数据结构等内容进行回顾…

leetcode代码记录(全排列 II

目录 1. 题目:2. 我的代码:小结: 1. 题目: 给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。 示例 1: 输入:nums [1,1,2] 输出: [[1,1,2], [1,2,1], [2,1…

C++ | Leetcode C++题解之第32题最长有效括号

题目&#xff1a; 题解&#xff1a; class Solution { public:int longestValidParentheses(string s) {int left 0, right 0, maxlength 0;for (int i 0; i < s.length(); i) {if (s[i] () {left;} else {right;}if (left right) {maxlength max(maxlength, 2 * ri…

基于SSM的购物小程序01

4.1系统架构设计 购物系统设计的系统项目的概述设计分析&#xff0c;主要内容有学习平台的具体分析&#xff0c;进行数据库的是设计&#xff0c;数据采用mysql数据库&#xff0c;并且对于系统的设计采用比较人性化的操作设计&#xff0c;对于系统出现的错误信息可以及时做出处…

GEE APP——土壤水分资源管理器

摘要 由于土壤水分含量与地球气候和天气以及干旱、洪水或山体滑坡等现象有关,因此对许多科学和专业用户来说都非常宝贵。遥感技术为连续测量这一变量提供了独特的可能性。特别是在农业领域,对高空间分辨率绘图的需求非常强烈。然而,目前可操作的土壤水分产品只有中粗空间分…

Udio——革命性的AI音乐生成软件

Udio是一款革命性的AI音乐生成软件&#xff0c;由前谷歌DeepMind的顶尖AI研究人员和工程师共同创立&#xff0c;得到著名风险投资公司a16z的支持。它旨在为音乐爱好者和专业人士提供一个全新的音乐创作和分享平台。用户可以通过文本提示来生成音乐&#xff0c;支持广泛的音乐风…

HashMap的扩容看这一篇足够

在Java中&#xff0c;对于HashMap这样的实现&#xff0c;put方法是用来将一个键值对插入到Map中的核心方法。以下是HashMap类中put方法的大致执行流程&#xff1a; 计算Hash值&#xff1a; 首先&#xff0c;put方法会接收一个键&#xff08;Key&#xff09;和一个值&#xff0…

第四百六十二回

文章目录 1. 概念介绍2. 实现方法3. 示例代码4. 内容总结 我们在上一章回中介绍了"关于MediaQuery的优化"相关的内容&#xff0c;本章回中将介绍readMore这个三方包.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我们在本章回中介绍的readMore是一个…

大模型的自我监督

大家好啊&#xff0c;我是董董灿。 之前有小伙伴私信我&#xff0c;想了解下大模型比如 chatGPT 是如何进行训练的。 和他们聊了一下&#xff0c;发现有一个点一直困惑着大家&#xff0c;那就是&#xff1a;大模型的训练是无监督学习还是有监督学习&#xff1f;在大模型训练过…

【学习笔记十三】EWM常见上架策略介绍

一、手工维护上架策略 系统不确定Storage type 和 bin&#xff0c;需要在创建仓库任务时或者确认仓库任务时手工输入仓位 1.后台配置-定义存储类型的类型0010 ①存储行为&#xff1a;标准仓位 ②入库规则&#xff1a;空仓未或添加至现有库存/空仓位 ③通用仓库任务&#x…