Java简介

一、Java简介

Java是一门面向对象的编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。

Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点 [2]  。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。

二、发展历程

1.2.1、20世纪90年代,硬件领域出现了单片式计算机系统,这种价格低廉的系统一出现就立即引起了自动控制领域人员的注意,因为使用它可以大幅度提升消费类电子产品(如电视机顶盒、面包烤箱、移动电话等)的智能化程度。Sun公司为了抢占市场先机,在1991年成立了一个称为Green的项目小组,帕特里克、詹姆斯·高斯林、麦克·舍林丹和其他几个工程师一起组成的工作小组在加利福尼亚州门洛帕克市沙丘路的一个小工作室里面研究开发新技术,专攻计算机在家电产品上的嵌入式应用。

Sun公司研发人员并没有开发一种全新的语言,而是根据嵌入式软件的要求,对C++进行了改造,去除了留在C++的一些不太实用及影响安全的成分,并结合嵌入式系统的实时性要求,开发了一种称为Oak的面向对象语言。

1.2.21992年的夏天,当Oak语言开发成功后,研究者们向硬件生产商进行演示了Green操作系统、Oak的程序设计语言、类库和其硬件,以说服他们使用Oak语言生产硬件芯片,但是,硬件生产商并未对此产生极大的热情。因为他们认为,在所有人对Oak语言还一无所知的情况下,就生产硬件产品的风险实在太大了,所以Oak语言也就因为缺乏硬件的支持而无法进入市场,从而被搁置了下来。

1.2.31995年,互联网的蓬勃发展给了Oak机会。Sun公司首先推出了可以嵌入网页并且可以随同网页在网络上传输的Applet(Applet是一种将小程序嵌入到网页中进行执行的技术),并将Oak更名为Java5月23日,Sun公司在Sun world会议上正式发布Java和HotJava浏览器。IBM、Apple、DEC、Adobe、HP、Oracle、Netscape和微软等各大公司都纷纷停止了自己的相关开发项目,竞相购买了Java使用许可证,并为自己的产品开发了相应的Java平台。

1.2.41996年1月,Sun公司发布了Java的第一个开发工具包JDK 1.0,这是Java发展历程中的重要里程碑,标志着Java成为一种独立的开发工具。9月,约8.3万个网页应用了Java技术来制作。10月,Sun公司发布了Java平台的第一个即时(JIT)编译器。

1.2.51997年2月,JDK 1.1面世,在随后的3周时间里,达到了22万次的下载量。4月2日,Java One会议召开,参会者逾一万人,创当时全球同类会议规模之纪录。9月,Java Developer Connection社区成员超过10万。

1.2.61998年12月8日,第二代Java平台的企业版J2EE发布。1999年6月,Sun公司发布了第二代Java平台(简称为Java2)的3个版本:J2ME(Java2 Micro Edition,Java2平台的微型版),应用于移动、无线及有限资源的环境;J2SE(Java 2 Standard Edition,Java 2平台的标准版),应用于桌面环境;J2EE(Java 2Enterprise Edition,Java 2平台的企业版),应用于基于Java的应用服务器。Java 2平台的发布,是Java发展过程中最重要的一个里程碑,标志着Java的应用开始普及。

1.2.71999年4月27日,HotSpot虚拟机发布。HotSpot虚拟机发布时是作为JDK 1.2的附加程序提供的,后来它成为了JDK 1.3及之后所有版本的Sun JDK的默认虚拟机

1.2.82000年5月,JDK1.3、JDK1.4和J2SE1.3相继发布,几周后其获得了Apple公司Mac OS X的工业标准的支持。

1.2.92001年9月24日,J2EE1.3发布。

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

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

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

1.2.132006年11月13日,Java技术的发明者Sun公司宣布,将Java技术作为免费软件对外发布。Sun公司正式发布的有关Java平台标准版的第一批源代码,以及Java迷你版的可执行源代码。从2007年3月起,全世界所有的开发人员均可对Java源代码进行修改 。

1.2.142009年,甲骨文公司宣布收购Sun 。

1.2.152010年,Java编程语言的共同创始人之一詹姆斯·高斯林从Oracle公司辞职。2011年,甲骨文公司举行了全球性的活动,以庆祝Java7的推出,随后Java7正式发布。

1.2.162014年,甲骨文公司发布了Java8正式版 。

1.2.172017 年 9 月 22 日,Java 9正式发布,带来了很多新特性,其中最主要的变化是已经实现的模块化系统。

1.2.18、2018 年 3 月 21 日,Oracle 公司发表 Java SE 10。

1.2.19、2018 年 9 月 25 日,Java SE 11 发布。

1.2.20、2019 年 3 月 20 日,Java SE 12 发布。

三、优势与劣势

3.1、优势

Java的优点可以用几个词来概括:优美、严谨、健壮、不易出错等。Java有8大特性,也就是它的8大优点

