Java简介与JDK安装

我们为什么需要Java?

目前计算机语言可以分为三代:机器语言、汇编语言、高级语言。
机器语言,是由"0"和"1"组成的二进制数,机器可以认识,但人应该看不懂。(用的应该,说不定有神人可以轻松看懂)

//机器语言代码示例:
+1300254878
+1400564872
+1200323233

汇编语言,相较于机器语言,使用了助记符(Mnemonics)代替机器指令的操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址,方便人们去读、写代码。

//汇编语言代码示例:
LOAD    A
ADD     B
STORE   C

高级语言,相对于机器语言,是一种指令集的体系,更接近自然语言和数学公式的编程,基本脱离了机器的硬件系统,用人们更易理解的方式编写程序。高级语言并不是特指的某一种具体的语言,而是包括很多编程语言,如的java,c,c++,C#,pascal,python,易语言等。

//高级语言代码示例:
C = A + B;

以上三个示例代码实现的内容是一样的,从人类可读可写性方面,可以很显然得感觉到我们非常需要高级语言,而Java就是高级语言中的佼佼者。至于Java相较于其他高级语言有什么优势,我们什么情况下选Java,看了下面的介绍,就会知道了。

Java发展简史

JAVA LOGO
在百度百科等网站中详细讲了Java的发展历史,但毕竟长,我只在这里简要概括一下时间线~

1991年,为了提高电视机顶盒、面包烤箱、移动电话等设备的智能程度,而这些设备嵌入式处理器芯片的种类繁杂,要求开发语言有着很高的跨平台性,Sun公司成立了一个称为Green的项目小组,帕特里克、詹姆斯·高斯林、麦克·舍林丹和其他几个工程师一起组成的工作小组专攻这个技术项目,并产出了一个名为Green(绿色)的操作系统,以及一款名为Oak(橡树)的面向对象的高级语言。

1995年,对Oak语言申请注册商标时,发现Oak已经被人使用了,再想了一系列名字之后,最终,使用了提议者在喝一杯Java咖啡(指印尼爪哇岛咖啡)时无意提到的Java词语,所以,Java的图标也就是一杯冒着热气的咖啡。和现在程序员需要熬夜喝咖啡加班极度吻合,哈哈,这也许就是冥冥中自有天意的感觉吧。

1995年,改名后解决商标的问题了,自然是要推出第一个测试版。

1996年,JDK1.0发布。

1997年,JDK1.1发布。

1998年,JDK1.2发布,并很大程度上改进了早期版本的缺陷,具有划时代的意义,所以开始叫Java2,自从开始Java1.几也可以直接叫为Java几。比起现在手机厂商的数字直接跳到20,30的,已经很收敛了。

1999年,发布Java的三个版本:J2SE、J2EE、J2ME。

2004年,J2SE 5.0 (1.5.0)发布。

2006年,J2SE 6.0 发布,并将Java三大版本更名,J2EE更名为Java EE,J2SE更名为Java SE,J2ME更名为Java ME。

2009年,Sun公司被Oracle公司收购。

2011年,Oracle公司发布Java SE 7.0。

2014年,Oracle公司发表Java SE 8.0。

2017年,Oracle公司发表Java SE 9.0发布。

在Java 9之后,Oracle 宣布,将 Java 的发布频率改为每六个月一次。新的发布周期严格遵循时间点,将在每年的3月份和9月份发布,新的发布周期是为了避免出现像Java 8 和Java 9 那样的延期情况,新的发布计划不会为了等待某个主要特性完成而延期。如果一个特性还没有完成,它就不会被合并到发布用的代码仓库里。如果错过了一个版本,就要等待下一次发布。所以,之后的版本很快,截止目前,我在Oracle官网看见版本已经更新到Java SE 13了。

但由于兼容性及安全性问题,据我观察目前企业多数用Java SE 1.6及Java SE 1.8版本。

Java语言特性

Java的语言特性,也就是优点,各种归纳有很多,推荐别人用嘛可不得使劲夸。
但我由衷觉得最出色的两点是:1.面向对象 2.跨平台可移植
1.面向对象
这一点现在应该算不上特别突出了,因为现在的语言基本都是支持面向对象的,连oracle数据库都支持面向对象编程了。但在据悉在以前还是挺有竞争力的,我学完面向过程的C语言,想学面向对象的语言时,首先想到的就是Java。面向对象,是Java的一大标签。
2.跨平台可移植
我最喜欢的就是这一点,关于这点的叫法有很多,跨平台性、可移植性、平台相关性等等词汇,都是说的一个事。(多说一句,我个人挺讨厌这些专业术语的,各说一套,怎么让别人听不懂怎么来,故作高深似的,希望看见这句话的人就不要再自创高深词汇了)
很多设备和系统都是有自己的规范,这个很符合市场情况,不然就是垄断了嘛,百家争鸣是有利于市场健康发展的。但是这就难为程序员了,同一个程序为了适配不同的设备的和系统,就得写多套,而Java的跨平台很好解决了这个事情。至于是怎么解决的,我在下面的JVM介绍中讲一下我的认知。

