【Java入门】Java的语言概述

news/2024/10/24 11:21:16/

在这里插入图片描述
前言

📕作者简介:热爱跑步的恒川,致力于C/C++、Java、Python等多编程语言,热爱跑步,喜爱音乐的一位博主。
📗本文收录于Java入门篇系列,该专栏主要讲解:什么是java、java的数据类型与变量、运算符、程序的逻辑控制、方法的使用、数组的定义与使、类和对象、继承和多态、抽象类和接口、认识String类、认识异常等……持续更新,请大家拭目以待恒川的专栏!
📘相关专栏C语言初阶、C语言进阶、恒川的日常汇报、系列等,大家有兴趣的可以看一看
📙Python零基础入门系列,正在发展中,喜欢Python的朋友们可以关注一下哦!


Java语言概述

  • 1. Java是什么
  • 2. Java语言重要性
  • 3. Java语言发展简史
  • 4. Java语言特性
  • 5. Java开发环境安装

1. Java是什么

在这里插入图片描述

Java是一种优秀的程序设计语言,它具有令人赏心悦目的语法和易于理解的语义。

在这里插入图片描述

不仅如此,Java还是一个有一系列计算机软件和规范形成的技术体系,这个技术体系提供了完整的用于软件开发和跨平台部署的支持环境,并广泛应用于嵌入式系统、移动终端、企业服务器、大型机等各种场合。

2. Java语言重要性

  1. 语言广泛使用程度
    下图数据来自于TIOBE编程语言社区2017年12月和2018年10月最新的排行榜,常年占据语言排行榜榜首,是近些年最火的编程语言之一。
    在这里插入图片描述
    TIOBE 编程语言社区排行榜是编程语言流行趋势的一个指标,每月更新,这份排行榜排名基于互联网上有经
    验的程序员、 课程和第三方厂商的数量。排名使用著名的搜索引擎(诸如 Google、MSN、Yahoo!、Wikipedia、YouTube 以及 Baidu 等)进行计算。
    注意:上述排名不能说明那个语言好,那个语言不好,每门编程语言都有适应自己的应用场景。
  2. 工作领域
    Java语言目前在IT领域的应用是非常广泛的,掌握Java语言可以从事不少IT行业的相关开发岗位,具体包括
  • 企业级系统
    比如大型复杂的企业级软件系统,Java的安全机制以及跨平台性的优势,其在分布式系统领域开发中有
    广泛应用,涉及到金融、电信、交通、电子商务、ERP系统等。

  • Web开发领域
    Java语言在设计初期,赶上了互联网发展的风口,当时就瞄准了互联网开发,凭借稳定的性能表现和较
    好的扩展性,Java语言一直是大型互联网平台的重要解决方案。

  • android平台应用
    Android是一种智能手机操作系统,Java是一门非常流行的编程语言。Android上的应用程序就是大多是用Java编写的,Android的SDK大部分就是直接将Java SDK翻译过来的,所以具有Java基础,也可以快速上手Android开发。

  • 大数据平台开发
    大数据相关的各类框架,比如:Hadoop、spark、storm、flink等,以及各种中间件flume、kafka、sqoop等,这些框架以及工具等大多数是用Java语言开发的,随着大数据技术的落地应用,Java在大数据领域的应用前景也是比较广阔的。

除上述开发领域外,Java在游戏领域、人工智能领域、科学计算领域、嵌入式领域也有一定的应用。因此学好Java,将来就业的选择也会非常广泛。

  1. 在校招中的岗位需求在这里插入图片描述
    从上述位置需求中可以看出,由于应届生缺少实际工作经验,因此校招中企业更看重学生的基础,也就是:语言、数据结构/算法、操作系统、网络、数据库等,其他的属于加分项。

3. Java语言发展简史

在这里插入图片描述

Java 语言源于 1991 年 4 月,Sun 公司 James Gosling博士 领导的绿色计划(Green Project)
开始启动,此计划最初的目标是开发一种能够在各种消费性电子产品(如机顶盒、冰箱、收音机等)上运行的程序架构。这个就是Java的前身: Oak(得名与Java创始人JamesGosling办公室外的一棵橡树),但由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1995年代互联网的发展,Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布,并提出“Write once, Run anywhere" 的口号。

在这里插入图片描述

4. Java语言特性

以下Java语言特性来自于Java白皮书:

  1. 简单性

Java语法是C++语法的一个“纯净版本”,相当于对C++做了一个减法。这里没有头文件、指针运算(甚至指针
语法)、结构、联合、操作符重载、虚基类等等。不仅如此,Java开发环境远远超出大多数其他编程语言的开
发环境。

  1. 面向对象
    什么是面向对象?
    在Java的世界里,一切皆对象。比如:人、狗、手机、电脑等都是对象。所谓面相对象,就是依靠对象之间
    的交互来完成事情,比如:人用手机网上购物,狗吃骨头…
    Java的面向对象特性与C++旗鼓相当,与C++的主要不同点在于多重继承。在Java中,取而代之的是更简单的
    接口概念。而且与C++相比,Java提供了更丰富的运行时自省功能。

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

  3. 健壮性
    Java与C++最大的不同在于Java采用的指针模型可以消除重写内存和损坏数据的可能性(对于曾经花费几个小时来检查由于指针bug而引起内存冲突的人来说,一定很喜欢Java的这一特性)。不仅如此,Java编译器能够
    检测许多在其他语言中仅在运行时才能够检测出来的问题。

  4. 安全性
    Java适用于网络/分布式环境。为了达到这个目标,在安全性方面投入了大量的精力。使用Java可以构建防病毒、防篡改的系统

