JAVA简介

2023-11-14

JAVA简介

java是一种高级的面向对象的程序设计语言,使用java编写的的程序可以在任何计算机、操作系统和支持java的硬件设备上运行。

什么是java

java语言的发展历程

Java是于1995年由Sun公司推出的一种极富创造力的面向对象的程序设计语言,可跨越多平台、可移植性高,由有Java之父之称的James Gosling (詹姆斯高斯林)设计。自诞生以来,Java凭借其易学易用、功能强大的特点得到了广泛的应用。其强大的跨平台特性使Java程序可以运行在大部分系统平台上,甚至 移动电话、嵌入式设备及消费类电子产品等都可以运行Java程序,真正做到“一次编写,到处运行”。

Java是一种通过解释方式来执行的语言,其语法规则和C++类似。与C++不同的是,Java语言简洁得多,而且提高了可靠性,除去了最大的程序错误根源,此外它还有较高的安全性;由于Java可以跨平台,所以Java常被应用于企业网络和Internet环境。

1991年,美国SUN微系统公司为了开发一种能够在消费类电子产品上进行交互式操作的分布式系统框架成立了一个名为Green Team的小组,小组的领导者是James Gosling(Java之父),项目开始之初,小组准备采用C++进行开发,但是鉴于C++的一些弊端,于是开发出一种全新的编程语言,这个语言就是Java的前身OAK(橡树)。

随着项目投标失败,项目组解散,OAK也随之停滞。

1993年,随着Internet互联网的发展以及世界第一个网页浏览器Mosaic的诞生,James Gosling认为OAK的特性与Internet不谋而合,便使用OAK编写了运行与Interne平台上的高交互性网页程序,这便是Java applet的前身。

1995年,OAK正式改名Java,并与5月对外发布jdk1.0,由此,Java语言正式诞生;1997年,发布jdk1.1,实现三周内22万人次下载。

1999年,SUN公司根据应用范围不同发布了Java平台的三个版本:J2SE、J2ME、J2EE。

2005年,SUN发布JDK6.0,同时将J2SE更名为JavaSE、J2ME更名为JavaME、JavaSE更名为JavaEE。

2009年,甲骨文收购SUN公司,同时获得了Java的版权,并与2011年7月发布了Java7正式版。

java语言的特性

简单性

完全的面向对象(类、接口、继承等)

分布式(支持分布式应用开发)

安全性(java提供有安全管理机制以防恶意代码的攻击,类加载器的安全校验以及java虚拟机的沙箱运行模式)

可移植性(java程序在java平台被编译,然后可以在实现这个java平台的任何系统中运行)

健壮性(java的异常处理、垃圾回收、强类型转换等)

多线程(java支持多个线程同时执行,并提供多个线程之间的同步机制)

java三大平台

java SE:java标准版本,主要包含JDK、JRE、JVM和java核心类库,也是java基础学习的内容,能用于开发桌面系统。

java EE:java企业级版本,以SE为基础,提供了一整套服务、API接口和协议,能够开发企业级分布式系统、web应用等。

java ME:java微型版本,随着智能手机(IOS、Android)的普及,目前应用不多,可用于开发汽车导航系统等。

java运行机制

1、需要我们编写带有后缀名为java的文件;

2、使用命令将我们编写的java文件进行编译,编译成.class文件,即字节码文件;

3、使用命令将.class文件交给虚拟机,让虚拟机去执行;

4、虚拟机会做出相应的合法安全检查判断;

5、通过检查后,然后就有虚拟机解释执行为不同平台计算机对应的机器码去执行;

6、如果不能通过合法性的检测,虚拟机就会执行相应的异常程序;

意义在于实现了跨平台,强调是我们的java程序跨平台,而不是虚拟机跨平台

终点在于了解java虚拟机的概念以及JDK、JRE、JVM的关系

java开发环境搭建:

JDK(Java Development Kit) 可以认为就是java的开发环境

JRE(Java Runtime Environment) java的运行环境

JVM(Java Virtual Machine)java虚拟机,运行java的工具

三者之间的关系是JVM包含在JRE中,JRE包含在JDK中,所以我们安装的时候仅仅需要安装JDK就行

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JAVA简介 的相关文章