以下内容,摘抄自菜鸟教程

Java语言是简单的

Java语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和使用。另一方面,Java丢弃了C++中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java语言不使用指针,而是引用。并提供了自动的废料收集,使得程序员不必为内存管理而担忧。

Java语言是面向对象的

Java语言提供类、接口和继承等面向对象的特性,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。Java语言全面支持动态绑定,而C++语言只对虚函数使用动态绑定。总之,Java语言是一个纯的面向对象程序设计语言。

Java语言是分布式的

Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。

Java语言是健壮的

Java的强类型机制、异常处理、垃圾的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。Java的安全检查机制使得Java更具健壮性。

Java语言是安全的

Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。除了Java语言具有的许多安全特性以外,Java对通过网络下载的类具有一个安全防范机制(类ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制(类SecurityManager)让Java应用设置安全哨兵。

Java语言是体系结构中立的

Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件),然后可以在实现这个Java平台的任何系统中运行。这种途径适合于异构的网络环境和软件的分发。

Java语言是可移植的

这种可移植性来源于体系结构中立性,另外,Java还严格规定了各个基本数据类型的长度。Java系统本身也具有很强的可移植性,Java编译器是用Java实现的,Java的运行环境是用ANSI C实现的。

Java语言是解释型的

如前所述,Java程序在Java平台上被编译为字节码格式,然后可以在实现这个Java平台的任何系统中运行。在运行时,Java平台中的Java解释器对这些字节码进行解释执行,执行过程中需要的类在联接阶段被载入到运行环境中。

Java是高性能的

与那些解释型的高级脚本语言相比,Java的确是高性能的。事实上,Java的运行速度随着JIT(Just-In-Time)编译器技术的发展越来越接近于C++。

Java语言是多线程的

在Java语言中,线程是一种特殊的对象,它必须由Thread类或其子(孙)类来创建。通常有两种方法来创建线程:其一,使用型构为Thread(Runnable)的构造子类将一个实现了Runnable接口的对象包装成一个线程,其二,从Thread类派生出子类并重写run方法,使用该子类创建的对象即为线程。值得注意的是Thread类已经实现了Runnable接口,因此,任何一个线程均有它的run方法,而run方法中包含了线程所要运行的代码。线程的活动由一组方法来控制。Java语言支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为synchronized)。

Java语言是动态的

Java语言的设计目标之一是适应于动态变化的环境。Java程序需要的类能够动态地被载入到运行环境,也可以通过网络来载入所需要的类。这也有利于软件的升级。另外,Java中的类有一个运行时刻的表示,能进行运行时刻的类型检查。

Java三大版本

Java SE(J2SE,Java 2 Platform Standard Edition,标准版)

  • Java SE 以前称为 J2SE。用于开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的 Java 应用程序,比如用于做运行在Windows操作系统上的软件,但一般在Windows上用微软的c#做,在Mac OS上用Objective-C 做,所以Java SE的使用有限。但Java SE 包含了支持 Java Web 服务开发的类,并为Java EE和Java ME提供基础。

Java EE(J2EE,Java 2 Platform Enterprise Edition,企业版)

  • Java EE 以前称为 J2EE。也就是用于做企业级WEB应用的版本。
  • 企业版本帮助开发和部署可移植、健壮、可伸缩且安全的服务器端Java 应用程序。Java EE 是在 Java SE 的基础上构建的,它提供 Web 服务、组件模型、管理和通信 API,可以用来实现企业级的面向服务体系结构(service-oriented architecture,SOA)和 Web2.0应用程序。
  • 2018年 Oracle 决定把 JavaEE 移交给开源组织 Eclipse 基金会,但是不希望 JavaEE 继续使用 Java 这个名字,后来Eclipse 宣布正式将 JavaEE 更名为 JakartaEE。(企业大佬间的爱恨情仇其实也挺有意思的,而且也关系着一项技术的后续发展,有空可以当八卦看看)

