Java基础知识学习:Java入门和背景知识

目录,更新ing,学习Java的点滴记录

  目录放在这里太长了,附目录链接大家可以自由选择查看--------Java学习目录

计算机语言的发展

  1. 计算机已经成为人大脑的延伸
      计算机已经成为我们这个时代的核心设备,每时每刻都需要它。计算机也不再是大家以 前印象中的台式机、服务器,已经演变成了我们身边随处可见的物体。比如:手机、平板电 脑、笔记本,以及很多人没意识到,但实际上设备内部包含“计算机”的设备。比如:电视 机、微波炉、汽车,甚至小孩玩的智能小机器人等。
      可以这么说, 计算机已经成为了人类身体的延伸、大脑的延伸,成为不可或缺的一部分。未来,计算机将真的进入人体、进入大脑,真正成为人体的一部分。比如,在科幻电影《黑客帝国》中,主角被超级针头插在颈部后方,便能使他快速学习,改变大脑神经网络,几秒就成为功夫高手.
  2. 算法是计算机的灵魂,编程语言是塑造计算机灵魂的工具
      计算机是如何工作的?对于普通人来说,这很神秘。让计算机具备“灵魂”,可以按照人的意志运行,甚至某天按照计算机自己的意志运行(如果这一天实现,科幻电影《终结者》 中的场景也会成为人类社会的可能选项),其核心就是“算法”。 “算法就是计算机的灵魂”算法的实现又依赖于“计算机编程语言”。
      计算机编程语言的发展,是随着计算机本身硬件发展而发展的。硬件速度越快、体积越 小、成本越低,应用到人类社会的场景就会越多,那么所需要的算法就会越复杂,也就要求 计算机编程语言越高级。
      最初重达几十吨但一秒只能运算 5000 次的 ENIAC(世界上第一台计算机),只能做非常小的应用,比如:某些情况的弹道计算。现在任何一个人的手机运算能力都可以秒杀那个年代地球上所有计算机运算能力的总和。
  3. 发展历程----计算机编程语言的发展历经了从低级到高级发展。发展的核心思想就是“让人更容易编程”
      越容易使用的语言,就有越多人使用;越多人使用,就有越多协作;越多协作,就可以创造越复杂的物体;现代社会,一个软件动辄几十人协作、几百人协作、甚至几千人协作也成为可能,这自然就为开发复杂软件提供了“人力基础”。这是一个人类普遍的社会现象,越容易使用的工具,通过使用数量,通过大量人的协作,彻底改变某个行业甚至人类社会。
      计算机语言经历了三代:第一代是机器语言,第二代是汇编语言,第三代是高级语言。
      第一代语言:机器语言(相当于人类的原始阶段)
      机器语言由数字组成所有指令。当让你使用数字编程,写几百个数字、甚至几千个数字,每天面对的是纯数字,我大胆预测:“程序员群体 100%会有精神问题”。
      机器语言通常由数字串组成(最终被简化成 01),对于人类来说,机器语言过于繁琐。使用机器语言,人类无法编出复杂的程序。如下为一段典型的机器码:
      在这里插入图片描述
      第二代语言:汇编语言(相当于人类的手工业阶段)
      为了编程的方便,以及解决更加复杂的问题。程序员开始改进机器语言,使用英文缩写的助记符来表示基本的计算机操作。这些助记符构成了汇编语言的基础。如下是一些常见的汇编语言助记符(单词)比如:LOAD、MOVE 之类,这样人更容易使用了。识别几百、几千个单词,感觉要比几百几千个数字,美妙多了。汇编语言相当于人类的手工业社会,需要技术极其娴熟的工匠,但是开发效率也非常低。
      汇编语言虽然能编写高效率的程序,但是学习和使用都不是易事,并且很难调试。另一 个复杂的问题,汇编语言以及早期的计算机语言(Basic、Fortran 等)没有考虑结构化设计原则,而是使用 goto 语句来作为程序流程控制的主要方法。这样做的后果是:一大堆混乱的调转语句使得程序几乎不可能被读懂。对于那个时代的程序员,能读懂上个月自己写的 代码都成为一种挑战。
      汇编语言仍然应用于工业电子编程领域、软件的加密解密、计算机病毒分析等。
      第三代:高级语言(相当于人类的工业阶段)
      对于简单的任务,汇编语言可以胜任。但是随着计算机的发展,渗透到了工作生活的更 多的方面,一些复杂的任务出现了,汇编语言就显得力不从心(应该说是程序员使用汇编语 言解决复杂问题出现了瓶颈)。于是,出现了高级语言。像我们熟知的 C、C++、Java 等等都是高级语言。
      高级语言允许程序员使用接近日常英语的指令来编写程序。例如,实现一个简单的任务: A+B=C , 使用机器语言、汇编语言和高级语言的的实现如下图 1-2 所示
      在这里插入图片描述
      从上面这个简单的加法计算,可以看出越到高级语言,越接近人的思维,人使用起来就 越方便。
      高级语言的出现,尤其是面向对象语言的出现,相当于人类的工业社会,高级语言极其易用,编程门槛和难度大大降低,大量的人员进入软件开发行业,为软件爆发性的增长提供了充足的人力资源。目前以及可预见的将来,计算机语言仍然处于“第三代高级语言”阶段.

