Java基础——(一)Java概述

news2024/11/27 16:54:17

Java特性

  • 简单性:Java与C++很相似,但剔除了C++中许多比较复杂并且很少使用的功能,比如头文件、指针运算、结构、联合、操作符重载、虚基类等,从而使Java更易于上手、学习。
  • 面向对象:Java是一门面向对象语言,具有面向对象的三个特性——封装、继承、多态。
  • 网络技能:Java有一个扩展的例程库,用于处理HTTP和FTP之类的TCP/IP协议。
  • 健壮性:Java编译器能检测许多在其他语言中仅运行时刻才能检测出来的问题。
  • 安全性:Java设计时加入许多安全特性,用于防止攻击,比如运行时堆栈溢出、未经授权读写文件等。
  • 体系结构中立:编译器生成一个体系结构中立的目标文件格式,这是一种编译过的代码,只要有Java运行时系统,就可以在许多处理器上运行,Java编译器通过生成与特定的计算机体系结构无关的字节码指令来实现这一特性。
  • 可移植性:Java的数据类型具有固定的大小,这消除了代码移植时令人头疼的主要问题,且二进制数据以固定的格式进行存储和传输,消除了字节顺序的困扰。
  • 解释型:Java解释器可以在任何移植了解释器的机器上执行Java字节码。
  • 高性能:字节码可以在运行时快速地翻译为运行这个应用程序的特定CPU的机器码。
  • 多线程:Java天然支持多线程,并且提供一系列便捷的多线程相关类。
  • 动态性:Java能适应不断发展的环境,库中可以自由地添加新方法和实例变量,而对客户端没有任何影响。

JVM、JRE、JDK

JVM:Java虚拟机,用于运行Java字节码,JVM针对不同系统有特定实现,目的是使用相同的字节码,他们都会给出相同的结果,字节码和JVM是实现Java语言“依次编译、随处可以运行”的关键。
JRE: JRE是运行已编译Java程序所需的环境,主要包含JVM和Java基础类库(一组标准的类库,提供常用的功能和API)。
JDK:JDK(Java Development Kit)是一个功能齐全的Java开发工具包,用于创建和编译Java程序,包含了JRE(Java Runtime Environment)以及编译器javac和其他工具。
在这里插入图片描述

Java发展简史

Java前身——Oak

Java诞生于1991年5月,来源于名为"Oak"的项目,当时是由Sun公司的一个小工程师团队在设计和开发。该团队称自己为绿队(Green Term),团队成员有James Gosling、Mike Sheridan、 Patrick Naughton等人。James Gosling(詹姆斯高斯林)是项目负责人。Oak中文名是"橡树",橡树是力量和耐用性的象征。时间证明,这个名字是非常适合的,甚至是预言性的,尽管在1995年被迫改名为Java(当时Oak已经被注册为另一个商标的一部分导致无法继续使用)。

Java诞生

1995年当时在美国的硅谷有一个大会,号称是全球最顶尖的软件和硬件厂商都会在这个大会展示自家的产品,那么Sun公司的负责人James Gosling也带着他的Oak项目去展示了。参会时一个偶然的机会让他发现他的项目名字早已被人注册商标了,没办法了只能重新给Oak取一个新的名字(早在国外的时候人们对于版权看的非常重要)。James Gosling和他的团队经过讨论后最终决定重命名为Java(爪哇,是印度尼西亚生产第一杯咖啡的一个岛屿名称。因为当时美国非常多的人喜欢喝咖啡)。同年Sun公司正式公开发布Java语言。

Java发展

  • JDK1.0:1996年1月23日,Sun公司发布JDK1.0,Java语言有了第一个正式版本的运行环境,其主要技术特点有:Java虚拟机、Applet、AWT等。
  • JDK1.1:1997年2月19日,Sun公司发布JDK1.1,提出许多Java最基础的技术,包括JDBC、RMI、Inner Class(内部类)和Reflction(反射)等。
  • JDK1.2:1998年12月4日,JDK迎来一个里程碑式的版本,在这个版本将Java技术体系拆分为三个方向,分别是面向桌面开发的J2SE,面向企业开发的J2EE和面向移动开发的J2ME。
  • HotSpot:1999年,HotSpot虚拟机诞生。
  • JDK1.3:2000年5月8日,JDK1.3版本发布,主要有HotSpotJVM、修改RMI以支持与CORBA的可兼容性。
  • JDK1.4:2002年2月13日,JDK1.4发布,带来许多新特性,包括正则表达式、NIO、异常链、日志类等。
  • JDK5:2004年9月30日,JDK5发布。该版本在Java语法易用性上做了非常大的改进。如:自动装箱拆箱、泛型、动态注解、枚举、可变长参数、循环遍历(foreach)等语法特性。
  • JDK6:2006年12月11日,JDK6发布。在这个版本中,Sun公司终结了J2EE、J2SE、J2ME的产品线命名方式,启用JavaEE、JavaSE、JavaME的新命名格式来代替。该版本主要特性有JDBC4.0、JVM改进(同步和编译器性能优化、新算法和对现有垃圾收集算法的升级、应用程序启动性能优化)、脚本语言支持等。
  • JDK7:2009年2月19日,JDK7的第一个里程碑版本发布。其主要特性包括动态语言支持、fork/join框架、并发实用工具、自动管理资源的try-with-resources、改进了实例创建时的类型推断菱形运算符<>等。
  • JDK8:2014年3月18日,JDK8发布,提供了Lambda表达式支持、内置Nashorn JavaScript引擎支持、新的时间日期API、彻底移除HotSpot永久代。