Java ME(J2ME,Java 2 Platform Micro Edition,微型版)

  • Java ME 以前称为 J2ME。Java ME 为在移动设备和嵌入式设备(比如手机、PDA、电视机顶盒和打印机)上运行的应用程序提供一个健壮且灵活的环境。Java ME 包括灵活的用户界面、健壮的安全模型、许多内置的网络协议以及对可以动态下载的连网和离线应用程序的丰富支持。基于 Java ME 规范的应用程序只需编写一次,就可以用于许多设备,而且可以利用每个设备的本机功能。
  • 如果你用过以前的诺基亚,打开软件时会有Java的咖啡杯logo,因为塞班系统内含了Java虚拟机,所以可以运行。目前市场上分为IOS和Android两阵营,虽然Android的开发是基于Java,但Android并不是Java ME。Java ME的市场也是越来越少了。

JVM、JDK与JRE

JVM(Java Virtual Machine)

  • JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,被称为Java虚拟机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。
    Java跨平台图示

JVM就是Java跨平台性的关键。 Java程序编译后的字节码,就可以在JVM上运行,而同一份代码,是如何在不同系统上成功跑起来的呢?这就要归功于JVM的设计,JVM就是一个应用软件,针对不同的平台编写不同版本的JVM程序,Java程序在安装了JVM的系统上运行时,只需要遵守JVM内的统一规范,而不用再考虑不同系统的差异,这样就实现了一份代码各处运行的目的,减少了程序员多次编写的麻烦。

我们可以举个微信小程序作为例子来类比理解。 Andorid和IOS设备上的微信源代码是不一样的,但是编写微信时对小程序的规范是统一的,所以一份小程序代码,只要你手机上有微信,就都可以运行。相比要写一份Andorid再写一份IOS程序方便了很多。

JRE(Java Runtime Environment)

  • JRE是java运行时环境,包含了java虚拟机(JVM),java基础类库。是使用java语言编写的程序运行所需要的软件环境,是提供给想运行java程序的用户使用的。

JDK(Java Development Kit)

  • JDK是java开发工具包,是程序员使用java语言编写java程序所需的开发工具包,是提供给程序员使用的。JDK包含了JRE,同时还包含了编译java源码的编译器javac,还包含了很多java程序调试和分析的工具:jconsole,jvisualvm等工具软件,还包含了java程序编写所需的文档和demo例子程序。
  • 我们可以在JDK安装目录中,找到JRE,从文件上可以明显看出JDK与JRE的包含关系。
  • 也就是说,如果你需要运行java程序,只需安装JRE就可以了。如果你需要编写java程序,需要安装JDK。

WIN10下JDK的安装

JDK的安装

下载JDK下载

  下载链接: 点此跳转至Oracle
在这里插入图片描述
  选择与自己系统位数对应的JDK下载即可。

Java SE 12的安装

  我这里只有当时12刚出时,安装尝鲜的截图,所以以12为例,
  JDK安装一直点击下一步即可。这里的路径是可以更改的,但一般不做更改。
  多个JDK版本放在同一个父级目录下,方便查找与切换。
JDK安装
  Java SE 12安装完JDK直接结束了,以往版本此时应该会提示继续安装JRE,而JDK其实已包含了JRE,所以我们可以跳过JRE的安装。

环境变量

为什么要配环境变量

  path(环境变量)是dos以前的内部命令,windows继续沿用至今。用作运行某个命令的时候,本地查找不到某个命令或文件,会到这个声明的目录中去查找。
  java的编译程序是在jdk的bin目录下的javac.exe。为了window运行java编译命令的时候,能查找到该程序,所以我们需要将java的bin目录声明到path中。

环境变量的配置

右键“此电脑”–>属性–>高级系统设置–>高级–>环境变量
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在windows中,系统的环境变量大于用户的环境变量,所以一般我选择在系统变量中,来配置。
新建JAVA_HOME
在这里插入图片描述
然后在变量Path中,新增%JAVA_HOME%\bin
在这里插入图片描述
 然后一步步点击“确认”直至退出即可。
 此时使用win+R键,输入cmd并确认,调出cmd命令窗口,执行java -verison,即可看到java版本,如图即为配置成功。
在这里插入图片描述
到这,有没有想我们为什么不直接在Path中配置到bin,而要新建一个Java_HOME呢?
其实直接配置完整路径至bin,部分情况下是不影响的。但开发过程中有一些软件,如Tomcat,运行时会找你电脑的JAVA_HOME路径,所以得新增。并且JAVA_HOME路径也方便了我们进行Java版本的切换。

发布了18 篇原创文章 · 获赞 0 · 访问量 421

猜你喜欢

转载自blog.csdn.net/HhmFighting/article/details/104720754