多种计算机语言特点介绍

  1. 常见编程语言介绍
      下面给出Tiobe2020.5月份的榜单可以看出Java和C占据前两名,Python处于第三位
      在这里插入图片描述
  2. C
      C 语言诞生于 1972 年,可以称之为现代高级语言的鼻祖,由著名的贝尔实验室发明。C 语言是人们追求结构化、模块化、高效率的“语言之花”。在底层编程,比如嵌入式、病毒开发等应用,可以替代汇编语言来开发系统程序。在高层应用,也可以开发从操作系统(Unix/Linux/ Windows 都基于C 语言开发)到各种应用软件。
  3. C++
      作为 C 语言的扩展,C++是贝尔实验室于 80 年代推出的。C++是一种混合语言,既可以实现面向对象编程,也可以开发 C 语言面向过程风格的程序。
      C 语言让程序员第一次可以通过结构化的理念编写出易于理解的复杂程序; 尽管 C 语言是一个伟大的语言,但是程序的代码量达到 30000 行以上时,程序员就不能很好的从总体上把握和控制这个程序。 因此,在 80 年代初期,很多软件项目都面临无法解决的问题而不能顺利进行。 1979 年,贝尔实验室发明了 C++。 C++最初的名字叫做“带类的 C”,后来才改名叫 C++。国内通用叫法:“C 加加”,国际通用读法“C plus plus”。
      C++语言在科学计算、操作系统、网络通讯、系统开发、引擎开发中仍然被大量使用
  4. Java
      由美国 SUN 公司(被 oracle 公司收购)发明于 1995 年,是目前业界应用最广泛、使用人数最多的语言,连续多年排名世界第一,可以称之为“计算机语言界的英语”。
      Java 广泛应用于企业级软件开发、安卓移动开发、大数据云计算等领域,几乎涉及 IT 所有行业。关于 Java 的发展历史和特性,将在后面专门介绍。
  5. JavaScript
      JavaScript 是一种脚本语言,已经被广泛用于 Web 应用开发;应用范围越来越大,重要性越来越高。目前,流行的 H5 开发的核心其实就是 JavaScript 语言。
  6. Python
      Python 发明于 1989 年,语法结构简单,易学易懂;Python 具有丰富和强大的库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是 C/C++)很轻松地联结在一起。Python 广泛应用于:图形处理、科学计算、web 编程、多媒体应用、引擎开发;尤其是在未来大热方向机器学习和人工智能上有非常大的潜力。
  7. PHP
      PHP 原始为 Personal Home Page 的缩写,已经正式更名为 “PHP: Hypertext Preproc essor”。PHP 语言,一般用于 WEB 开发领域;大量的中小型网站以及某些大型网站使用 PHP 开发。
  8. c#
      C#是微软公司发布的一种面向对象的、运行于.NET Framework 之上的高级程序设计语言。C#在基于 windows 操作系统的应用开发这一领域在取代 C++,占据主导地位。“成也萧何败也萧何”,C#的微软身份,也成为了发展的阻力,在其他 IT 领域应用较少.
  9. kotlin
       Kotlin 是一个用于现代多平台应用的静态编程语言,由 JetBrains 开发。Kotlin 可以编译成 Java 字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行。
      Kotlin 已正式成为 Android 官方支持开发语言,并且是一种可以兼容 java 的语言.
  10. Go
      Go( 又 称 Golang) 是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态强类型、编译型语言。Go 语言语法与 C 相近,但功能上有:内存安全,GC(垃圾回收),结构形态及 CSP-style 并发计算。