1、跨平台/可移植性

这是Java的核心优势之一,在设计之初Java就很注重可移植性和跨平台性。因为Java的运行是通过JVM来实现的,所以系统本身是什么无关紧要,只要安装对应的虚拟机即可,省去了大量的代码重复编写时间。

2、安全性

Java的安全模型基于一个可定制的“沙盒”,Java 软件程序可在其中安全运行,对系统或用户无潜在风险。

3、面向对象

Java是完全的面向对象语言,非常适合大型软件的设计和开发。

4、简单性

Java去掉了头文件,指针,结构,联合等内容,比起其他语言,更加简单易学。

5、高性能

Java在初期总是被人吐槽“性能低”,但是在Java语言发展过程中通过对虚拟机的优化,提升了很多的效率,现代Java低性能的问题已经完全被解决了。

6、分布式

Java是为分布式环境设计的,它可以处理TCP/IP协议。其还支持远程调用方法,使程序能够通过网络调用。

7、多线程

Java多线程的简单易用性使Java成为了最主流的服务器端开发语言,多线程的使用可以使资源利用率更高,程序设计在某些情况下更简单,程序响应更快。

8、健壮性

Java吸收了C/C++的优点,但是丢弃了指针等容易使程序崩溃的内容,提升了语言的健壮性。

3.2、缺点

1. Java的运行速度相对较慢

因为Java是靠虚拟机运行,所以相对于其他语言(汇编,C,C++)编写的程序慢,因为它不是直接执行机器码。

2.不能和操作系统的底层打交道

因为Java是跨平台的,所以不能和底层打交道。Java使用虚拟机来实现,不能接近操作系统,也就不能和操作系统的底层打交道了。

3.灵活性不高

不够灵活因为Java删 除了指针,所以不如C/C++等语言灵活。

三、jdkjrejvm三者之间的关系

3.1、JDK(java development kit)

JDK(java development kit):编译环境。Java 开发工具包。JDK 是整个 Java 开发的核心,它集成了 JRE 和一些好用的小工具。例如:javac.exe,java.exe,jar.exe 等。JDK包括了Java运行环境JRE(Java Runtime Envirnment)、一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API 包括rt.jar)。

3.2、JRE (java runtime environment)

JRE (java runtime environment):运行环境。负责装载用户自定义的类(分为从本地装载和从网络装载两种)和java API类。

3.3、JVM (Java Virtual Machine )

平台软件,负责将字节码解释成机器码并提交操作系统执行。换句话说,JVM就是Java 虚拟机。它只认识 xxx.class 这种类型的文件,它能够将 class 文件中的字节码指令进行识别并调用操作系统向上的 API 完成动作。所以说,jvm 是 Java 能够跨平台的核心,所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行。jvm调用解释所需的类库lib,而jre包含lib类库。JVM屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行(跨平台性:不同的浏览器安装不同的java虚拟机,jvm将字节码与对应操作系统相映射,达到java程序的跨平台性)。

3.4、三者关系

JDK = JRE + 开发工具集 + java标准类库

JRE = JVM + java标准类库

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

国内外四款强大的远控使用体验:ToDesk、向日葵、AnyDesk、Microsoft 远程桌面横向比较

目录 一、引言 二、横测体验 1、ToDesk 2、向日葵 3、AnyDesk安力桌 4、Microsoft 远程桌面 三、评测总结与建议 一、引言 随着科技快速发展和数字化进程的驱动,远程控制软件在日常生活和工作中变得愈加广泛。无论是在家办公、技术支持还是远程教育&#xff…

使用Java实现一个简单的贪吃蛇小游戏

一. 准备工作 首先获取贪吃蛇小游戏所需要的头部、身体、食物以及贪吃蛇标题等图片。 然后,创建贪吃蛇游戏的Java项目命名为snake_game,并在这个项目里创建一个文件夹命名为images,将图片素材导入文件夹。 再在src文件下创建两个包&#xff0…

【rl-agents代码学习】01——总体框架

文章目录 rl-agent Get startInstallationUsageMonitoring 具体代码 学习一下rl-agents的项目结构以及代码实现思路。 source: https://github.com/eleurent/rl-agents rl-agent Get start Installation pip install --user githttps://github.com/eleurent/rl-agentsUsage…

PaaS基础建设