从一开始,Java就设计成能够防范常见的各种攻击:

  • 运行时堆栈溢出。蠕虫和病毒常用的攻击手段。
  • 破坏自己进程空间之外的内存。
  • 未经授权读写文件
  1. 体系结构中立
    编译器生成一个体系结构中立的目标文件格式,按照该中规范生成的文件,只要有Java运行时系统,这些编译后的代码就可以在许多处理器上运行。Java编译器通过生成与特定计算机体系结构无关的字节码指令来实现这一特性。精心设计的字节码不仅可以很容易的在任何机器上解释执行,而且还可以动态地翻译成本地机器代码。这就是为什么可以:“Wrice once,Run anywhere”。
    在这里插入图片描述
    而且其他语言编写的程序,在编译后如果能够严格按照字节码文件的规范生成.class文件,也可以在JVM上运行。
    在这里插入图片描述

  2. 可移植性
    与C/C++不同,Java规范中没有“依赖具体实现的地方”。基本数据类型的大小以及有关运算都做了明确的说
    明。例如,Java中的int永远是32位的整数,而在C/C++中,int可能是16位整数、32位整数,也可能是编译器
    提供商指定的其他大小。在Java中,数据类型具有固定的大小,这消除了代码移植时令人头疼的主要问题。

  3. 解释性
    Java为了实现与平台无关,自己维护了一套基于栈架构的指令集,Java源代码经过编译之后,字节码文件中的
    指令就是按照自己的指令集来组织的,但是在具体硬件环境中运行时,系统并不能识别,因为Java程序在执行
    时,Java解释器会逐条的将字节码文件中的指令翻译成CPU的指令集。

  4. 高性能
    边解释边执行,垃圾会说等导致了Java代码运行效率偏低,近年来JVM也在不断的优化,比如:JIT(即时编译
    器),热点代码探测,让Java程序的执行效率大幅提高,在有些场合不亚于C/C++。

  5. 多线程
    Java在当时很超前。它是第一个支持并发程序设计的主流语言。多线程可以带来更好的交互响应和实时行为。并发程序设计绝非易事,但是Java在这方面表现出色,可以很好的管理这个工作。

  6. 动态性

Java与C/C++相比更加具有动态性。它能够适应不断发展的环境。库中可以自由的添加新方法和实例变量,而对客户端没有任何影响。在Java中找出运行时类型信息十分简单(反射的特性,后续会学到)因此:Java不仅仅是一门编程语言,也是一个由一些列计算机软件和规范组成的技术体系。
在这里插入图片描述

5. Java开发环境安装

该内容后续会讲到,希望大家关注着恒川的Java系列博客内容


如果这份博客对大家有帮助,希望各位给恒川一个免费的点赞👍作为鼓励,并评论收藏一下,谢谢大家!!!
制作不易,如果大家有什么疑问或给恒川的意见,欢迎评论区留言。


http://www.ppmy.cn/news/74103.html

相关文章

Linux的启动流程

文章目录 Linux的启动流程BIOS、boot loader与kernel加载BIOSboot loader加载内核检测硬件与 initramfs 的功能 Linux的启动流程 本文章参考: [Uncertainty!!]的Linux的启动流程 Linux的启动流程是一个非常复杂的过程,下面是对Linux启动流程的详细分析&a…

SQL获取月份中的最后一天

上一篇文章中我们介绍了如何利用 SQL 获取月份中的第一天,本文就来聊一聊怎么获取月份中的最后一天,涉及的数据库包括 Oracle、MySQL、Microsoft SQL Server、PostgreSQL 以及 SQLite。 Oracle Oracle 数据库提供了 LAST_DAY() 函数,可以获…

STM32G474开发板初步入门与编程实战

目录 STM32G474开发板简介 STM32CubeMX软件配置 编程实战 结束语 欢迎大家,我今天要给大家介绍的是STM32G474开发板的基本入门和编程实战。首先,我们要明白,STM32G474是由STMicroelectronics公司生产的一款高性能微控制器。这款微控制器配…

【java】java实现同步方式

文章目录 前言为何要使用同步?java实现同步的五种方式: 1.同步方法:2. 同步代码块3.使用特殊域变量(volatile)实现线程同步4.使用重入锁实现线程同步5.使用局部变量实现线程同步 前言 为何要使用同步? 避免多线程数据不一致&…

简易电路特性测试仪

摘 要 随着电子行业的发展,生活中使用到的音频电子设备也越来越多,在音频设备中经常使用到的基本放大电路出现的故障也随之增多。在智能设备发展迅速的前景之下,决定利用抗干扰能力较强的微控制器制作一个简易电路特性测试仪用来检测基本放大…

Linux系统设置swap大小,创建swap,top虚拟内存,VIRT RES SH

物理内存: 当在Linux下频繁存取文件后,物理内存会很快被用光,当程序结束后,内存不会被正常释放,而是一直作为caching, 因此很有必要手动清理系统缓存释放内存。 1.先执行sync,先把buffe中的数据…

Fuzzing Configurations of Program Options

摘要: 尽管许多真实世界的项目都附带配置启用/禁用功能,fuzz大多被用于测试单配置这些项目。在这项工作中,我们首先进行实证研究,以了解程序配置影响起毛性能。我们发现限制竞选一个配置会导致未能覆盖大量的代码。我们还观察到不同的项目配置贡献不同的大量的代码覆盖率,挑战…

详解c++STL—容器set/multiset

目录 1、set基本概念 1.1、功能 1.2、本质: 1.3、set和multiset区别 2、set构造和赋值 2.1、功能描述 2.1、构造 2.3、赋值 2.4、示例 3、set大小和交换 3.1、功能描述 3.2、函数原型 3.2、示例 4、set插入和删除 4.1、功能描述 4.2、函数原型 4.3…