Java发展史_三大版本含义_Java的核心优势

  1. 发展简史
      1991 年,James Gosling 在 SUN 公司的工程师小组想要设计这样一种小型计算机语言。该语言主要用于像电视盒这样的消费类电子产品。另外,由于不同的厂商选择不同的CPU 和操作系统,因此,要求该语言不能和特定的体系结构绑在一起,要求语言本身是中立的,也就是跨平台的。所以,将这个语言命名为“Green”,类似于绿色软件的意思。后来,改名为 Oak,橡树的意思。改名后发现已经有一种语言叫这个名字了,再改名叫 Java。
      在这里插入图片描述
      在这里插入图片描述
      SUN公司已经被Oracle公司收购,目前每半年更新一次java版本,企业中主流仍然以JDK1.8为主

  2. 各版本含义
      JavaSE(Java Standard Edition):标准版,定位在个人计算机上的应用
      这个版本是 Java 平台的核心,它提供了非常丰富的 API 来开发一般个人计算机上的应用程序,包括用户界面接口 AWT 及 Swing,网络功能与国际化、图像处理能力以及输入输出支持等。在上世纪 90 年代末互联网上大放异彩的 Applet 也属于这个版本。Applet 后来为 Flash 取代,Flash 即将被 HTML5 取代。
      JavaEE(Java Enterprise Edition):企业版,定位在服务器端的应用
      JavaEE 是 JavaSE 的扩展,增加了用于服务器开发的类库。如:JDBC 是让程序员能直接在 Java 内使用的 SQL 的语法来访问数据库内的数据;Servlet 能够延伸服务器的功能, 通过请求-响应的模式来处理客户端的请求;JSP 是一种可以将 Java 程序代码内嵌在网页内的技术.
      JavaME(Java Micro Edition):微型版,定位在消费性电子产品的应用上
      JavaME 是 JavaSE 的内伸,包含 J2SE 的一部分核心类,也有自己的扩展类,增加了适合微小装置的类库:javax.microedition.io.*等。该版本针对资源有限的电子消费产品的需求精简核心类库,并提供了模块化的架构让不同类型产品能够随时增加支持的能力。
      在这里插入图片描述

  3. 核心优势
      Java 为消费类智能电子产品而设计,但智能家电产品并没有像最初想象的那样拥有大的发展。然而 90 年代,Internet 却进入了爆发式发展阶段,一夜之间,大家都在忙着将自己的计算机连接到网络上。这个时侯,遇到了一个大的问题。人们发现连接到 Internet 的计算机各式各样,有 IBM PC、苹果机、各种服务器等等,不仅硬件 CPU 不同,操作系统也不同,整个的网络环境非常复杂。这个时候,程序员们希望他们编写的程序能够运行在不 同的机器,不同的环境中,这需要一种体系中立的语言(即跨平台)。Java 的研发小组忽然发现他们用于小范围的语言也可以适应 Internet 这个大环境。
      跨平台是Java 语言的核心优势,赶上最初互联网的发展,并随着互联网的发展而发展, 建立了强大的生态体系,目前已经覆盖 IT 各行业的“第一大语言”,是计算机界的“英语”。
      虽然,目前也有很多跨平台的语言,但是已经失去先机,无法和 Java 强大的生态体系抗衡。Java 仍将在未来几十年成为编程语言的主流语言。

  4. Java的特性和优势
      跨平台/可移植性
      这是 Java 的核心优势。Java 在设计时就很注重移植和跨平台性。比如:Java 的 int 永远都是 32 位。不像 C++可能是 16,32,可能是根据编译器厂商规定的变化。这样的话程序的移植就会非常麻烦。
      安全性
      Java 适合于网络/分布式环境,为了达到这个目标,在安全性方面投入了很大的精力, 使 Java 可以很容易构建防病毒,防篡改的系统。
      面向对象
      面向对象是一种程序设计技术,非常适合大型软件的设计和开发。由于 C++为了照顾大量 C 语言使用者而兼容了 C,使得自身仅仅成为了带类的 C 语言,多少影响了其面向对象的彻底性!Java 则是完全的面向对象语言。
      简单性
      Java 就是 C++语法的简化版,我们也可以将 Java 称之为“C+±”。跟我念“C 加加减”,指的就是将 C++的一些内容去掉;比如:头文件,指针运算,结构,联合,操作符重载,虚基类等等。同时,由于语法基于 C 语言,因此学习起来完全不费力。
      高性能
      Java 最初发展阶段,总是被人诟病“性能低”;客观上,高级语言运行效率总是低于低级语言的,这个无法避免。Java 语言本身发展中通过虚拟机的优化提升了几十倍运行效率。比如,通过 JIT(JUST IN TIME)即时编译技术提高运行效率。 将一些“热点”字节码编译成本地机器码,并将结果缓存起来,在需要的时候重新调用。这样的话,使 Java 程序的执行效率大大提高,某些代码甚至接待 C++的效率。
      因此,Java 低性能的短腿,已经被完全解决了。业界发展上,我们也看到很多 C++应用转到 Java 开发,很多 C++程序员转型为 Java 程序员。
      分布式
      Java 是为 Internet 的分布式环境设计的,因为它能够处理 TCP/IP 协议。事实上,通过 URL 访问一个网络资源和访问本地文件是一样简单的。Java 还支持远程方法调用(RMI,Remote Method Invocation),使程序能够通过网络调用方法。
      多线程
      多线程的使用可以带来更好的交互响应和实时行为。 Java 多线程的简单性是 Java 成为主流服务器端开发语言的主要原因之一。
      健壮性
      Java 是一种健壮的语言,吸收了 C/C++ 语言的优点,但去掉了其影响程序健壮性的部分(如:指针、内存的申请与释放等)。Java 程序不可能造成计算机崩溃。即使 Java 程序也可能有错误。如果出现某种出乎意料之事,程序也不会崩溃,而是把该异常抛出,再通过异常处理机制加以处理。