随机推荐

  • 百度Apollo视频学习笔记

    APOLLO视频学习笔记 一 总览 无人驾驶车的运作方式 五个核心部件 计算机视觉 弄清楚周围的世界是怎样的 传感器融合 合并来自其他传感器的数据 如激光和雷达 更加深入了了解我们周围的环境 定位 精确地确定我在世界所处的位置 路径规划 绘
  • vlc web 插件 js接口

    Embed tag attributes To embed the plugin into a webpage use the following template Required ele
  • 【IEEE】2022年第六届计算机科学与智能控制国际会议(ISCSIC 2022)

    2022年第六届计算机科学与智能控制国际会议 ISCSIC 2022 重要信息 会议网址 www iscsic org 会议时间 2022年11月11 13日 召开地点 中国北京 截稿时间 2022年10月11日 录用通知 投稿后2周内 出
  • 34-变量类型

    接33节 这节举了variable的数据类型 有个例子是bool类型和其他类型相加 比如bool 浮点 由于bool类型有0和1两个值的选择 所以相加时当做0或者1 这里默认值为1 即true 再加上个浮点类型 注意的是 浮点类型的默认值启
  • UnknownHostException: api.weixin.qq.com解决方法

    在使用微信服务过程中 调用api weixin qq com 总会碰到如下这种问题 java net UnknownHostException api weixin qq com 未知的名称或服务 关键是这种问题偶尔出现 我们在测试环境甚至
  • jee中的过滤器

    对于web app的开发者来说 过滤器 是最常见不过了 在web xml中经常可以看到这样的几行
  • 【转】sed 简明教程

    awk于1977年出生 今年36岁本命年 sed比awk大2 3岁 awk就像林妹妹 sed就是宝玉哥哥了 所以 林妹妹跳了个Topless 他的哥哥sed坐不住了 也一定要出来抖一抖 sed全名叫stream editor 流编辑器 用程
  • 老生常谈-FFmpeg 的编译问题轻松搞定

    前几天发了一篇 FFmpeg 调用 Android MediaCodec 进行硬解码 关于 FFmpeg 的编译 是个老生常谈的话题了 很多初学者都会卡在怎么编译动态库 so 的问题上 这其实也是 Android 开发转音视频的一大拦路虎
  • element-ui中el-tab的的使用

    element ui中el tab的的使用 el tab在页面中当作tab页使用如下 name就是与选项卡绑定值 value 对应的标识符 表示选项卡别名 用v model绑定值 选中选项卡的 name label 设置选项卡的标题 可以动
  • Mysql的mysql_store_result/mysql_use_result,mysql_field_count/mysql_num_fields/mysql_num_rows函数区别

    Mysql的mysql store result mysql use result mysql field count mysql num fields mysql num rows函数区别 1 先参考以下文章 或者先看下面再回来理解 my
  • list.clear()与=null以及new ArrayList<E>()的差异(Map类似)

    1 使用clear 方法 List
  • linux下载命令wget命令详解

    wget是linux最常用的下载命令 一般的使用方法是 wget 空格 要下载文件的url路径 例如 wget http www linuxsense org xxxx xxx tar gz 简单说一下 c参数 这个也非常常见 可以断点续传
  • Angular自定义表单验证

    前端表单验证 为年龄输入框添加了两个验证 并分情况填写了提示语
  • Android开发 之 指纹识别

    指纹识别 在android6 0的时候谷歌对指纹识别开始支持了 现在市面的基本上指纹识别都是在api23以上的版本 涉及到一个系统服务 FingerPrintManager 在使用FingerPrintManager这个类实现的时候发现了很
  • np.meshgrid()函数

    文章目录 1 自己理解 2 官方解释 3 参数 3 1 x1 x2 xn array like 3 2 sparse bool optional 默认false 3 3 copy bool optional 1 自己理解 np meshgr
  • 用GCC开发STM32,正点原子开发板的一个库函数版本例程示例

    GCC环境搭建 首先下载交叉编译环境GCC 这个网上有很多 百度一下就能找到下载 比如 Sourcery G for ARM EABI 我的CSDN资源里 有相关下载 熟悉下Makefile 强力推荐熟悉网络牛人李云的51cto博客 有一篇
  • java 数组的长度_Java初学者:数组,得到数组长度

    得到数组的长度在java里是很简单的 那就是 数组名 length 我们来看一个简单的程序就可以了 如下 这个就是上次的那个程序 我只是把for后面那个4改成了a length 也许有人要问了 那为什么非要求出数组的长度呢 数组在起始的时候
  • Redraiment的遭遇

    描述 Redraiment的老家住在工业区 日耗电量非常大 是政府的眼中钉肉中刺 但又没办法 这里头住的可都是纳税大户呀 今年7月 又传来了不幸的消息 政府要在7 8月对该区进行拉闸限电 但迫于压力 限电制度规则不会太抠门 政府决定从7月1
  • 【CUDA】cuda安装 (windows版)

    CUDA cuda安装 windows10版 一 前言 官方教程 二 安装工具的准备 1 CUDA toolkit Download 2 cuDNN Download 三 CUDA 安装与配置过程 测试环境是否安装成功 四 cuDNN配置
  • JAVA简介

    JAVA简介 java是一种高级的面向对象的程序设计语言 使用java编写的的程序可以在任何计算机 操作系统和支持java的硬件设备上运行 什么是java java语言的发展历程 Java是于1995年由Sun公司推出的一种极富创造力的面向