PaaS(Platform-as-a-Service:平台即服务)是应用程序和服务的部署平台。Paas为开发、测试和管理软件应用程序提供所需的开发环境,是云计算服务类型之一。 PaaS是什么?IaaS、SaaS、PaaS三种云服务区别 PaaS(P…

​《水经注全国三维离线GIS系统》硬件安装教程

有些工作,是需要一些外在动力才能完成的。 为什么这么讲呢? 因为正是在客户的要求下,我们才撰写了《水经注全国三维离线GIS系统》的硬件安装教程,而且还录制了视频教程。 当用户收到货物以后,就可以通过本教程清点货…

深度学习AI识别人脸年龄

以下链接来自 落痕的寒假 GitHub - luohenyueji/OpenCV-Practical-Exercise: OpenCV practical exercise GitHub - luohenyueji/OpenCV-Practical-Exercise: OpenCV practical exercise import cv2 as cv import time import argparsedef getFaceBox(net, frame, conf_thresh…

深度剖析c语言程序 -- 函数栈帧的创建和销毁(纯肝货)

本章的内容: 什么是函数栈帧? 理解函数栈帧能解决什么问题? 函数栈帧的创建和销毁解析 本文放到 --> 该专栏内:http://t.csdnimg.cn/poMzA 目录 什么是函数栈帧❓ 理解函数栈帧能解决什么问题呢?💢 函数栈帧的…

计数排序及优化

🎉个人名片: 🐼作者简介:一名乐于分享在学习道路上收获的大二在校生 🐻‍❄个人主页🎉:GOTXX🐼个人WeChat:ILXOXVJE🐼本文由GOTXX原创,首发CSDN&a…

汽车一键启动智能系统功能作用

在现代科技的推动下,我们的生活每天都在发生着变化。其中,汽车智能一键启动系统就是科技改变生活的最好例子之一。 首先,我们来简单了解一下汽车智能一键启动系统。它是一种利用先进的电子技术和无线通信技术,实现无需钥匙即可启…

基于单片机智能输液器监控系统的设计

**单片机设计介绍, 基于单片机智能输液器监控系统的设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机的智能输液器监控系统可以实现对输液过程的实时监测和控制,以下是一个基本的设计介绍&am…

【数据结构——队列的实现(单链表)】

数据结构——队列的实现(单链表) 一.队列1.1队列的概念及结构 二.队列的实现2.1 头文件的实现——(Queue.h)2.2 源文件的实现—— (Queue.c)2.3 源文件的实现—— (test.c) 三.队列的…

拼多多API接口,打造智能化电商平台

近年来,电商行业的崛起给人们的购物带来了极大的方便。随着电商行业的发展,拼多多作为新兴电商平台已经成为市场焦点。 同时,随着技术的发展,API(Application Programming Interface,应用程序编程接口&…

pta 6翻了 Python3

“666”是一种网络用语,大概是表示某人很厉害、我们很佩服的意思。最近又衍生出另一个数字“9”,意思是“6翻了”,实在太厉害的意思。如果你以为这就是厉害的最高境界,那就错啦 —— 目前的最高境界是数字“27”,因为这…

云课五分钟的一些想法

起源 自中学起,就积极学习和掌握互联网相关知识,到如今已经快30年了。 个人也全程经历了从信息时代的互联网(硬)到智能时代的大模型(软)。 整体信息到智能的基础设施,由硬到软,机…

CRM系统:除了销售管理,还能做些什么?

企业的健康发展,离不开业绩的提升。在企业数字化转型的背景下,采用数字化应用进行管理已成为共识。许多企业认识到了应该使用CRM客户管理系统来进行销售管理,但CRM能做的还有很多。下面说说除了销售管理,CRM系统还能做些什么&…

继承和多态_Java零基础手把手保姆级教程(超详细)

文章目录 Java零基础手把手保姆级教程_继承和多态(超详细)1. 继承1.1 继承的实现(掌握)1.2 继承的好处和弊端(理解) 2. 继承中的成员访问特点2.1 继承中变量的访问特点(掌握)2.2 sup…

石英增强光声光谱气体传感技术中的高精密压力控制解决方案

摘要:光声池内气体压力的可调节控制以及稳定性是保证光声法高精度测量的关键,但在目前的光声和光谱研究中,对气体样品池内压力控制技术的报道极为简单,甚至很多都是错误的,根本无法实现高精度调节和控制,为…

Autosar模块介绍:Memory_3(MemIf-内存接口抽象)

上一篇 | 返回主目录 | 下一篇 Autosar模块介绍:Memory_3(MemIf-内存接口抽象 1 基本术语解释2 MemIf组成结构图 1 基本术语解释 编号缩写原文解释1(Logical) Block——可单独寻址的连续内存区域(即,用于读、写、擦除、比较等操作&#xff…

眼科动态图像处理系统使用说明(2023-8-11 ccc)

眼科动态图像处理系统使用说明 2023-8-11 ccc 动态眼科图像捕捉存贮分析与传输系统,是由计算机软件工程师和医学专家组结合,为满足医院临床工作的需要,在2000年开发的专门用于各类眼科图像自动化分析、处理和传输的软件系统。该系统可以和各…

【NLP】大型语言模型,ALBERT — 用于自监督学习的 Lite BERT

🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃 🎁欢迎各位→点赞…