Java运行机制_JDK&JRE&JVM区别

  1. 运行机制
      计算机高级语言的类型主要有编译型和解释型两种,而 Java 语言是两种类型的结合
      Java 首先利用编辑器编写 Java 源程序,源文件的后缀名为.java;再利用编译器(javac)将源程序编译成字节码文件,字节码文件的后缀名为.class; 最后利用虚拟机(解释器,java)解释执行
      在这里插入图片描述
  2. JVM,JRE和JDK
      JVM(Java Virtual Machine)就是一个虚拟的用于执行 bytecode 字节码的”虚拟计算机”。他也定义了指令集、寄存器集、结构栈、垃圾收集堆、内存区域。JVM 负责将 Java 字节码解释运行,边解释边运行,这样,速度就会受到一定的影响。
      不同的操作系统有不同的虚拟机。Java 虚拟机机制屏蔽了底层运行平台的差别,实现了“一次编译,随处运行”。 Java 虚拟机是实现跨平台的核心机制。
      在这里插入图片描述
      Java Runtime Environment (JRE)包含:Java 虚拟机、库函数、运行 Java 应用程序所必须的文件。
      Java Development Kit (JDK)包含:包含 JRE,以及增加编译器和调试器等用于程序开发的文件。
      JDK、JRE 和 JVM的关系图
      在这里插入图片描述
      如果只是要运行 Java 程序,只需要 JRE 就可以。JRE 通常非常小,其中包含了 JVM。
      如果要开发 Java 程序,就需要安装 JDK。

猜你喜欢

转载自blog.csdn.net/qq_41649001/article/details/106608816