参考链接

https://zhuanlan.zhihu.com/p/645406671
https://blog.csdn.net/lywstuding/article/details/121117136
《Java核心技术卷I》(网盘链接:https://pan.quark.cn/s/06c58d47dce1)

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

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

相关文章

打造智能化在线教育平台详解:教培网校APP的架构设计与实现

本篇文章&#xff0c;小编将以教培网校APP的架构设计与实现为核心&#xff0c;深入探讨如何打造一套智能化的在线教育平台&#xff0c;为企业和教育机构提供落地参考。 一、在线教育平台的核心功能需求 构建一个高效的教培网校APP&#xff0c;首先需要明确其核心功能需求。一…

Java学习笔记--继承的介绍,基本使用,成员变量和成员方法访问特点

目录 一&#xff0c;继承 1.什么是继承 2.怎么去继承: 3.注意: 4.继承怎么学 二&#xff0c;继承基本使用 三&#xff0c;成员变量和成员方法访问特点 1.成员变量访问特点 1&#xff0c;子类和父类中的成员变量不重名: 总结: 2&#xff0c;子类和父类中的成员变量重…

IDEA2024创建一个spingboot项目

以下是创建一个基本的 Spring Boot 项目的步骤和示例&#xff1a; 初始化一个springboot工程其实有许多方法&#xff0c;笔者这里挑了一个最快捷的方式搭建一个项目。我们直接通过官方平台&#xff08;start.spring.io&#xff09;进行配置&#xff0c;然后下载压缩包就可以获取…

【Leetcode】3206.交替组1

题目描述&#xff1a; https://leetcode.cn/problems/alternating-groups-i/description/?envTypedaily-question&envId2024-11-26 题目示例&#xff1a; 解题思路 思路一&#xff1a; 1.如果color.size()小于等于2&#xff0c;则构不成环&#xff0c;直接返回结果…

利用Docker容器技术部署发布web应用程序

Docker是什么&#xff1f; docker 是一个开源的应用容器引擎&#xff0c;可以帮助开发者打包应用以及依赖包到一个可移植的容器中&#xff0c;然后发布到任何流行的Linux机器上&#xff0c;也可以实现虚拟化&#xff0c;容器是完全使用沙箱机制&#xff0c;相互之间不会有任何…

问题:smart监控没有能流的问题? smart200与维纶屏

目前路由器网口连接一台电脑&#xff0c;一个伺服&#xff0c;一个smart200从站&#xff0c;一个smart200主站&#xff0c;还有一个mt9106iq维纶屏。 用smart主站监控&#xff0c;发现没有能流。拔掉维纶屏网线&#xff0c;就可以正常显示能流。请问各位老师傅&#xff0c;这个…

微软Ignite 2024:建立一个Agentic世界!

在今年的Microsoft Ignite 2024上&#xff0c;AI Agent无疑成为本次大会的重点&#xff0c;已经有十万家企业通过Copilot Studio创建智能体了。微软更是宣布&#xff1a;企业可以在智能体中&#xff0c;使用Azure目录中1800个LLM中的任何一个模型了&#xff01; 建立一个Agent…

【Ubuntu】E: Unable to locate package xxx

报错描述 在 Ubuntu 上 执行 apt install xxx 出现下面的报错&#xff1a; 即无法定位到该 Package&#xff0c;一般形式如下&#xff1a; # apt install xxx Reading package lists... Done Building dependency tree... Done Reading state information... Done E: Unable …

go语言逆向-基础basic

文章目录 go 编译命令 ldflags -w -s的作用和问题使用 file 命令查看文件类型 go 语言逆向参考go ID版本GOROOT和GOPATHGOROOTGOPATHGOROOT和GOPATH的关系示例 go build和 go modpclntab &#xff08;Program Counter Line Table 程序计数器行数映射表&#xff09;Moduledata程…

RL78/G15 Fast Prototyping Board Arduino IDE 平台开发过程

这是一篇基于RL78/G15 Fast Prototyping Board的Arduino IDE开发记录 RL78/G15 Fast Prototyping Board硬件简介&#xff08;背景&#xff09;基础测试&#xff08;方法说明/操作说明&#xff09;开发环境搭建&#xff08;方法说明/操作说明代码结果&#xff09;Arduino IDE RL…

Servlet细节

目录 1 Servlet 是否符合线程安全&#xff1f; 2 Servlet对象的创建时间&#xff1f; 3 Servlet 绑定url 的写法 3.1 一个Servlet 可以绑定多个url 3.2 在web.xml 配置文件中 url-pattern写法 1 Servlet 是否符合线程安全&#xff1f; 答案&#xff1a;不安全 判断一个线程…

使用UE5.5的Animator Kit变形器

UE5.5版本更新了AnimatorKit内置插件&#xff0c;其中包含了一些内置变形器&#xff0c;可以辅助我们的动画制作。 操作步骤 首先打开UE5.5&#xff0c;新建第三人称模板场景以便测试&#xff0c;并开启AnimatorKit组件。 新建Sequence&#xff0c;放入测试角色 点击角色右…

【前端】ES6基础

1.开发工具 vscode地址 :https://code.visualstudio.com/download, 下载对应系统的版本windows一般都是64位的 安装可以自选目录&#xff0c;也可以使用默认目录 插件&#xff1a; 输入 Chinese&#xff0c;中文插件 安装&#xff1a; open in browser&#xff0c;直接右键文件…

蓝桥杯模拟题不知名题目

题目:p是一个质数&#xff0c;但p是n的约数。将p称为是n的质因数。求2024最大质因数。 #include<iostream> #include<algorithm> using namespace std; bool fun(int x) {for(int i 2 ; i * i < x ; i){if(x % i 0)return false;}return true; } int main() …

Android 13 编译Android Studio版本的Launcher3

Android 13 Aosp源码 源码版本 Android Studio版本 Launcher3QuickStepLib (主要代码) Launcher3ResLib(主要资源) Launcher3IconLoaderLib(图片加载&#xff0c;冲突资源单独新建) 需要值得注意的是&#xff1a; SystemUISharedLib.jar 有kotlin和java下的&#xff0c;在 Lau…

VMware ubuntu创建共享文件夹与Windows互传文件

1.如图1所示&#xff0c;点击虚拟机&#xff0c;点击设置&#xff1b; 图1 2.如图2所示&#xff0c;点击选项&#xff0c;点击共享文件夹&#xff0c;如图3所示&#xff0c;点击总是启用&#xff0c;点击添加&#xff1b; 图2 图3 3.如图4所示&#xff0c;出现命名共享文件夹…

零地址挂页

零地址 如果我们有比较好的C编程基础&#xff0c;我们就会知道&#xff0c;我们在代码中定义了一个零地址或者空指针&#xff0c;那么它实际上会指向虚拟内存的零地址&#xff0c;多数操作系统&#xff0c;包括Win&#xff0c;在进程创建的时候&#xff0c;都会空出前64k的空间…

oneplus6线刷、trwp、magisk(apatch)、LSPosed、Shamiko、Hide My Applist

oneplus6线刷android10.0.1 oneplus6线刷包(官方android10.0.1)下载、线刷教程&#xff1a; OnePlus6-brick-enchilada_22_K_52_210716_repack-HOS-10_0_11-zip 启用开发者模式 设置 / 连续点击6次版本号 : 启用开发者模式设置/开发者模式/{打开 usb调试, 打开 网络adb调试,…

树---索引的进化--从二叉搜索树到B+Tree的光荣进化(未完)

平衡二叉树 1. 索引平衡二叉树&#xff08;AVL树&#xff09;是一种自平衡的二叉搜索树&#xff0c;它通过在插入和删除节点时自动调整树的结构&#xff0c;保持树的平衡&#xff0c;从而保证了树的高度始终保持在O(log n)的范围内&#xff0c;这对于提高搜索、插入和删除操作…

FileZilla 报错解决

一、错误:严重错误: 无法连接到服务器 解决方法&#xff1a;FileZilla站点的用户名密码要和linux用户名密码保持一致&#xff0c;出现这个报错大概率是用户名和密码不一致导致的。 二、错误&#xff1a;文件传输失败 解决方法&#xff1a;检查linux下的文件夹是否有可执行权限…